Benutzer:Formatierer/filter.js

Aus Wiktionary, dem freien Wörterbuch
//<nowiki>
 
// begin namespace: foFilter
(function( _public, $, undefined ) {
 
var users = {};
var names = {};

_public.init = function ()
{

 if (configDefault("KurzeLinks",false)) {
  if (mw.config.get("wgCanonicalNamespace") == "Special" &&
      mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
   _public.shorten1("ul.mw-contributions-list a");
   _public.shorten1("ul.mw-contributions-list span.mw-changeslist-links span");
  }

  if (mw.config.get("wgAction") == "history") {
   _public.shorten2();
  }
 }

 var pn = mw.config.get("wgPageName");
 if (pn == "Spezial:Letzte_Änderungen"){
  $(".rcoptions").each(function(index, element) {
   var buttons = ' Filter: <a title="Kurze Links" href="javascript:foFilter.shorten()">K</a>';
   buttons += ' | <a title="Links in neuem Fenster/Tab öffnen" href="javascript:foFilter.newWindowTab()">N</a>';
   buttons += ' | <a title="blende Uhrzeiten aus" href="javascript:foFilter.fadeClock()">U</a>';
   buttons += ' | <a title="blende Reimzeilen aus" href="javascript:foFilter.fadeLine('+
    '\'+Reim\')">Reim</a>';
   buttons += ' | <a title="blende autoedit-Zeilen aus" href="javascript:foFilter.fadeLine('+
    '\'(autoedit\')">autoedit</a>';

   if (configDefault("NeueFenster",false)) {
    _public.newWindowTab();
   }

   if (configDefault("KurzeLinks",false)) {
    _public.shorten();
   }

   $("ul.special a[title^='Spezial:Beiträge/']").each(function(index, element) {
    if (users.hasOwnProperty(element.title.substr(17))){
     users[element.title.substr(17)].cnt++;
    }else{
     users[element.title.substr(17)] = {cnt:1};
    }
   });

   var u,i;
   var sorta=[];
   var topUser=parseInt(configDefault("TopUser",5),10);
   var bs=' Top '+topUser+': ';
   for (u in users) {
    sorta.push(10000+users[u].cnt+';'+u.replace(/ \(Seite nicht vorhanden\)/,''));
   }
   sorta.sort();
   for (i=sorta.length-1; i >= sorta.length-topUser && i >=0; i--) {
    a=sorta[i].split(/;/);
    buttons += bs+'<a title="blende Benutzerzeilen aus" href="javascript:foFilter.fadeUser(\''+
      a[1]+'\')">'+a[1]+'</a>';
    buttons += ' <a title="nur diesen Benutzer anzeigen" href="javascript:foFilter.fadeUserIn(\''+
      a[1]+'\')">('+ (parseInt(a[0])-10000) +')</a>';
    bs = ' | ';
   }

   $("ul.special a.mw-changeslist-title").each(function(index, element) {
    var sp = element.title.split(":",2);
    var nr = sp[0];
    if (sp.length < 2) {
     nr = "Einträge";
    }
    if (nr.search(/Diskussion$/) >= 0) {
     nr = "Diskussion";
    }
    if (names.hasOwnProperty(nr)){
     names[nr].cnt++;
    }else{
     names[nr] = {cnt:1};
    }

   });

   u,i;
   sorta=[];
   bs=' Namensraum: ';
   for (u in names) {
    sorta.push(10000+names[u].cnt+';'+u);
   }
   sorta.sort();
   for (i=sorta.length-1; i >=0; i--) {
    a=sorta[i].split(/;/);
    buttons += bs+'<a title="blende Namensraum aus" href="javascript:foFilter.fadeNames(\''+
      a[1]+'\')">'+a[1]+'</a>';
    buttons += ' <a title="nur diesen Namensraum anzeigen" href="javascript:foFilter.fadeNamesIn(\''+
      a[1]+'\')">('+ (parseInt(a[0])-10000) +')</a>';
    bs = ' | ';
   }
   
   var anzAb;
   var lastli = $("ul.special li:last")[0];
   if ( lastli !== undefined) {
     anzAb = lastli.getAttribute("data-mw-ts");
     if (anzAb == null || anzAb.length == 0) {
       anzAb = "19991231230000";
     }
   }

   var fdat = DateFromString(anzAb);

   var td = "" + lpad(fdat.getDate()) + "." + lpad(fdat.getMonth()+1) + "." + lpad(fdat.getFullYear());
   var tt = "" + lpad(fdat.getHours()) + ":" + lpad(fdat.getMinutes());

   buttons += ' Der erste Listeneintrag ist vom: <a href="#footer">' + td + ', ' + tt + '</a> Uhr.';

   var div = document.createElement("div");
   div.innerHTML += buttons;
   element.appendChild(div);
  });
 }

 if (pn.lastIndexOf("Spezial:Beiträge",0) == 0) {
  var title = mw.config.get("wgTitle");
  var tu = title.substr(9);
  var d = new Date();
  var di = d.toISOString().replace(/[T\-:]/g,'').substr(0,14);
  var dl = d.toLocaleString();

  $(".mw-contributions-table").each(function(index, element) {
    var buttons = '<td colspan="2"><a title="Beiträge seit Zeitpunkt"'
    + 'href="https://de.wiktionary.org/w/index.php?title=Spezial:'
    + title + '&dir=prev&offset=' + di + '&target=' + tu
    + '">Nur Änderungen seit ' + dl + ' Uhr zeigen.</a></td>';

   var tr=document.createElement("tr");
   tr.innerHTML += buttons;
   element.appendChild(tr);
  });
 }

};

function configDefault(s,d) {
 if (foFilter.hasOwnProperty(s)) {
  return foFilter[s];
 }
 return d;
}


function DateFromString(s) {
  return new Date(Date.UTC(parseInt(s.slice(0,4),10),
  parseInt(s.slice(4,6),10)-1,
  parseInt(s.slice(6,8),10),
  parseInt(s.slice(8,10),10),
  parseInt(s.slice(10,12),10),
  parseInt(s.slice(12,14),10)));
}


function lpad(i) {
 var s = "" + i;
 if (s.length < 2) {
  s = "0" + s;
 }
 return s;
}


_public.fadeLine = function (filter)
{
 $("ul.special > li:contains('"+filter+"')").fadeToggle();
};

_public.fadeUser = function (user)
{
 $("ul.special > li:has(a[title='Spezial:Beiträge/"+user+"'])").fadeToggle();
};

_public.fadeUserIn = function (user)
{
 $("ul.special > li:has(a)").fadeOut();
 $("ul.special > li:has(a[title='Spezial:Beiträge/"+user+"'])").fadeIn();
};

_public.fadeNames = function (nr)
{
 var sel = "ul.special > li:has(a.mw-changeslist-title[title^='"+nr+":'])";
 if (nr == "Diskussion") {
  sel = "ul.special > li:has(a.mw-changeslist-title[title*='"+nr+":'])";
 }
 if (nr == "Einträge") {
  $("ul.special a.mw-changeslist-title").each(function(index, element) {
    if (element.title.search(/:/) < 0) {
     $(element).closest( "li" ).fadeToggle();
    }
   });
  return;
 }
 $(sel).fadeToggle();
}

_public.fadeNamesIn = function (nr)
{
 $("ul.special > li:has(a)").fadeOut();
 var sel = "ul.special > li:has(a.mw-changeslist-title[title^='"+nr+":'])";
 if (nr == "Diskussion") {
  sel = "ul.special > li:has(a.mw-changeslist-title[title*='"+nr+":'])";
 }
 if (nr == "Einträge") {
  $("ul.special a.mw-changeslist-title").each(function(index, element) {
    if (element.title.search(/:/) < 0) {
     $(element).closest( "li" ).fadeIn();
    }
   });
  return;
 }
 $(sel).fadeIn();
}

_public.fadeClock = function ()
{
 $("ul.special span.mw-changeslist-date").fadeToggle();
}


_public.newWindowTab = function () {
  $("ul.special a").attr("target", "_blank");
}


_public.shorten = function () {
 _public.shorten1("ul.special a");
 _public.shorten1("ul.special div.mw-changeslist-links span");
}

_public.shorten1 = function (where) {
  $(where).each(function(index, element) {

    var t = $(element).text();

    if (t.indexOf("Unterschied") >= 0) {
      $(element).text(" U");
    }
    if (t.indexOf("Versionen") == 0) {
      $(element).text("V ");
      var pa = element.parentElement;  // <span>
      if (pa.previousSibling) {  // ein leerer Unterschied? neuer Eintrag
        var nv = pa.previousSibling.innerHTML;
        if (nv && nv.indexOf("Unterschied") >= 0) {
          pa.previousSibling.innerHTML = " N "
        }
      }
    }
    if (t.indexOf("Diskussion") == 0 && t.indexOf(":") < 0) {
      $(element).text(" D");
    }
    if (t.indexOf("Beiträge") >= 0) {
      $(element).text(" B ");
    }
    if (t.indexOf("Sperren") >= 0) {
      $(element).text("S ");
    }
    if (t.indexOf("Zurücksetzen") >= 0) {
      $(element).text(" Z ");
    }
    if (t.indexOf("zeigen/verstecken") >= 0) {
      $(element).text(" z/v ");
    }

  });
}

_public.shorten2 = function () {
  $("#pagehistory a").each(function(index, element) {

    var t = $(element).text();
    var nv = element.parentNode.firstChild.nodeValue;
    if (nv && nv.indexOf("(Unterschied | ") == 0) {
      element.parentNode.firstChild.nodeValue = "( U | ";
    }
    var nv = element.parentNode.firstChild.nodeValue;
    if (nv && nv.indexOf("(Aktuell | ") == 0) {
      element.parentNode.firstChild.nodeValue = "(Akt | ";
    }
    if (t.indexOf("Aktuell") >= 0) {
      $(element).text("Akt");
    }
    if (t.indexOf("Vorherige") >= 0) {
      $(element).text(" Vor");
    }
    if (t.indexOf("Unterschied") >= 0) {
      $(element).text(" U");
    }
    if (t.indexOf("Versionen") == 0) {
      $(element).text("V ");
    }
    if (t.indexOf("Diskussion") == 0 && t.indexOf(":") < 0) {
      $(element).text(" D");
    }
    if (t.indexOf("Beiträge") >= 0) {
      $(element).text(" B ");
    }
    if (t.indexOf("Sperren") >= 0) {
      $(element).text("S ");
    }
    if (t.indexOf("Zurücksetzen") >= 0) {
      $(element).text(" Z ");
    }
    if (t.indexOf("rückgängig machen") >= 0) {
      $(element).text(" r ");
    }

  });
}


// end namespace: foFilter
}( window.foFilter = window.foFilter || {}, jQuery ));
 
jQuery(document).ready(foFilter.init);
 

botList = ",ArchivBot,Archiver,BaisemainBot,BaluBot,BetterkBot,CarsracBot,ChuispastonBot,CruxBot,DerbethBot,Gyroidbot,IBot,IgelBot,Interwicket,JAnDbot,KipBot,KlaudiuBot,Luckas-bot,MelancholieBot,MonoBot,OKBot,Peti610bot,Pill Test,QualiaBot,RobotGMwikt,SpaceBirdyBot,Tsca.bot,VolkovBot,WikitanvirBot,YS-Bot,Zumg,AHbot,Aibot,Alexbot,Almabot,BOT-Superzerocool,BodhisattvaBot,BotMultichill,EivindBot,FiriBot,HerculeBot,Kwjbot,LaaknorBot,MSBOT,MenoBot,RoggBot,SpBot,CommonsDelinker,RedirectBot,DoubleRedirectBot,StMHBot,";

function $id(ID) {return document.getElementById(ID);}

function hideBots() {
 $id("hideBotsLink").innerHTML = '[<a href="javascript:location.href=url">Bots und Mehrfachbearbeitungen wieder einblenden<\/a>]';
 var prevUserName = "";
 var lis = $id("pagehistory").getElementsByTagName("li");
 for (var l = 0; l < lis.length; l++) {
  var li = $id("pagehistory").getElementsByTagName("li")[l];
  var ls = li.getElementsByTagName("a");
  for (var a = 0; a < ls.length; a++) {
   if (li.getElementsByTagName("a")[a].className.indexOf("mw-userlink") > -1) {
    if (botList.indexOf(","+li.getElementsByTagName("a")[a].innerHTML+",") > -1 || li.getElementsByTagName("a")[a].innerHTML == prevUserName) {
     $id("pagehistory").removeChild(li);
     l = l-1;
    }
    prevUserName = li.getElementsByTagName("a")[a].innerHTML;
   }
  }
 }
 var fin = $id("pagehistory").getElementsByTagName("li")[0].getElementsByTagName("input")[1];
 fin.checked = true;
 fin.removeAttribute("style");
 $id("pagehistory").getElementsByTagName("li")[0].getElementsByTagName("input")[0].setAttribute("style", "visibility:hidden");
 $id("pagehistory").getElementsByTagName("li")[1].getElementsByTagName("input")[0].checked = true;
}

function hideBotsLink() {
 $id("histlegend").innerHTML += '<div id="hideBotsLink" style="margin-bottom: -5px; text-align: center;">[<a href="javascript:hideBots()">Bots und Mehrfachbearbeitungen ausblenden<\/a>]<\/div>';
}

if (mw.config.get("wgAction") == "history") {
 addOnloadHook(hideBotsLink);
}

//</nowiki>