2019-12-12 15:59:15 +03:00
|
|
|
// # {{cancel_link}} Helper
|
|
|
|
// Usage: `{{cancel_link}}`, `{{cancel_link class="custom-cancel-class"}}`, `{{cancel_link cancelLabel="Cancel please!"}}`
|
|
|
|
//
|
|
|
|
// Should be used inside of a subscription context, e.g.: `{{#foreach @member.subscriptions}} {{cancel_link}} {{/foreach}}`
|
|
|
|
// Outputs cancel/renew links to manage subscription renewal after the subscription period ends.
|
|
|
|
//
|
|
|
|
// Defaults to class="cancel-subscription-link" errorClass="cancel-subscription-error" cancelLabel="Cancel subscription" continueLabel="Continue subscription"
|
2021-09-28 17:06:33 +03:00
|
|
|
const {labs} = require('../services/proxy');
|
|
|
|
const {templates} = require('../services/rendering');
|
2019-12-12 15:59:15 +03:00
|
|
|
|
2021-09-26 23:01:13 +03:00
|
|
|
const errors = require('@tryghost/errors');
|
|
|
|
const tpl = require('@tryghost/tpl');
|
2021-09-23 22:46:22 +03:00
|
|
|
|
|
|
|
const messages = {
|
|
|
|
invalidData: 'The {{cancel_link}} helper was used outside of a subscription context. See https://ghost.org/docs/themes/members/#cancel-links.'
|
|
|
|
};
|
2019-12-12 15:59:15 +03:00
|
|
|
|
2020-04-08 21:31:55 +03:00
|
|
|
function cancel_link(options) { // eslint-disable-line camelcase
|
2019-12-12 15:59:15 +03:00
|
|
|
let truncateOptions = (options || {}).hash || {};
|
|
|
|
|
|
|
|
if (this.id === undefined || this.cancel_at_period_end === undefined) {
|
2021-09-23 22:46:22 +03:00
|
|
|
throw new errors.IncorrectUsageError({message: tpl(messages.invalidData)});
|
2019-12-12 15:59:15 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
const data = {
|
|
|
|
id: this.id,
|
|
|
|
cancel_at_period_end: this.cancel_at_period_end,
|
|
|
|
class: truncateOptions.class || 'gh-subscription-cancel',
|
|
|
|
errorClass: truncateOptions.errorClass || 'gh-error gh-error-subscription-cancel',
|
|
|
|
cancelLabel: truncateOptions.cancelLabel || 'Cancel subscription',
|
|
|
|
continueLabel: truncateOptions.continueLabel || 'Continue subscription'
|
|
|
|
};
|
|
|
|
|
|
|
|
return templates.execute('cancel_link', data);
|
2020-04-08 21:31:55 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = function cancelLabsWrapper() {
|
|
|
|
let self = this;
|
|
|
|
let args = arguments;
|
|
|
|
|
|
|
|
return labs.enabledHelper({
|
|
|
|
flagKey: 'members',
|
|
|
|
flagName: 'Members',
|
|
|
|
helperName: 'cancel_link',
|
2021-01-19 23:59:45 +03:00
|
|
|
helpUrl: 'https://ghost.org/docs/themes/members/'
|
2020-04-08 21:31:55 +03:00
|
|
|
}, () => {
|
|
|
|
return cancel_link.apply(self, args);
|
|
|
|
});
|
2019-12-12 15:59:15 +03:00
|
|
|
};
|