MediaWiki:DonationFormSandbox.js: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
use toLocaleString for Pay the Fee amount - phab:T336079
factor out donationForm.formatAmount method
Line 662: Line 662:
if ( cardTypes[country] ) {
if ( cardTypes[country] ) {
$('.paymentmethod-cc').addClass('cctypes-' + cardTypes[country] );
$('.paymentmethod-cc').addClass('cctypes-' + cardTypes[country] );
$('.cc-text-label').addClass('sr-only');
}
}
}
}
Line 753: Line 754:
}
}
if ( params.recurring && params.variant && params.variant.match( /monthlyConvert/ ) ) {
if ( params.recurring && params.variant && params.variant.match( /monthlyConvert/ ) ) {
// Post-payments monthly convert makes no sense if it's already recurring
// Post-payments monthly convert makes no sense if it's already recurring
// Avoid things like T312905
// Avoid things like T312905
delete params.variant;
delete params.variant;
}
}


Line 990: Line 991:
minAmount = donationForm.minimums[ donationForm.currency ] || 1,
minAmount = donationForm.minimums[ donationForm.currency ] || 1,
maxAmount = donationForm.maxUSD * minAmount,
maxAmount = donationForm.maxUSD * minAmount,
feeText, locale, formatterOptions, supportsIntl;
feeText, locale;


locale = donationForm.getLocale( mw.config.get('wgPageContentLanguage'), donationForm.country );
locale = donationForm.getLocale( mw.config.get('wgPageContentLanguage'), donationForm.country );
feeText = donationForm.formatAmount( feeAmount, locale );

if ( feeAmount % 1 !== 0 ) { // Not a whole number
formatterOptions = { minimumFractionDigits: 2 };
} else {
formatterOptions = {};
}

try {
feeText = feeAmount.toLocaleString( locale, formatterOptions );
} catch(e) {
feeText = feeAmount.toFixed(2);
}


$('.ptf label span').text( feeText );
$('.ptf label span').text( feeText );
Line 1,105: Line 1,095:
* @param {string} language
* @param {string} language
* @param {string} country
* @param {string} country
* @return {string} locale identifier
* @return {string} locale identifier e.g. en-GB
*/
*/
donationForm.getLocale = function( language, country ) {
donationForm.getLocale = function( language, country ) {
Line 1,139: Line 1,129:
return false;
return false;
};
};

/**
* Format an amount for a given locale
*
* 2 decimal places if it has a fractional part, 0 if not
* Note this doesn't include any currency symbol
*
* @param {number} amount
* @param {string} locale To determine correct separators
* @return {string}
*/
donationForm.formatAmount = function( amount, locale ) {
var formatterOptions, output;
if ( amount % 1 !== 0 ) { // Not a whole number
formatterOptions = { minimumFractionDigits: 2, maximumFractionDigits: 2 };
} else {
formatterOptions = {};
}
try {
output = amount.toLocaleString( locale, formatterOptions );
} catch(e) {
output = amount.toFixed(2);
}
return output;
}