MediaWiki:Gadget-quickUnwatch.js

De la Wikipedia, enciclopedia liberă

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
// 2008, [[:ro:Utilizator:Gutza]], GPL

quickUnwatch={};

quickUnwatch.onLoad = function()
{
  this.unwatching=false;
  if (mw.config.get('wgCanonicalSpecialPageName') != "Watchlist") {
    return false;
  }
  var links=document.getElementsByTagName('a');
  for(var i=0;i<links.length;i++) {
    if (links[i].href.indexOf('action=history')==-1) continue;
    var article_link=links[i+1];
    var article_name=article_link.innerHTML;
    var newnode=document.createElement("span");
    newnode.innerHTML="(<a href='#' onClick='quickUnwatch.unwatch(\""+article_name+"\"); return false'>-u</a>) ";
    article_link.parentNode.insertBefore(newnode,article_link);
  }
};

quickUnwatch.unwatch = function(article)
{
  if (this.unwatching) {
    alert("Already unwatching!");
    return false;
  }
  this.unwatching=true;
  if (mw.config.get('wgCanonicalSpecialPageName') != "Watchlist") {
    return false;
  }
  var links=document.getElementsByTagName('a');
  for(var i=0;i<links.length;i++) {
    if (links[i].href.indexOf('action=history')==-1) continue;
    var article_link=links[i+2]; // we now have the "(u)" in between
    var article_name=article_link.innerHTML;
    if (article_name!=article) {
      continue;
    }
    links[i+1].innerHTML="…";
    break;
  }
  sajax_do_call( /* FIXME */
    "wfAjaxWatch",
    [article_name, "u"], 
    quickUnwatch.processResult
  );
  // if the request isn't done in 10 seconds, allow user to try again
  mw.config.get('wgAjaxWatch').timeoutID = window.setTimeout(
    function() { quickUnwatch.unwatching = false; quickUnwatch.restoreLink(article_name); },
    10000
  );
};

quickUnwatch.processResult = function(request)
{
  var response = request.responseText;
  if( response.match(/^<u#>/) ) {
    window.location="/w/index.php?title=Special:Watchlist&action=purge";
  } else {
    // Either we got a <err#> error code or it just plain broke.
    alert("Unwatch failed, please try again!");
    quickUnwatch.unwatching = false;
    return;
  }
  if(quickUnwatch.timeoutID) {
    window.clearTimeout(quickUnwatch.timeoutID);
  }
};

quickUnwatch.restoreLink = function(article)
{
  if (mw.config.get('wgCanonicalSpecialPageName') != "Watchlist") {
    return false;
  }
  var links=document.getElementsByTagName('a');
  for(var i=0;i<links.length;i++) {
    if (links[i].href.indexOf('action=history')==-1) continue;
    var article_link=links[i+2]; // we now have the "(u)" in between
    var article_name=article_link.innerHTML;
    if (article_name!=article) {
      continue;
    }
    links[i+1].innerHTML="-u";
    break;
  }
};

$(quickUnwatch.onLoad);