MediaWiki:CentralNotice/Resources/MinEditsMaxViews.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.
/* Determine if banner should be shown based on:
* A) if user has enough edits
* B) if user hasn't seen banners too many times
*
* Parameters (names should be self-explanatory)
* min-edits
* views-cookie-name
* max-views
*
* View counter cookie expires after being untouched for 60 days
* which ought to be long enough for all non-fundraising campaigns
*
* Result is stored in mw.centralNotice.bannerData.hideResult as usual
*/
$(function() {
mw.loader.using(['mediawiki.util']).then(function() {
var editCount = mw.config.get('wgUserEditCount');
var minEdits = parseInt('{{{min-edits}}}');
var viewCount = parseInt($.cookie('{{{views-cookie-name}}}')) || 0;
var maxViews = parseInt('{{{max-views}}}') || 0;
var hideBanner = true;
var hideReason = null;
if ( mw.util.getParamValue('force') ) {
hideBanner = false;
} else if ( editCount < minEdits ) {
hideBanner = true;
hideReason = 'belowMinEdits';
} else if ( viewCount >= maxViews ) {
hideBanner = true;
hideReason = 'viewLimit';
} else {
hideBanner = false;
viewCount += 1;
$.cookie('{{{views-cookie-name}}}', viewCount, { expires: 60, path: '/' });
}
// Store the results
mw.centralNotice.bannerData.hideResult = hideBanner;
mw.centralNotice.bannerData.hideReason = hideReason;
mw.centralNotice.bannerData.viewCount = viewCount;
});
});
mediaWiki.centralNotice.bannerData.alterImpressionData = function( impressionData ) {
// Data for Special:RecordImpression
// 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.viewCount) {
impressionData.banner_count = mediaWiki.centralNotice.bannerData.viewCount;
}
return !mediaWiki.centralNotice.bannerData.hideResult;
};