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

From Donate
Jump to navigation Jump to search
Content deleted Content added
allow monthly to be set with url param
some cleanup of adjustHPC()
Line 29: Line 29:


function adjustHPC() {
function adjustHPC() {
// Highest previous contribution adjustments (for emails)
/* Adjust amounts based on highest previous contribution (hpc)
or most recent contribution (mrc) parameter. Used for emails. */
var hpc = mw.util.getParamValue( 'hpc' );

if( isNaN( parseFloat( hpc ) ) ){
// go ahead and try mrc as well
// Look for 'hpc' parameter, then 'mrc'. If neither, then bail out.
hpc = getQuerystring( 'mrc' );
var hpc = parseFloat( mw.util.getParamValue('hpc') );
if( isNaN( parseFloat( hpc ) ) ){
if( isNaN(hpc) ) {
hpc = parseFloat( mw.util.getParamValue('mrc') );
if( isNaN(hpc) ) {
return;
return;
}
}
}
}
hpc = parseFloat( hpc );


var hpcSet = mw.util.getParamValue('hpcset');

var currency = $("input[name='currency_code']").val();

/* Radio buttons */
var asks = {
var asks = {
'USD' : {
'USD' : {
Line 75: Line 81:
asks.NZD = asks.USD;
asks.NZD = asks.USD;


/* Amounts in appeal */
var appealasks = {
var appealasks = {
'USD' : {
'USD' : {
Line 135: Line 142:
var symbol = '';
var symbol = '';


var currency = $("input[name='currency_code']").val();
if( currency in symbols ){
if( currency in symbols ){
symbol = symbols[currency];
symbol = symbols[currency];
Line 164: Line 170:
}
}
}
}

if( currency in appealasks ){
if( currency in appealasks ){
if( appealasks[currency].length < 1 ){
if( appealasks[currency].length < 1 ){

Revision as of 16:32, 3 July 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();

    /* Radio buttons */
    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;

    /* Amounts in appeal */
    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 = '';

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

    // Monthly
    if( mw.util.getParamValue('monthly') ) {
        $('#frequency_monthly').click();
    }

    adjustHPC();
    adjustOtherVal();

});