Donate
donatewiki
https://foundation.wikimedia.org/wiki/Home
MediaWiki 1.39.0-wmf.22
first-letter
Media
Special
Talk
User
User talk
Donate
Donate talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Campaign
Campaign talk
TimedText
TimedText talk
Module
Module talk
Gadget
Gadget talk
Gadget definition
Gadget definition talk
MediaWiki:MonthlyConvert.js
8
8606
37582
37551
2022-07-29T16:30:56Z
Pcoombe
5
update to use params.currency not params.currency_code
javascript
text/javascript
var mc = {};
// If one-time amount <= left amount, suggest right amount for monthly
// If changing these, please update spreadsheet
// https://docs.google.com/spreadsheets/d/1z36zi8EegPLAvR5FYAgwz8ywKZ50QNB82SpwpTdk-xQ/edit#gid=1258723967
mc.amounts = {
'USD' : [ // also CAD, AUD, NZD
[ 2.74, 0 ],
[ 9, 1.75 ],
[ 12, 2 ],
[ 15, 2.5 ],
[ 18, 3 ],
[ 21, 3.5 ],
[ 24, 4 ],
[ 27, 4.5 ],
[ 30, 5 ],
[ 33, 5.5 ],
[ 36, 6 ],
[ 39, 6.5 ],
[ 42, 7 ],
[ 45, 7.5 ],
[ 48, 8 ],
[ 51, 8.5 ],
[ 54, 9 ],
[ 57, 9.5 ],
[ 60, 10 ],
[ 63, 10.5 ],
[ 66, 11 ],
[ 69, 11.5 ],
[ 72, 12 ],
[ 75, 12.5 ],
[ 102, 17 ],
[ 250, 25 ],
[ 499, 50 ],
[ Infinity, 0 ]
],
'GBP' : [ // also EUR
[ 1.99, 0 ],
[ 9, 1.75 ],
[ 12, 2 ],
[ 15, 2.5 ],
[ 18, 3 ],
[ 21, 3.5 ],
[ 24, 4 ],
[ 27, 4.5 ],
[ 30, 5 ],
[ 33, 5.5 ],
[ 36, 6 ],
[ 39, 6.5 ],
[ 42, 7 ],
[ 45, 7.5 ],
[ 48, 8 ],
[ 51, 8.5 ],
[ 54, 9 ],
[ 57, 9.5 ],
[ 60, 10 ],
[ 63, 10.5 ],
[ 66, 11 ],
[ 69, 11.5 ],
[ 72, 12 ],
[ 75, 12.5 ],
[ 102, 17 ],
[ 250, 25 ],
[ 499, 50 ],
[ Infinity, 0 ]
],
'INR' : [
[ 200, 0 ],
[ 300, 150 ],
[ 500, 175 ],
[ 1000, 250 ],
[ 1500, 350 ],
[ 3000, 500 ],
[ 5000, 750 ],
[ 10000, 1000 ],
[ 25000, 2500 ],
[ Infinity, 0 ]
],
'JPY' : [
[ 299, 0 ],
[ 900, 150 ],
[ 1200, 200 ],
[ 1500, 250 ],
[ 1800, 300 ],
[ 2100, 350 ],
[ 2400, 400 ],
[ 2700, 450 ],
[ 3000, 500 ],
[ 3300, 550 ],
[ 3600, 600 ],
[ 3900, 650 ],
[ 4200, 700 ],
[ 4500, 750 ],
[ 4800, 800 ],
[ 5100, 850 ],
[ 5400, 900 ],
[ 5700, 950 ],
[ 6000, 1000 ],
[ 6300, 1050 ],
[ 6600, 1100 ],
[ 6900, 1150 ],
[ 7200, 1200 ],
[ 7500, 1250 ],
[ 10800, 1800 ],
[ 18000, 3000 ],
[ 50000, 6000 ],
[ Infinity, 0 ]
],
'SEK' : [
[ 25, 0 ],
[ 50, 25 ],
[ 100, 30 ],
[ 200, 50 ],
[ 300, 70 ],
[ 500, 90 ],
[ 1000, 110 ],
[ 2500, 250 ],
[ 5000, 500 ],
[ Infinity, 0 ]
],
'HUF' : [
[ 499, 0 ],
[ 3000, 500 ],
[ 6000, 1000 ],
[ 9000, 1500 ],
[ 12000, 2000 ],
[ 18000, 3000 ],
[ 24000, 4000 ],
[ 30000, 5000 ],
[ 36000, 6000 ],
[ 42000, 7000 ],
[ 48000, 8000 ],
[ 54000, 9000 ],
[ 60000, 10000 ],
[ Infinity, 0 ]
],
'ILS' : [
[ 9, 0 ],
[ 10, 5 ],
[ 60, 10 ],
[ 90, 15 ],
[ 120, 20 ],
[ 180, 30 ],
[ 240, 40 ],
[ 300, 50 ],
[ 360, 60 ],
[ 420, 70 ],
[ 480, 80 ],
[ 540, 90 ],
[ 600, 100 ],
[ Infinity, 0 ]
],
'ZAR' : [
[ 29, 0 ],
[ 30, 20 ],
[ 50, 30 ],
[ 100, 40 ],
[ 300, 50 ],
[ 450, 75 ],
[ 600, 100 ],
[ 900, 150 ],
[ 1200, 200 ],
[ 1500, 250 ],
[ 1800, 300 ],
[ 2400, 400 ],
[ 3000, 500 ],
[ 3600, 600 ],
[ Infinity, 0 ]
],
'MYR' : [ // Also RON, PLN
[ 9, 0 ],
[ 30, 5 ],
[ 50, 10 ],
[ 120, 20 ],
[ 180, 30 ],
[ 240, 40 ],
[ 300, 50 ],
[ 360, 60 ],
[ 420, 70 ],
[ 480, 80 ],
[ 540, 90 ],
[ 600, 100 ],
[ 900, 150 ],
[ Infinity, 0 ]
],
'DKK' : [ // Also NOK
[ 19, 0 ],
[ 20, 10 ],
[ 120, 20 ],
[ 180, 30 ],
[ 300, 50 ],
[ 450, 75 ],
[ 600, 100 ],
[ 750, 125 ],
[ 900, 150 ],
[ 1200, 200 ],
[ 1500, 250 ],
[ 1800, 300 ],
[ 2100, 350 ],
[ Infinity, 0 ]
]
};
mc.amounts.EUR = mc.amounts.GBP;
mc.amounts.CAD = mc.amounts.USD;
mc.amounts.AUD = mc.amounts.USD;
mc.amounts.NZD = mc.amounts.USD;
mc.amounts.RON = mc.amounts.MYR;
mc.amounts.PLN = mc.amounts.MYR;
mc.amounts.NOK = mc.amounts.DKK;
mc.getSuggestedAmount = function ( amount, currency ) {
var i,
amountsForCurrency = mc.amounts[ currency ],
numAmounts;
if ( !amountsForCurrency ) {
return 0;
}
numAmounts = amountsForCurrency.length;
for ( i = 0; i < numAmounts; i++ ) {
if ( amount <= amountsForCurrency[ i ][ 0 ] ) {
return amountsForCurrency[ i ][ 1 ];
}
}
return 0;
};
mc.formatAmount = function ( amount, currency, locale ) {
var formattedAmount;
try {
formattedAmount = amount.toLocaleString( locale, { currency: currency, style: 'currency' } );
} catch ( e ) {
// Assume a two decimal place currency for fallback
formattedAmount = currency + ' ' + amount.toFixed( 2 );
}
return formattedAmount;
};
mc.getOtherAmount = function() {
var otherInput = document.getElementById('mc-other-amount-input'),
otherAmount = null;
if ( otherInput.value !== '' ) {
otherAmount = donationForm.parseOtherAmount( otherInput.value );
}
return otherAmount;
};
/**
* Check if selected amount is valid i.e. a positive number, between minimum and maximum.
* If not, show an error and return false.
*/
mc.validateOtherAmount = function() {
var amount = mc.getOtherAmount();
var minAmount = donationForm.minimums[ donationForm.currency ] || 1;
if ( amount === null || isNaN(amount) || amount <= 0 || amount < minAmount ) {
$('.mc-edit-amount').addClass('mc-haserror');
$('.mc-error-bigamount').hide();
$('.mc-error-smallamount').show();
return false;
} else if ( amount > donationForm.maxUSD * minAmount ) {
$('.mc-edit-amount').addClass('mc-haserror');
$('.mc-error-smallamount').hide();
$('.mc-error-bigamount').show();
return false;
} else {
$('.mc-edit-amount').removeClass('mc-haserror');
$('.mc-error-smallamount, .mc-error-bigamount').hide();
return true;
}
};
mc.main = function( params, callback ) {
var initialAmount = params.amount,
currency = params.currency || 'USD',
suggestedAmount = mc.getSuggestedAmount( initialAmount, currency ),
locale = donationForm.getLocale( params.uselang, params.country ),
skipMc;
if ( params.recurring ) {
// Already recurring
skipMc = true;
}
if ( donationForm.noRecurringCountries.indexOf( params.country ) !== -1 ) {
// Country where we don't offer any recurring
skipMc = true;
}
if ( suggestedAmount === 0 ) {
// Amount too low, or we don't have any suggestions
skipMc = true;
}
if (
( params.payment_method === 'paypal' ) ||
( params.payment_method === 'apple' ) ||
( params.payment_method === 'rtbt' && params.payment_submethod === 'rtbt_ideal' )
) {
// suitable method!
} else {
skipMc = true;
}
if ( skipMc ) {
callback( params );
} else {
$('.mc-currencycode').text( currency );
$('.mc-amt-initial').text( mc.formatAmount( initialAmount, currency, locale) );
$('.mc-amt-suggest').text( mc.formatAmount( suggestedAmount, currency, locale ) );
// Block typing symbols in Other field
donationForm.otherInputControl( document.getElementById( 'mc-other-amount-input' ) );
$('.mc-no-button').on( 'click', function() {
params.amount = initialAmount;
params.recurring = false;
callback( params );
});
$('.mc-yes-button').on( 'click', function() {
donationForm.extraData.donateMC = 1;
donationForm.extraData.originalAmt = initialAmount;
params.amount = suggestedAmount;
params.recurring = true;
callback( params );
});
$('#mc-other-amount-input').on('input change', function() {
if ( mc.validateOtherAmount() ) {
$( '.mc-amt-custom' ).text( mc.formatAmount( mc.getOtherAmount(), currency, locale ) );
} else {
$( '.mc-amt-custom' ).text( '' );
}
});
$( '.mc-donate-monthly-button' ).on( 'click', function() {
if ( mc.validateOtherAmount() ) {
donationForm.extraData.donateMC = 1;
donationForm.extraData.originalAmt = initialAmount;
params.amount = mc.getOtherAmount();
params.recurring = true;
callback( params );
}
});
$('.mc-modal-screen').show();
$('body').addClass('modal-open');
}
};
$(function() {
$( '.mc-diff-amount-link' ).on( 'click keypress', function ( e ) {
if ( e.which === 13 || e.type === 'click' ) {
$( '.mc-choice' ).fadeOut( function () {
$( '.mc-edit-amount' ).fadeIn();
$( '.mc-other-amount-input' ).focus();
} );
}
} );
$( '.mc-choice .mc-back' ).on( 'click keypress', function ( e ) {
if ( e.which === 13 || e.type === 'click' ) {
$( '.mc-edit-amount' ).fadeOut( function () {
$('.mc-modal-screen').hide();
$('body').removeClass('modal-open');
} );
}
} );
$( '.mc-edit-amount .mc-back' ).on( 'click keypress', function ( e ) {
if ( e.which === 13 || e.type === 'click' ) {
$( '.mc-edit-amount' ).fadeOut( function () {
$( '.mc-choice' ).fadeIn();
} );
}
} );
});
naf6oe60djjv9w5a3tnmh68qhqki97h