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

From Donate
Jump to navigation Jump to search
Content deleted Content added
only block Enter on actual form (not editing form)
moved scripts to Common.js
 
(12 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() {
// Highest previous contribution adjustments (for emails)
var hpc = mw.util.getParamValue( 'hpc' );
if( isNaN( parseFloat( hpc ) ) ){
// go ahead and try mrc as well
hpc = getQuerystring( 'mrc' );
if( isNaN( parseFloat( hpc ) ) ){
return;
}
}
hpc = parseFloat( hpc );

var asks = {
'USD' : {
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]
},
'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]
}
};
asks.AUD = asks.USD;
asks.CAD = asks.USD;
asks.GBP = asks.USD;
asks.NZD = asks.USD;

var appealasks = {
'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]
}
};
appealasks.AUD = appealasks.USD;
appealasks.CAD = appealasks.USD;
appealasks.GBP = appealasks.USD;
appealasks.NZD = appealasks.USD;

var symbols = {
'USD' : '$\t',
'AUD' : '$\t',
'CAD' : '$\t',
'EUR' : '€\t',
'GBP' : '£\t',
'NZD' : '$\t',
'JPY' : '¥\t',
'SEK' : '\t kr'
};

var ask = null;
var symbol = '';

var currency = $("input[name='currency_code']").val();
if( currency in symbols ){
symbol = symbols[currency];
}
if( currency in asks ){
if( asks[currency].length < 1 ){
return;
}
for( var prev in asks[currency] ){
// this assumes that JS returns keys in sorted order, most do
if( prev > hpc ){
break;
}
ask = asks[currency][prev];
}
if( ask != null ){
for( var j = 0; j < ask.length; j++ ){
var radio = $("#input_amount_" + j);
var label = $("label[for='input_amount_" + j + "']");
if( radio != null ){
if( label != null ){
// I know an && could be used here, but they are getting escaped
radio.val( ask[j] );
label.text( symbol.replace('\t', ask[j]) );
}
}
}
}
}
if( currency in appealasks ){
if( appealasks[currency].length < 1 ){
return;
}
for( var prev in appealasks[currency] ){
// this assumes that JS returns keys in sorted order, most do
if( prev > hpc ){
break;
}
appealask = appealasks[currency][prev];
}
var considerAmountString = "";
for( var k = 0; k < appealask.length; k++ ) {
considerAmountString += symbol.replace('\t', appealask[k]) + ', ';
}
considerAmountString = considerAmountString.trim();
$('.consider-amounts').html(considerAmountString);
}
}

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", "");

adjustHPC();
adjustOtherVal();

});

Latest revision as of 21:10, 12 August 2015

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