MediaWiki:Gadget-AdvancedSiteNotices.js

mw.loader.using( ['jquery.cookie', 'mediawiki.util'] ).done( function {

(function ($, mw) {   /** Advanced Site Notices ********     * Allow to custom dynamic site notices     * Maintainer: zh:User:PhiLiP     */    if (typeof(window.customASNInterval) == 'undefined') {        window.customASNInterval = 15;    }    $(function  { $('#mw-dismissable-notice').css('display', 'none'); if (window.closeASNForever || mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') { return; }

var ln = $('#siteNotice'); if (!ln.length) { return; }       var cname = 'dismissASN'; var cval = $.cookie(cname); if (cval == '') { cval = 0; }       var rev = 0; var toid = null;

var tb = $(' '); var ct = $(' '); var sd = $(''); tb.append($(' ').append($(' ').append(ct)).append($('').append(sd))); var nts = null;

sd.click(function {            $.cookie(cname, rev, { expires: 30, path: '/' });           clearTimeout(toid);            tb.remove;            return false;        });

var getAttrs = function (nt) { var only = { sysop: nt.hasClass('only_sysop'), logged: nt.hasClass('only_logged'), anon: nt.hasClass('only_anon'), };           only['usr'] = only['sysop'] || only['logged'] || only['anon']; return only; };

var loadNotices = function (pos) { if (!tb.length) { return; }           ct.css('min-height', ct.height + 'px'); var l = nts.length; var nt = null; var rt = 0; while (!nt || nt.attr('class')) { if (nt) { var only = getAttrs(nt); if (!only['usr'] || (($.inArray('sysop', mw.config.get('wgUserGroups')) != -1) && only['sysop']) || (mw.config.get('wgUserName') && only['logged']) || (!mw.config.get('wgUserName') && only['anon'])) { break; }               }                pos = pos % l;                nt = $(nts[pos++]); rt++; if (rt == l) { return; }           }            nt = nt.html; if (ct.html) { ct.stop.fadeOut(function {                    ct.html(nt).fadeIn;                }); } else if (rev == cval) { return; } else { tb.appendTo(ln); ct.html(nt).fadeIn; }           toid = setTimeout(function  {                loadNotices(pos)            }, window.customASNInterval * 1000); };

$.get(mw.util.wikiScript( 'api' ), {           page: 'Template:AdvancedSiteNotices/ajax',            prop: 'text',            action: 'parse',            format: 'json',            maxage: 3600,            smaxage: 3600        }, function (d) {        	if(!d || !d.parse || !d.parse.text) return;            d = $( ' ' ).html( d.parse.text['*'] ).find( 'ul.sitents' );            nts = $('li', d);            rev = d.data( 'asn-version' );            var l = nts.length;            loadNotices(Math.floor(Math.random * l));        }); }); })(jQuery, mediaWiki);

} );