MediaWiki:Resources/2015/landingpage.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
fix jquery... I hope |
|||
Line 257: | Line 257: | ||
$(document).ready(function() { |
|||
// Load list of payment outages from meta, and hide any which are current |
// Load list of payment outages from meta, and hide any which are current |
Revision as of 18:47, 12 August 2015
function getQuerystring( key ) {
key = key.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' );
var regex = new RegExp( '[\\?&]' + key + '=([a-zA-Z0-9\.\_\-]*)' );
var qs = regex.exec( window.location.search );
return qs == null ? '' : qs[1];
}
function checkPaymentOutages() {
/* Check against the scheduled payment method outages
* in global variable "outages" (loaded cross-wiki from meta)
* and hide the relevant button for any which are ongoing.
*/
// var outages = outages || []; // don't die if it hasn't loaded...
var now = new Date();
for (var i = outages.length - 1; i >= 0; i--) {
if ( now > outages[i]['start'] ) {
if ( now < outages[i]['end'] ) {
if ( (typeof outages[i]['country'] === 'undefined') || (outages[i]['country'] == country) ) {
$('.paymentmethod-' + outages[i]['method']).hide();
}
}
}
}
}
function adjustHPC() {
/* Adjust amounts based on highest previous contribution (hpc)
or most recent contribution (mrc) parameter. Used for emails. */
// Look for 'hpc' parameter, then 'mrc'. If neither, then bail out.
var hpc = parseFloat( mw.util.getParamValue('hpc') );
if( isNaN(hpc) ) {
hpc = parseFloat( mw.util.getParamValue('mrc') );
if( isNaN(hpc) ) {
return;
}
}
var hpcSet = mw.util.getParamValue('hpcSet');
var currency = $("input[name='currency_code']").val();
var radioAmountsData = {
'USD' : {
'default' : [ // Control - low bottom ask
[ 0, [ 5, 10, 20, 25, 35, 50, 100 ] ],
[ 10, [ 10, 20, 25, 35, 50, 100, 150 ] ],
[ 20, [ 20, 25, 35, 50, 75, 100, 250 ] ],
[ 35, [ 20, 35, 50, 100, 150, 200, 250 ] ],
[ 50, [ 25, 50, 75, 100, 200, 250, 300 ] ],
[ 75, [ 25, 50, 75, 100, 200, 300, 500 ] ],
[ 100, [ 25, 50, 100, 150, 250, 500, 1000 ] ],
[ 150, [ 50, 100, 150, 200, 350, 500, 1000 ] ],
[ 200, [ 100, 150, 200, 300, 400, 500, 1000 ] ],
[ 500, [ 100, 250, 500, 750, 1000, 1500, 2000 ] ],
[ 1000, [ 500, 1000, 2000, 2500, 3000, 4000, 5000 ] ]
],
'v2' : [ // High ask, more groups on low end
[ 0, [ 5, 10, 20, 25, 35, 50, 100 ] ],
[ 5, [ 10, 15, 20, 35, 50, 100, 150 ] ],
[ 10, [ 15, 20, 25, 35, 50, 100, 150 ] ],
[ 15, [ 20, 25, 35, 50, 75, 100, 250 ] ],
[ 20, [ 25, 35, 50, 75, 100, 150, 250 ] ],
[ 25, [ 30, 40, 50, 75, 100, 150, 250 ] ],
[ 35, [ 25, 50, 75, 100, 200, 250, 300 ] ],
[ 50, [ 25, 50, 75, 100, 200, 250, 300 ] ],
[ 75, [ 25, 50, 75, 100, 200, 300, 500 ] ],
[ 100, [ 25, 50, 100, 150, 250, 500, 1000 ] ],
[ 150, [ 50, 100, 150, 200, 350, 500, 1000 ] ],
[ 200, [ 100, 150, 200, 300, 400, 500, 1000 ] ],
[ 500, [ 100, 250, 500, 750, 1000, 1500, 2000 ] ],
[ 1000, [ 500, 1000, 2000, 2500, 3000, 4000, 5000 ] ]
],
'v3' : [ // Med ask for lowest # in string
[ 0, [ 5, 10, 20, 25, 35, 50, 100 ] ],
[ 10, [ 15, 20, 25, 35, 50, 100, 150 ] ],
[ 20, [ 25, 35, 50, 75, 100, 150, 250 ] ],
[ 35, [ 25, 40, 50, 100, 150, 200, 250 ] ],
[ 50, [ 35, 50, 75, 125, 200, 250, 300 ] ],
[ 75, [ 35, 50, 75, 100, 200, 300, 500 ] ],
[ 100, [ 50, 75, 100, 150, 250, 500, 1000 ] ],
[ 150, [ 100, 150, 200, 250, 350, 500, 1000 ] ],
[ 200, [ 150, 200, 250, 300, 400, 500, 1000 ] ],
[ 500, [ 250, 500, 750, 1000, 1500, 2000, 2500 ] ],
[ 1000, [ 1000, 2000, 2500, 3000, 3500, 4000, 5000 ] ]
]
},
'EUR' : [
[ 0, [ 3, 5, 10, 20, 30, 50, 100] ],
[ 4, [ 5, 10, 15, 20, 30, 50, 100] ],
[ 27, [ 5, 10, 20, 30, 50, 100, 150] ],
[ 136, [ 5, 10, 20, 50, 100, 150, 200] ]
],
'JPY' : [
[ 0, [ 700, 1000, 2000, 3000, 4000, 5000, 10000 ] ],
[ 5, [ 1000, 1500, 2500, 4000, 5000, 10000, 15000 ] ],
[ 10, [ 1500, 2000, 3000, 4000, 5000, 10000, 15000 ] ],
[ 15, [ 2000, 3000, 4000, 5000, 10000, 12500, 25000 ] ],
[ 20, [ 3000, 4000, 5000, 10000, 12500, 15000, 25000 ] ],
[ 25, [ 4000, 5000, 7500, 10000, 12500, 15000, 25000 ] ],
[ 35, [ 5000, 7500, 10000, 12500, 25000, 30000, 35000 ] ],
[ 75, [ 5000, 7500, 10000, 12500, 25000, 35000, 50000 ] ],
[ 100, [ 5000, 7500, 12500, 20000, 30000, 50000, 100000 ] ],
[ 500, [ 10000, 25000, 50000, 100000, 125000, 150000, 250000 ] ]
],
'SEK' : [
[ 0, [ 20, 50, 100, 200, 300, 500, 1000 ] ],
[ 3, [ 30, 50, 100, 200, 300, 500, 1000 ] ],
[ 5, [ 50, 100, 150, 200, 300, 500, 1000 ] ],
[ 23, [ 50, 100, 200, 300, 500, 750, 1000 ] ]
]
};
radioAmountsData.AUD = radioAmountsData.USD;
radioAmountsData.CAD = radioAmountsData.USD;
radioAmountsData.GBP = radioAmountsData.USD; // TODO: change this
radioAmountsData.NZD = radioAmountsData.USD;
var appealAmountsData = {
'USD' : [
[ 0, [ 5, 10, 20 ] ],
[ 10, [ 10, 20, 50 ] ],
[ 20, [ 20, 30, 50 ] ],
[ 35, [ 20, 30, 50 ] ],
[ 50, [ 20, 50, 100 ] ],
[ 75, [ 50, 75, 100 ] ],
[ 100, [ 75, 100, 150 ] ],
[ 150, [ 75, 100, 200 ] ],
[ 200, [ 100, 200, 300 ] ]
],
'EUR' : [
[ 0, [ 3, 5, 10 ] ],
[ 4, [ 5, 10, 20 ] ],
[ 7, [ 10, 20, 50 ] ],
[ 14, [ 15, 20, 50 ] ],
[ 20, [ 20, 50, 100 ] ],
[ 40, [ 30, 50, 100 ] ],
[ 68, [ 50, 100, 150 ] ]
],
'JPY' : [
[ 0, [ 300, 500, 1000 ] ],
[ 3, [ 500, 1000, 1500 ] ],
[ 5, [ 1000, 1500, 2000 ] ],
[ 10, [ 1500, 2000, 5000 ] ],
[ 20, [ 2000, 3000, 5000 ] ],
[ 50, [ 2000, 5000, 10000 ] ],
[ 100, [ 5000, 10000, 15000 ] ]
],
'SEK' : [
[ 0, [ 20, 50, 100 ] ],
[ 3, [ 30, 50, 100 ] ],
[ 5, [ 50, 100, 150 ] ],
[ 15, [ 100, 150, 200 ] ],
[ 23, [ 100, 200, 300 ] ],
[ 38, [ 100, 200, 500 ] ],
[ 75, [ 100, 500, 750 ] ],
[ 112, [ 100, 500, 1000 ] ]
]
};
appealAmountsData.AUD = appealAmountsData.USD;
appealAmountsData.CAD = appealAmountsData.USD;
appealAmountsData.GBP = appealAmountsData.USD;
appealAmountsData.NZD = appealAmountsData.USD;
var formats = {
'USD' : '$\t',
'AUD' : '$\t',
'CAD' : '$\t',
'EUR' : '€\t',
'GBP' : '£\t',
'NZD' : '$\t',
'JPY' : '¥\t',
'SEK' : '\t kr'
};
var format = formats[currency] || '\t';
// Radio button amounts
var radioAmounts = pickAmountArray( radioAmountsData, currency, hpc, hpcSet );
if ( radioAmounts.length ) {
// Change buttons
for (var j = 0; j < radioAmounts.length; j++) {
var $radio = $("#input_amount_" + j);
var $label = $("label[for='input_amount_" + j + "']");
$radio.val( radioAmounts[j] );
$label.text( format.replace('\t', radioAmounts[j]) );
}
}
// Appeal amounts
var appealAmounts = pickAmountArray( appealAmountsData, currency, hpc, hpcSet );
if ( appealAmounts.length ) {
// Build string
var appealAmountString = '';
for( var k = 0; k < appealAmounts.length; k++ ) {
appealAmountString += format.replace('\t', appealAmounts[k]) + ', ';
}
appealAmountString = appealAmountString.trim();
$('.consider-amounts').html(appealAmountString);
}
}
function pickAmountArray( data, currency, hpc, hpcSet ) {
/**
* Choose the amounts for radio buttons / appeal based on hpc
* @param {Object} data
* @param {String} currency
* @param {Number} hpc
* @param {String} hpcSet
* @return {Array} Array of amounts (as numbers)
*/
var set, amounts;
if ( !(currency in data) ) {
return [];
}
if ( $.isArray(data[currency]) ) {
// No variant sets
set = data[currency];
} else {
// We need to go deeper. Check the variants.
if ( hpcSet in data[currency] ) {
set = data[currency][hpcSet];
} else {
set = data[currency]['default'];
}
}
// Find correct amount array for this hpc
for (var i = 0; i < set.length; i++) {
if ( set[i][0] > hpc ) {
break;
}
amounts = set[i][1];
}
return amounts;
}
function adjustOtherVal() {
// prefill other amount box if param provided
var otherVal = mw.util.getParamValue( 'otherVal' );
if( isNaN( parseFloat( otherVal ) ) ) {
return;
}
otherVal = parseFloat( otherVal );
$("#input_amount_other").attr( 'checked', true );
$("#input_amount_other_box").val( otherVal );
}
$(document).ready(function() {
// Load list of payment outages from meta, and hide any which are current
$.getScript('//meta.wikimedia.org/w/index.php?' + $.param( { title:'MediaWiki:FR2013/Resources/PaymentOutages.js', action:'raw', ctype:'text/javascript' } ),
function() {
setTimeout(checkPaymentOutages(), 250); // allow time for script to have _executed_ (not just loaded)
});
// Disable submitting form with return key
$( 'form[name="paypalcontribution"]' ).bind( 'keypress', function(e) {
var code = ( e.keyCode ? e.keyCode : e.which );
if ( code == 13 ) return false;
});
// Disable logo link
$("#p-logo a").attr("href", "#");
$("#p-logo a").attr("title", "");
// Monthly
if( mw.util.getParamValue('monthly') ) {
$('#frequency_monthly').click();
}
adjustHPC();
adjustOtherVal();
});