Utente:Luckyz/Sandbox
Vai alla navigazione
Vai alla ricerca
//
if (mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist' && mw.config.get('wgAction') == 'view')
(function($){
var unWatchLinks = [];
var wlForm;
var inProgress = null;
var timeoutID = null;
function setUnwatchLink (unwatchLink, state) {
unwatchLink.innerHTML = state ? 'segui' : 'non seguire';
}
function getPgName (unwatchLink){
return decodeURIComponent(unwatchLink.title.match(/&title=(.+)/)[1]);
}
function onClick(e) {
if (inProgress) return false;
if (!e) e = window.event;
var targ;
if (e.target) targ = e.target; else if (e.srcElement) targ = e.srcElement;
inProgress = getPgName(targ);
//call server
var action = (targ.innerHTML == 'non seguire') ? 'u' : 'w';
var response;
var name = inProgress, name2 = name, state, prefix, idx, ns = 0, pg, i, el;
//TODO: riscrivere con chiamate AJAX asincrone
if (targ.innerHTML == 'non seguire')
{
response = $.ajax({
url: mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/api.php",
data: ({
title: inProgress,
action: 'watch',
unwatch: 'unwatch',
token: mw.user.tokens.get("watchToken"),
format: 'xml'
}),
dataType: "xml",
async: false,
token: mw.user.tokens.get("watchToken"),
type: "POST",
error: function(msg){
return;
}
}).responseText;
state = true;
}
else
{
response = $.ajax({
url: mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/api.php",
data: ({
title: inProgress,
action: 'watch',
token: mw.user.tokens.get("watchToken"),
format: 'xml'
}),
dataType: "xml",
async:false,
type: "POST",
error: function(msg){
return;
}
}).responseText;
state = false;
}
inProgress = null;
//find the name of "other page"
if ((idx = name.indexOf(':')) != -1){ //not main namespace
prefix = name.substring(0,idx);
name2 = name.substring(idx + 1);
for (i = 2; i < wlForm.namespace.options.length; i++)
if (wlForm.namespace.options[i].text == prefix)
ns = i - 1;
if (ns === 0) name2 = name; // guess : was a part of the page name
}
if (ns % 2) ns--; else ns++; //switch to "other" namespace
if (ns > 0) name2 = wlForm.namespace.options[ns+1].text + ':' + name2;
//now mark all pages that are either name or name2
for (i = 0; i < unWatchLinks.length; i++)
if ((pg = getPgName(unWatchLinks[i])) && (pg==name || pg==name2)) {
setUnwatchLink (unWatchLinks[i], state);
el = unWatchLinks[i]; //now mark the whole line
while ((el = el.previousSibling) && (el.nodeName != 'DIV') && (el.nodeName != 'BR'))
if (el.style) el.style.textDecoration = state ? 'line-through' : '';
}
}
$(document).ready(function() {
var wlForm = document.getElementById('mw-watchlist-form-namespaceselector');
if (!wlForm || !wlForm.namespace) return;
var links = document.getElementById('content').getElementsByTagName('a');
for (var i = 0; i < links.length; i++){ //append (x) links after history links
if (!links[i].href.match(/[?&]action=history([&#]|$)/)) continue;
var unwatch = document.createElement('a');
unwatch.href = 'javascript:;';
unwatch.title = mw.config.get('wgServer') + mw.config.get('wgScript') +
'?action=unwatch&title=' + encodeURIComponent(links[i].title);
unwatch.onclick = onClick;
unWatchLinks.push(unwatch);
var nextEl = links[i].nextSibling.nextSibling; //item after )
nextEl.parentNode.insertBefore(document.createTextNode(' ('), nextEl);
nextEl.parentNode.insertBefore(unwatch, nextEl);
nextEl.parentNode.insertBefore(document.createTextNode(') '), nextEl);
setUnwatchLink(unwatch, false);
}
});
})(jQuery);
//