MediaWiki:Gadget-watchlist.js
JS-код ниже относится к гаджету «В списке наблюдения: только новые изменения, сортировка списка, мгновенное „не следить“, возможность прятать кнопку отката» (править описание). Его использует около 3700 учётных записей.
После сохранения или недавних изменений очистите кэш браузера.
if (wgCanonicalSpecialPageName && wgCanonicalSpecialPageName == 'Watchlist' && wgAction=='view')
addOnloadHook(function () {
var then = +(new Date());
var fixLinkHref = function () {
var url = window.location.href.split('#')[0];
var days = ( +(new Date()) - then + 20000)/(1000 * 3600 * 24); //+20 sec just in case
if (url.match(/[?&]days=/))
this.href = url.replace(/([?&]days=)[^&]*/, '$1'+days);
else
this.href = url + (url.indexOf('?') < 0 ? '?':'&') + 'days=' + days;
return true;
}
//add Unwatch... link
var frm = document.getElementsByTagName('form')[0];
if (!frm && !(frm=document.getElementById('contentSub'))) return;
var lnk = document.createElement('a');
var text = (window.wgAjaxWatch ? wgAjaxWatch.unwatchMsg : 'Unwatch') + '…';
lnk.appendChild(document.createTextNode(text));
lnk.href = 'javascript:callWLUnwatch()';
lnk.title = 'Добавить (x) ссылки удаления страниц из списка наблюдения';
frm.parentNode.insertBefore(document.createTextNode(' | '), frm);
frm.parentNode.insertBefore(lnk, frm);
//add Only new link
var el = lnk;
while ((el = el.previousSibling) && el.nodeName != 'BR');
if (!el) el = frm;
lnk = document.createElement('a');
lnk.id = 'wlNew';
lnk.href = '#listSince';
lnk.onclick = fixLinkHref;
lnk.onmousedown = fixLinkHref; // react to middle clicks too
lnk.appendChild(document.createTextNode(wgUserLanguage=='ru'?'Только новые':'Only new'));
lnk.title = 'Показать изменения с момента загрузки этой страницы';
el.parentNode.insertBefore(document.createTextNode(' | '), el);
el.parentNode.insertBefore(lnk, el);
});
function callWLUnwatch(){
if (window.wlUnwatch)
alert('Для удаления страниц из списка наблюдения используйте появившиеся ссылки (x)')
else
importScript('User:Alex_Smotrov/wlunwatch.js','en');
}