mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-27 10:32:58 +02:00
152 lines
4.4 KiB
Plaintext
152 lines
4.4 KiB
Plaintext
<div id="plans-section" class="env-{{env}}">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-12 title-box">
|
|
<h1 translate class="text-center">
|
|
Joplin Cloud <span class="frame-bg frame-bg-yellow">plans</span>
|
|
</h1>
|
|
<p translate class="text-center sub-title">
|
|
<a href="https://joplincloud.com">Joplin Cloud</a> allows you to synchronise your notes across devices. It also lets you publish notes, and collaborate on notebooks with your friends, family or colleagues.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<noscript>
|
|
<div class="alert alert-danger alert-env-dev" role="alert" style='text-align: center; margin-top: 10px;'>
|
|
To use this page please enable JavaScript!
|
|
</div>
|
|
</noscript>
|
|
|
|
<div style="display: flex; justify-content: center; margin-top: 1.2em">
|
|
<div class="form-check form-check-inline">
|
|
<input id="pay-monthly-radio" class="form-check-input" type="radio" name="pay-radio" checked value="monthly">
|
|
<label translate style="font-weight: bold" class="form-check-label" for="pay-monthly-radio">
|
|
Pay Monthly
|
|
</label>
|
|
</div>
|
|
|
|
<div class="form-check form-check-inline">
|
|
<input id="pay-yearly-radio" class="form-check-input" type="radio" name="pay-radio" value="yearly">
|
|
<label translate style="font-weight: bold" class="form-check-label" for="pay-yearly-radio">
|
|
Pay Yearly
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row plan-group plan-prices-monthly">
|
|
{{#plans.basic}}
|
|
{{> plan}}
|
|
{{/plans.basic}}
|
|
|
|
{{#plans.pro}}
|
|
{{> plan}}
|
|
{{/plans.pro}}
|
|
|
|
{{#plans.teams}}
|
|
{{> plan}}
|
|
{{/plans.teams}}
|
|
|
|
<p translate class="joplin-cloud-login-info">Already have a Joplin Cloud account? <a href="https://joplincloud.com">Login now</a></p>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div>
|
|
<h1>Feature comparison</h1>
|
|
<div class="joplin-cloud-feature-list">
|
|
{{{featureListHtml}}}
|
|
</div>
|
|
<p> </p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row faq">
|
|
{{{faqHtml}}}
|
|
</div>
|
|
</div>
|
|
|
|
<script src="https://js.stripe.com/v3/"></script>
|
|
|
|
<script>
|
|
const urlQuery = new URLSearchParams(location.search);
|
|
let subscriptionPeriod = 'monthly';
|
|
const stripe = Stripe('{{{stripeConfig.publishableKey}}}');
|
|
|
|
let checkoutSessionUser = null;
|
|
|
|
// Temporary setup to allow Beta users to start their subscription.
|
|
function setupBetaHandling(query) {
|
|
let accountType = Number(query.get('account_type'));
|
|
if (isNaN(accountType)) accountType = 1;
|
|
|
|
const email = query.get('email');
|
|
if (!email) return;
|
|
|
|
$('.account-type-3').css('display', 'none');
|
|
$('.subscribeButton').text('Buy now');
|
|
|
|
if (accountType === 2) {
|
|
$('.account-type-1').css('display', 'none');
|
|
}
|
|
|
|
checkoutSessionUser = { email, accountType };
|
|
}
|
|
|
|
var createCheckoutSession = function(priceId) {
|
|
const promotionCode = urlQuery.get('promo') || '';
|
|
|
|
console.info('Creating Stripe session for price:', priceId, 'Promotion code:', promotionCode);
|
|
|
|
const source = localStorage.getItem('source');
|
|
|
|
return fetch("{{{stripeConfig.webhookBaseUrl}}}/stripe/createCheckoutSession", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
},
|
|
body: JSON.stringify({
|
|
priceId,
|
|
promotionCode,
|
|
email: checkoutSessionUser ? checkoutSessionUser.email : '',
|
|
source,
|
|
})
|
|
}).then(async function(result) {
|
|
if (!result.ok) {
|
|
console.error('Could not create Stripe checkout session', await result.text());
|
|
alert('The checkout session could not be created. Please contact us on the forum for support.');
|
|
} else {
|
|
return result.json();
|
|
}
|
|
});
|
|
};
|
|
|
|
const applyPeriod = (period) => {
|
|
subscriptionPeriod = period;
|
|
$('.plan-group').removeClass(period === 'monthly' ? 'plan-prices-yearly' : 'plan-prices-monthly');
|
|
$('.plan-group').addClass('plan-prices-' + period);
|
|
$("#pay-" + period + '-radio').prop('checked', true);
|
|
}
|
|
|
|
$(() => {
|
|
$("input[name='pay-radio']").change(function() {
|
|
const period = $("input[type='radio'][name='pay-radio']:checked").val();
|
|
applyPeriod(period);
|
|
});
|
|
|
|
setupBetaHandling(urlQuery);
|
|
if (urlQuery.get('period') === 'monthly') {
|
|
// Nothing - this is the default
|
|
} else {
|
|
applyPeriod('yearly');
|
|
}
|
|
|
|
$('.feature-description').hide();
|
|
|
|
$('.feature-title').click((event) => {
|
|
event.preventDefault();
|
|
const featureId = event.currentTarget.getAttribute('data-id');
|
|
$('.feature-description-' + featureId).toggle(200);
|
|
});
|
|
});
|
|
</script>
|
|
</div>
|