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 < keylen; i++ ){ key += keyspace.charAt( Math.floor( Math.random() * keyspace.length ) ); } return key; } // This function is deprecated function toggleNotice() { hideBanner(); } var wgNoticeToggleState = document.cookie.indexOf( 'hidesnmessage=1' ) === -1; ( function( $, mw ) { mw.loader.using( 'mediawiki.util', function () { $.ajaxSetup({ cache: true }); $.centralNotice = { data: { getVars: {}, bannerType: 'default' }, fn: { loadBanner: function( bannerName, campaign, bannerType ) { var bannerPageQuery, bannerPage, bannerScript; // Store the bannerType in case we need to set a banner hiding cookie later $.centralNotice.data.bannerType = bannerType; // Get the requested banner bannerPageQuery = $.param( { banner: bannerName, campaign: campaign, userlang: mw.config.get( 'wgUserLanguage' ), db: mw.config.get( 'wgDBname' ), sitename: mw.config.get( 'wgSiteName' ), country: Geo.country } ); bannerPage = '?title=Special:BannerLoader&' + bannerPageQuery; bannerScript = ''; if ( document.cookie.indexOf( 'centralnotice_' + bannerType + '=hide' ) === -1 ) { jQuery( '#siteNotice' ).prepend( '