//<nowiki>
// begin namespace: RCFilter
(function( _public, $, undefined ) {
var users = {};
var names = {};
var conf = {};
var gruppiert = false;
_public.init = function ()
{
_public.load();
if (conf.kurz) {
if (mw.config.get("wgCanonicalNamespace") == "Special" &&
mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
_public.shorten1("ul.mw-contributions-list a");
}
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="Einstellungen" href="' + buildUrl2("Hilfe:RC-Filter","") + '">≡</a>';
buttons += ' | <a title="Feste Breite" href="javascript:RCFilter.breite(16)">F</a>';
buttons += ' | <a title="Nach Namensräumen gruppieren" href="javascript:RCFilter.gruppieren()">G</a>';
buttons += ' | <a title="Kurze Links" href="javascript:RCFilter.shorten()">K</a>';
buttons += ' | <a title="blende Markierungen aus/ein" href="javascript:RCFilter.fadeMarkierung()">M</a>';
buttons += ' | <a title="Links in neuem Fenster/Tab öffnen" href="javascript:RCFilter.newWindowTab()">N</a>';
buttons += ' | <a title="blende Uhrzeiten aus/ein" href="javascript:RCFilter.fadeClock()">U</a>';
buttons += ' | <a title="Zeit und Bytes nach vorn" href="javascript:RCFilter.moveZeit()">Z</a>';
buttons += ' | <a title="blende Reimzeilen aus/ein" href="javascript:RCFilter.fadeLine('+
'\'(+Reim\')">Reim</a>';
buttons += ' | <a title="blende autoedit-Zeilen aus/ein" href="javascript:RCFilter.fadeLine('+
'\'(autoedit\')">autoedit</a>';
if (conf.neue) {
_public.newWindowTab();
}
if (conf.breite > 0) {
_public.breite(conf.breite);
}
if (conf.kurz) {
_public.shorten();
_public.shortenLi1("ul.special li>span.mw-changeslist-line-inner");
}
if (conf.uhr) {
_public.fadeClock();
}
if (conf.zeit) {
_public.moveZeit();
}
if (conf.mark) {
_public.fadeMarkierung();
}
if (conf.reim) {
_public.fadeLine('(+Reim');
}
if (conf.auto) {
_public.fadeLine('(autoedit');
}
if (configDefault("KeineLegende",false)) {
$("div.mw-changeslist-legend").hide();
}
$("ul.special a[title^='Benutzer Diskussion:']").each(function(index, element) {
if (users.hasOwnProperty(element.title.substr(20))){
users[element.title.substr(20)].cnt++;
} else {
users[element.title.substr(20)] = {cnt:1};
}
});
var u,i;
var sorta = [];
var topUser = conf.topuser;
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/ein" href="javascript:RCFilter.fadeUser(\''+
a[1]+'\')">'+a[1]+'</a>';
buttons += ' <a title="nur diesen Benutzer anzeigen" href="javascript:RCFilter.fadeUserIn(\''+
a[1]+'\')">('+ (parseInt(a[0])-10000) +')</a>';
bs = ' | ';
}
var logs = $("ul.special li:has(span.mw-changeslist-log-entry)");
if (logs && logs.length > 0) {
names["Logbuch"] = {cnt:logs.length};
}
$("ul.special a.mw-changeslist-title").each(function(index, element) {
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:RCFilter.fadeNames(\''+
a[1]+'\')">'+a[1]+'</a>';
buttons += ' <a title="nur diesen Namensraum anzeigen" href="javascript:RCFilter.fadeNamesIn(\''+
a[1]+'\')">('+ (parseInt(a[0])-10000) +')</a>';
bs = ' | ';
}
var lastli = $("ul.special li:last")[0];
if ( lastli !== undefined) {
var 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 (conf.grup) {
_public.gruppieren();
}
// Benutzerbeiträge ab letztem Zeitpunkt anzeigen
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="'
+ buildUrl2('Spezial:' + title)
+ 'href="https://de.wiktionary.org/w/index.php?title=Spezial:'
+ '&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);
})
}
if (mw.config.get("wgAction") == "history") {
//hideBotsLink();
}
}
function configDefault(s,d) {
if (RCFilter.hasOwnProperty(s)) {
return RCFilter[s];
}
return d;
}
// YYYYMMDDHHMISS
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;
}
function newA(node,d,h) {
node.parentNode.insertBefore(document.createTextNode(" "), node.nextSibling);
var dutc = new Date (d.getFullYear(), d.getMonth(), d.getDate(), h, 0, 0);
var dt = lpad(dutc.getUTCFullYear()) + lpad(dutc.getUTCMonth()+1) + lpad(dutc.getUTCDate())
+ lpad(dutc.getUTCHours()) + "0000";
var newNode = document.createElement("A");
newNode.href = mw.config.get("wgScript") + "?title=Spezial:Letzte_%C3%84nderungen&limit=999&from=" + dt;
newNode.appendChild(document.createTextNode(lpad(h)));
node.parentNode.insertBefore(newNode, node.nextSibling);
}
function newLI(ul, txt, selection) {
if (txt != "Logbuch") {
var li = document.createElement("li");
li.style.listStyle = "none";
li.innerHTML = " ";
$(li).appendTo(ul);
}
li = document.createElement("li");
li.style.listStyle = "none";
li.innerHTML = "<b>" + txt + ":</b>";
$(li).appendTo(ul);
$(selection).appendTo(ul);
}
function newBox(id,txt) {
return '<input type="checkbox" id="cbox_' + id + '" name="form1" value="' + txt +
'"/>' + txt + '<br />'
}
_public.config = function () {
_public.load();
$("#rcFilterConfig").after(
'<form>', '<b><span id="rcconfig" name="form1">Konfiguration:</span','</b><br />',
newBox("grup", "Gruppieren") +
newBox("kurz", "Kurze Links") +
newBox("mark", "Markierungen ausblenden") +
newBox("neue", "Links in neuen Seiten öffnen") +
newBox("uhr", "Uhrzeit ausblenden") +
newBox("zeit", "Zeit und Bytes nach vorn") +
newBox("reim", "Reimzeilen ausblenden") +
newBox("auto", "autoedit-Zeilen ausblenden"),
'<input type="number" id="topuser" name="form1" min="3" max="15" />Anzahl Top-User (3-15)<br />',
'<input type="number" id="breite" name="form1" min="0" max="30" />Mindestbreite des Seitennamens (0 = aus)<br />',
'</form>');
_public.setConfig();
createButtonSave();
};
_public.load = function () {
var value = mw.cookie.get('PreferencesRCFilterJs') || 'k|n|u|z|r|a|tu~5|br~0';
var params = value.split("|");
var i;
for ( i = 0; i < params.length; i++) {
if (params[i] == "g") conf.grup = false;
if (params[i] == "G") conf.grup = true;
if (params[i] == "k") conf.kurz = false;
if (params[i] == "K") conf.kurz = true;
if (params[i] == "m") conf.mark = false;
if (params[i] == "M") conf.mark = true;
if (params[i] == "n") conf.neue = false;
if (params[i] == "N") conf.neue = true;
if (params[i] == "u") conf.uhr = false;
if (params[i] == "U") conf.uhr = true;
if (params[i] == "z") conf.zeit = false;
if (params[i] == "Z") conf.zeit = true;
if (params[i] == "r") conf.reim = false;
if (params[i] == "R") conf.reim = true;
if (params[i] == "a") conf.auto = false;
if (params[i] == "A") conf.auto = true;
if (params[i].startsWith("tu~")) {
conf.topuser = Number(params[i].slice(3));
}
if (params[i].startsWith("br~")) {
conf.breite = Number(params[i].slice(3));
}
}
}
_public.setConfig = function () {
document.getElementById("cbox_grup").checked = conf.grup;
document.getElementById("cbox_kurz").checked = conf.kurz;
document.getElementById("cbox_mark").checked = conf.mark;
document.getElementById("cbox_neue").checked = conf.neue;
document.getElementById("cbox_uhr").checked = conf.uhr;
document.getElementById("cbox_zeit").checked = conf.zeit;
document.getElementById("cbox_reim").checked = conf.reim;
document.getElementById("cbox_auto").checked = conf.auto;
document.getElementById("topuser").value = conf.topuser;
document.getElementById("breite").value = conf.breite;
}
_public.save = function () {
conf.topuser = document.getElementById("topuser").value;
conf.breite = document.getElementById("breite").value;
conf.grup = document.getElementById("cbox_grup").checked;
conf.kurz = document.getElementById("cbox_kurz").checked;
conf.mark = document.getElementById("cbox_mark").checked;
conf.neue = document.getElementById("cbox_neue").checked;
conf.uhr = document.getElementById("cbox_uhr").checked;
conf.zeit = document.getElementById("cbox_zeit").checked;
conf.reim = document.getElementById("cbox_reim").checked;
conf.auto = document.getElementById("cbox_auto").checked;
var value = "";
value += conf.grup ? "G" : "g";
value += conf.kurz ? "|K" : "|k";
value += conf.mark ? "|M" : "|m";
value += conf.neue ? "|N" : "|n";
value += conf.uhr ? "|U" : "|u";
value += conf.zeit ? "|Z" : "|z";
value += conf.reim ? "|R" : "|r";
value += conf.auto ? "|A" : "|a";
value += "|tu~" + conf.topuser.toString();
value += "|br~" + conf.breite.toString();
mw.cookie.set('PreferencesRCFilterJs', value, {expires: 86400 * 399});
document.getElementById("speicher").style.display = '';
}
function createButtonSave(){
$("#rcFilterSave").after('<br />',
'<input type="button" title="Einstellungen in einem Cookie speichern" value="Einstellungen speichern" onclick="RCFilter.save();return false;">','<span id="speicher" style="display:none"> gespeichert</span>');
}
_public.fadeLine = function (filter)
{
$("ul.special > li:contains('"+filter+"')").fadeToggle();
};
_public.fadeIn = function (user)
{
$("ul.special > li:has(a)").fadeIn();
};
_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 == "Logbuch") {
sel = "ul.special li:has(span.mw-changeslist-log-entry)";
}
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 == "Logbuch") {
sel = "ul.special li:has(span.mw-changeslist-log-entry)";
}
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.moveZeit = function ()
{
_public.moveLi1("ul.special li>span.mw-changeslist-line-inner");
};
_public.fadeMarkierung = function ()
{
$("ul.special span.mw-tag-marker").fadeToggle();
};
_public.breite = function (breit) {
if (breit > 0) {
$("ul.special span.mw-title").css({"display":"inline-block", "min-width":breit + "em"});
}
};
_public.gruppieren = function () {
if (gruppiert) return;
gruppiert = true;
var ul1 = document.createElement("ul");
ul1.classList.add("special");
var list = document.getElementsByClassName("mw-changeslist");
list[0].prepend(ul1);
var sel;
for (nr in names) {
if (nr == "Logbuch") {
sel = "ul.special li:has(span.mw-changeslist-log-entry)";
} else if (nr == "Diskussion") {
sel = "ul.special > li:has(a.mw-changeslist-title[title*='"+nr+":'])";
} else {
sel = "ul.special > li:has(a.mw-changeslist-title[title^='"+nr+":'])";
}
if (nr != "Einträge") {
newLI(ul1, nr, sel);
}
}
};
_public.newWindowTab = function () {
$("ul.special a").attr("target", "_blank");
};
_public.shorten = function () {
_public.shorten1("ul.special a");
};
_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("Markierung") >= 0) {
$(element).text(" M");
}
});
};
_public.shortenLi1 = function (where) {
$(where).each(function(index, element) {
for (var child = element.firstChild; child !== null; child = child.nextSibling) {
if (hasClass(child, "mw-changeslist-links")) {
child.innerHTML = child.innerHTML.replace(">Unterschied</a>","> U </a>");
child.innerHTML = child.innerHTML.replace(">Unterschied</span>","> U </span>");
child.innerHTML = child.innerHTML.replace(">Versionen</a>","> V </a>");
target = child;
}
if (hasClass(child, "mw-usertoollinks")) {
child.innerHTML = child.innerHTML.replace(">Diskussion</a>","> D </a>");
child.innerHTML = child.innerHTML.replace(">Beiträge</a>","> B </a>");
child.innerHTML = child.innerHTML.replace(">Sperren</a>","> S </a>");
}
if (hasClass(child, "mw-tag-markers")) {
child.innerHTML = child.innerHTML.replace("Markierungen</a>","> M </a>");
}
if (hasClass(child, "mw-rollback-link")) {
child.innerHTML = child.innerHTML.replace(">Zurücksetzen</a>","> Z </a>");
}
}
});
};
_public.moveLi1 = function (where) {
$(where).each(function(index, element) {
var target;
var rem;
for (var child = element.firstChild; child !== null; child = child.nextSibling) {
if (hasClass(child, "mw-changeslist-links")) {
target = child;
}
if (hasClass(child, "mw-changeslist-date")) {
if (child.innerHTML.length < 6) {
child.innerHTML += ' ';
}
if (target) {
target.insertAdjacentElement('beforebegin',child);
}
}
if (hasClass(child, "mw-diff-bytes")) {
if (target) {
rem = child.nextElementSibling; // Separator später entfernen
child.innerHTML = child.innerHTML.replace(" Bytes","");
child.innerHTML = child.innerHTML.replace(" Byte","");
child.style.display = "inline-block";
child.style.textAlign = "right";
child.style.width = "4.5em";
child.style.whiteSpace = "nowrap";
target.insertAdjacentElement('beforebegin',child);
target.insertAdjacentText('beforebegin'," . . ");
}
}
}
if (rem) rem.remove();
});
};
_public.shorten2 = function () {
$("#pagehistory a").each(function(index, element) {
var t = $(element).text();
if (element.previousSibling) {
var nv = element.previousSibling.nodeValue;
if (nv && nv.indexOf("(Unterschied | ") == 0) {
element.previousSibling.nodeValue = "( U | ";
}
var nv = element.previousSibling.nodeValue;
if (nv && nv.indexOf("(Aktuell | ") == 0) {
element.previousSibling.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 ");
}
});
};
function hasClass(element, clsName) {
return (' ' + element.className + ' ').indexOf(' ' + clsName + ' ') > -1;
}
function addCORS() {
if (window.location.hostname.indexOf(".m.") >= 0) { // mobile site
return "origin=" + window.location.protocol + "//" + window.location.hostname + "&";
}
return "";
}
function getServer() {
var server = mw.config.get("wgServer");
if (window.location.hostname.indexOf(".m.") >= 0) { // mobile site
if (server.indexOf(".m.") < 0) {
return server.replace(".", ".m.");
}
}
return server;
}
function buildApi(t,p) {
return getServer() + mw.config.get("wgScriptPath") + "/api.php?" + addCORS() +
p + mw.util.wikiUrlencode(t);
}
function buildUrl2(t,p) {
return getServer() + mw.config.get("wgScript") + "?title=" + mw.util.wikiUrlencode(t) + p;
}
// end namespace: RCFilter
}( window.RCFilter = window.RCFilter || {}, jQuery ));
if (mw.config.get("wgPageName") == "Spezial:Letzte_Änderungen") {
jQuery(document).ready(RCFilter.init)
}
if (mw.config.get("wgPageName") == "Hilfe:RC-Filter" && mw.config.get("wgAction") == "view") {
jQuery(document).ready(RCFilter.config);
}
//</nowiki>