mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 10:21:36 +03:00
e277c6bad3
no issue - The helper allows generating HTML needed to cancel or continue the member's subscription depending on subscription state. - Added public members endpoint to allow updating subscription's `cancel_at_period_end` attribute available at: `PUT /api/canary/members/subscriptions/:id/` - Added client-side hook to allow calling subscription cancellation. Allows to create elements with `data-members-cancel-subscription` / `data-members-continue-subscription` attributes which would call subscription update. - Updated schema and added migration for `current_period_end` column - As discussed we only add a single column to subscriptions table to avoid preoptimizing for future cases - Added {{cancel_link}} helper - Added error handling for {{cancel_link}} when members are disabled - Added test coverage for {{cancel_link}} helper - Bumped @tryghost/members-api version to 0.10.2. Needed to use `updateSubscription` middleware - Bumped gscan to 3.2.0. Needed to recognize new {{cancel_link}} helper
33 lines
1.4 KiB
JavaScript
33 lines
1.4 KiB
JavaScript
// # {{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"
|
|
|
|
const proxy = require('./proxy');
|
|
|
|
const templates = proxy.templates;
|
|
const errors = proxy.errors;
|
|
const i18n = proxy.i18n;
|
|
|
|
module.exports = function excerpt(options) {
|
|
let truncateOptions = (options || {}).hash || {};
|
|
|
|
if (this.id === undefined || this.cancel_at_period_end === undefined) {
|
|
throw new errors.IncorrectUsageError({message: i18n.t('warnings.helpers.cancel_link.invalidData')});
|
|
}
|
|
|
|
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);
|
|
};
|