Move script to jquery insertion on render

This commit is contained in:
Angus McLeod 2017-11-27 10:28:21 +08:00
parent 41ffb0c437
commit bcebbd583b
2 changed files with 46 additions and 20 deletions

View File

@ -0,0 +1,29 @@
import { withPluginApi } from 'discourse/lib/plugin-api';
export default {
name: 'donations-edits',
initialize() {
withPluginApi('0.8.12', api => {
api.decorateCooked($post => {
const $form = $post.find('.stripe-checkout');
if ($form.length) {
const $input = $form.find('input');
const settings = Discourse.SiteSettings;
var s = document.createElement('script');
s.src = 'https://checkout.stripe.com/checkout.js';
s.setAttribute('class', 'stripe-button');
s.setAttribute('data-key', settings.discourse_donations_public_key);
s.setAttribute('data-amount', $input.attr('amount'));
s.setAttribute('data-name', settings.discourse_donations_shop_name);
s.setAttribute('data-description', $form.attr('content'));
s.setAttribute('data-image', $form.attr('image') || '');
s.setAttribute('data-locale', 'auto');
s.setAttribute('data-zip-code', settings.discourse_donations_zip_code);
s.setAttribute('data-billing-address', settings.discourse_donations_billing_address);
s.setAttribute('data-currency', settings.discourse_donations_currency);
$form.append(s);
}
});
});
}
};

View File

@ -16,7 +16,7 @@ function replaceWithStripeOrError(siteSettings) {
if (errors.length) {
displayErrors(state, errors);
} else {
insertCheckout(state, tagInfo, content, siteSettings);
insertCheckout(state, tagInfo, content);
}
return true;
};
@ -30,31 +30,25 @@ function displayErrors(state, errors) {
state.push('div-close', 'div', -1);
}
function insertCheckout(state, tagInfo, content, siteSettings) {
function insertCheckout(state, tagInfo, content) {
let token = state.push('stripe-checkout-form-open', 'form', 1);
token.attrs = [['method', 'POST'], ['action', '/checkout']];
token = state.push('stripe-checkout-form-amount', 'input', 0);
token.attrs = [['type', 'hidden'], ['name', 'amount'], ['value', tagInfo.attrs['amount']]];
token = state.push('stripe-checkout-script-open', 'script', 0);
token.attrs = [
['src', 'https://checkout.stripe.com/checkout.js'],
['class', 'stripe-button'],
['data-key', siteSettings.discourse_donations_public_key],
['data-amount', tagInfo.attrs['amount']],
['data-name', siteSettings.discourse_donations_shop_name],
['data-description', content],
['data-image', tagInfo.attrs['image'] || ''],
['data-locale', 'auto'],
['data-zip-code', siteSettings.discourse_donations_zip_code],
['data-billing-address', siteSettings.discourse_donations_billing_address],
['data-currency', siteSettings.discourse_donations_currency]
['method', 'POST'],
['action', '/checkout'],
['content', content],
['image', tagInfo.attrs['image']],
['class', 'stripe-checkout']
];
state.push('stripe-checkout-script-close', 'script', -1);
token = state.push('stripe-checkout-form-amount', 'input', 0);
token.attrs = [
['type', 'hidden'],
['name', 'amount'],
['value', tagInfo.attrs['amount']]
];
state.push('stripe-checkout-form-close', 'form', -1);
state.push('test', 'div-test', 0);
}
function setupMarkdownIt(helper, siteSettings) {
@ -72,6 +66,9 @@ export function setup(helper) {
'div[class]',
'form[method]',
'form[action]',
'form[class]',
'form[content]',
'form[image]',
'input[type]',
'input[name]',
'input[value]',