MediaWiki:Centralnotice-template-ToUAmendmentNotice2014 mobile

From Meta, a Wikimedia project coordination wiki

<script>

 /* MediaWiki:CentralNotice/Resources/BannerShowHideCountDate.js
  * Determine if a banner should be hidden or displayed based on the
  * contents of the cookie named `hide-cookie-name` and that + `-wait`.
  *
  * Showing a banner entails that a certain number of impressions have
  * already occured in a time period.
  * 
  * hide-cookie-show-count - Number of impressions to show per period
  * hide-cookie-wait-count - Number of impressions to wait per period
  * hide-cookie-wait-delay - Number of second in period
  *
  * Provides CentralNotice alterImpressionData hook
  * Banner may be forced if URL parameter force = 1
  * Counters may be reset if URL parameter reset = 1
  *
  * Flow chart: https://commons.wikimedia.org/wiki/File:CentralNotice_-_wait_cookie_code_flow.png
  */
 (function(mw) {
   var
     /** Total number of impressions seen by this user */
     cookieCount = parseInt($.cookie('centralnotice_only2times_tou')) || 0,
     waitData = ($.cookie('centralnotice_only2times_tou-wait') || ).split(/[|]/),
     /** This cycle's count of how many impressions we've waited for */
     waitCount = parseInt(waitData[0]) || 0,
     /** Timestamp (ms) until we can show another banner */
     waitUntil = parseInt(waitData[1]) || 0,
     /** Number of impressions seen this cycle */
     waitSeenCount = parseInt(waitData[2]) || 0,
     showLimit = parseInt('2') || 0,
     waitLimit = parseInt('0') || 0,
     waitDelay = parseInt('2592000') || 0,
     hideBanner = true,
     hideReason = null;
   if (location.search.match(/\breset=1/)) {
     // Reset counters on demand
     cookieCount = 0;
     waitCount = 0;
     waitUntil = 0;
     waitSeenCount = 0;
   }
   var
     pastDate = waitUntil < new Date().getTime(),
     waitForHideImps = waitCount < waitLimit,
     waitForShowImps = waitSeenCount < showLimit;

   if (location.search.match(/\bforce=1/)) {
     hideBanner = false;
   } else if (!pastDate) {
     hideReason = 'waitdate';
     waitCount += 1;
   } else if (pastDate && waitForHideImps) {
     hideReason = 'waitimps';
     waitCount += 1;
   } else if (pastDate && !waitForHideImps && waitForShowImps) {
     hideBanner = false;
     waitSeenCount += 1;
     cookieCount += 1;
     
     if (waitSeenCount >= showLimit) {
       waitCount = 0;
       waitSeenCount = 0;
       waitUntil = new Date().getTime() + (waitDelay * 1000);
     }
   } else {
     hideReason = 'waiterr';
     waitCount = 0;
     waitSeenCount = 0;
     waitUntil = new Date().getTime() + (waitDelay * 1000);
   }
   waitData = waitCount + '|' + waitUntil + '|' + waitSeenCount;

   // Finish up and store results
   $.cookie('centralnotice_only2times_tou', cookieCount, { expires: 365, path: '/' });
   $.cookie('centralnotice_only2times_tou-wait', waitData, { expires: 365, path: '/' });
   mw.centralNotice.bannerData.hideResult = hideBanner;
   mw.centralNotice.bannerData.hideReason = hideReason;
   mw.centralNotice.bannerData.cookieCount = cookieCount;
 })(mediaWiki);

 mediaWiki.centralNotice.bannerData.alterImpressionData = function( impressionData ) {
   // Returning true from this function indicates the banner was shown
   if (mediaWiki.centralNotice.bannerData.hideReason) {
     impressionData.reason = mediaWiki.centralNotice.bannerData.hideReason;
   }
   if (mediaWiki.centralNotice.bannerData.cookieCount) {
     impressionData.banner_count = mediaWiki.centralNotice.bannerData.cookieCount;
   }
   return !mediaWiki.centralNotice.bannerData.hideResult;
 };

</script>

<style type="text/css">

  1. centralNotice.collapsed #{{{banner}}} {
display: none;

}

  1. {{{banner}}} {
position: relative;
overflow: hidden;
background: url(//upload.wikimedia.org/wikipedia/commons/0/0d/Gray-gradient1.png) bottom repeat-x;
background-color:#FFFFFF;
border: solid 1px #aaaaaa; 
height:66px;

}

  1. {{{banner}}} a.cn-full-banner-click {
display:block;
height:100%;
width:100%;
cursor: pointer;

}


  1. {{{banner}}}-logo {
position: absolute;
top: 8px;
left: 15px;
background-image: url(//upload.wikimedia.org/wikipedia/commons/thumb/1/12/Wikimedia_logo_text_RGB.svg/50px-Wikimedia_logo_text_RGB.svg.png);
height: 50px;
width: 50px;
background-repeat: no-repeat;

}

  1. {{{banner}}} #black-text {
font-size: 0.8em;
color: black;
padding: 1em 25px 0.4em 25px;
line-height: 1.3em;
text-align: center;
font-weight:bold;

}


  1. {{{banner}}} div#cn-toggle-box {
position: absolute;
z-index: 98;
top: 2px;
right: 6px;

}

  1. {{{banner}}} div#cn-translation-link {
position:absolute;
z-index:50;
bottom: 2px;
right: 6px;
font-size: 0.7em;

}

  1. {{{banner}}} #calltoaction {
padding-top: 5px;
color: #0645ad;

}

  1. cn-translation-link a:link,
  2. cn-translation-link a:visited,
  3. cn-translation-link a:hover {
color: black; 

}

  1. cn-toggle-box a {

display:block; padding-left:25px; padding-bottom:25px; }

</style>

<script> $(document).ready(function() {

 if (!mw.centralNotice.bannerData.hideResult) {
   $('#{{{banner}}}').show();
 }

}); </script>