MediaWiki:CentralNotice/Resources/BannerShowHideCount.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
<script>
/* MediaWiki:CentralNotice/Resources/BannerShowHideCount.js
* Determine if a banner should be hidden or displayed based on the
* contents of the cookie named `hide-cookie-name` and that + `-wait`.
*
* Provides CentralNotice alterImpressionData hook
* Banner may be forced if URL parameter force = 1
* Counters may be reset if URL parameter reset = 1
*/
(function(mw) {
var cookieCount = parseInt($.cookie('{{{hide-cookie-name}}}')) || 0,
seenLimit = parseInt('{{{hide-cookie-max-count}}}') || 0,
waitCount = parseInt($.cookie('{{{hide-cookie-name}}}-wait')) || 0,
waitLimit = parseInt('{{{hide-cookie-wait-count}}}') || 0,
hideBanner = true;
if (window.location.search.match(/\breset=1/)) {
// Reset counters on demand
cookieCount = 0;
waitCount = 0;
}
if (
navigator.cookieEnabled &&
(window.location.search.match(/\bforce=1/) || ((waitCount >= waitLimit) && (cookieCount < seenLimit)))
) {
hideBanner = false;
cookieCount += 1;
} else {
waitCount += 1;
}
// Finish up and store results
$.cookie('{{{hide-cookie-name}}}', cookieCount, { expires: 365, path: '/' });
$.cookie('{{{hide-cookie-name}}}-wait', waitCount, { expires: 365, path: '/' });
mw.centralNotice.bannerData.hideResult = hideBanner;
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>