MediaWiki:Resources/2015/landingpage.js: Difference between revisions

From Donate
Jump to navigation Jump to search
Content deleted Content added
No edit summary
moved scripts to Common.js
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* MediaWiki:Resources/2015/landingpage.js scripts moved to MediaWiki:Common.js */
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, [ 20, 35, 50, 100, 150, 200, 250 ] ],
[ 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, [ 50, 100, 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
[ 1, [ 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
[ 1, [ 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, [ 300, 500, 1000, 2000, 3000, 5000, 10000 ] ],
[ 3, [ 500, 1000, 1500, 2000, 3000, 5000, 10000 ] ],
[ 5, [ 1000, 1500, 2000, 3000, 5000, 10000, 15000 ] ]
],
'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();

});

Latest revision as of 21:10, 12 August 2015

/* MediaWiki:Resources/2015/landingpage.js scripts moved to MediaWiki:Common.js */