function insertBanner( bannerJson ) { var url, targets; jQuery( 'div#centralNotice' ).prepend( bannerJson.bannerHtml ); if ( bannerJson.autolink ) { url = 'https://wikimediafoundation.org/wiki/Special:LandingCheck'; if ( ( bannerJson.landingPages !== null ) && bannerJson.landingPages.length ) { targets = String( bannerJson.landingPages ).split(','); url += "?" + jQuery.param( { landing_page: targets[Math.floor( Math.random() * targets.length )].replace( /^\s+|\s+$/, '' ) } ); url += "&" + jQuery.param( { utm_medium: 'sitenotice', utm_campaign: bannerJson.campaign, utm_source: bannerJson.bannerName, language: mw.config.get( 'wgUserLanguage' ), country: Geo.country } ); if ( bannerJson.fundraising == 1 ) { url += "&" + jQuery.param( { utm_key: genUTMKey() } ); } jQuery( '#cn-landingpage-link' ).attr( 'href', url ); } } } function setBannerHidingCookie( bannerType ) { var e = new Date(); e.setTime( e.getTime() + (14*24*60*60*1000) ); // two weeks var work = 'centralnotice_' + bannerType + '=hide; expires=' + e.toGMTString() + '; path=/'; document.cookie = work; } function hideBanner() { jQuery( '#centralNotice' ).hide(); // Hide current banner var bannerType = jQuery.centralNotice.data.bannerType; if ( bannerType === undefined ) { bannerType = 'default'; } setBannerHidingCookie( bannerType ); // Hide future banners of the same type } function genUTMKey() { var keyspace = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; var keylen = 8; var key = ""; for( var i = 0; i '; if ( document.cookie.indexOf( 'centralnotice_' + bannerType + '=hide' ) === -1 ) { jQuery( '#siteNotice' ).prepend( '
' ); } }, loadBannerList: function( geoOverride ) { var geoLocation, bannerListQuery, bannerListURL; if ( geoOverride ) { geo // override the geo info } else { geoLocation = Geo.country; // pull the geo info } bannerListQuery = $.param( { language: mw.config.get( 'wgContentLanguage' ), project: mw.config.get( 'wgNoticeProject' ), country: geoLocation } ); bannerListURL = mw.util.wikiScript() + '?title=' + encodeURIComponent('Special:BannerListLoader') + '&cache=/cn.js&' + bannerListQuery; // Prevent loading banners on Special pages if ( mw.config.get( 'wgNamespaceNumber' ) !== -1 ) { $.ajax( { url: bannerListURL, dataType: 'json', success: $.centralNotice.fn.chooseBanner } ); } }, chooseBanner: function( bannerList ) { mw.loader.using( 'mediawiki.user', function() { var groomedBannerList = [], i, j, pointer; // Make sure there are some banners to choose from if ( bannerList.length === 0 ) { return false; } for( i = 0; i