MediaWiki:Gadget-AdvancedSiteNotices.js
Giao diện
Chú ý: Sau khi lưu thay đổi trang, bạn phải xóa bộ nhớ đệm của trình duyệt để nhìn thấy các thay đổi. Google Chrome, Firefox, Internet Explorer và Safari: Giữ phím ⇧ Shift và nhấn nút Reload/Tải lại trên thanh công cụ của trình duyệt. Để biết chi tiết và hướng dẫn cho các trình duyệt khác, xem Trợ giúp:Xóa bộ nhớ đệm.
mw.loader.using( ['mediawiki.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 = 10; } $(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 = 'dismissASN1'; var cval = mw.cookie.get(cname); if (cval == '') { cval = 0; } var rev = 0; var toid = null; var tb = $('<table id="asn-dismissable-notice" width="100%" style="background: transparent;"/>'); var ct = $('<div id="advancedSiteNotices" style="height: 60px;"/>'); var sd = $('<a href="#" title="Đóng (mở lại bằng cách xóa cookie dismissASN1 trong trình duyệt)"><img src="//upload.wikimedia.org/wikipedia/commons/f/f9/Closewindow14x14.png" alt="Đóng (mở lại bằng cách xóa cookie dismissASN1 trong trình duyệt)" border="0"></a>'); tb.append($('<tr/>').append($('<td/>').append(ct)).append($('<td style="vertical-align: top;"/>').append(sd))); var nts = null; sd.click(function () { mw.cookie.set(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 = $( '<div />' ).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);} );