Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// Dieses Script zeigt auf Benutzerseiten und Benutzerdiskussionen mit Hilfe
// der [[WP:API]] auf Wunsch ein Sperrlog an.
(function ($) {
var sperrloganzeige =
{
// Common settings
version: 1.2,
logEntryLimit: 'max',
showOnPageLoad: false,
hideLink: false, // Wird nur beachtet, falls showOnPageLoad == true
emptyHiddenColor: "#999999", // Farbe für leere/versteckte Logeinträge
// Local Variables
loadParams: null,
user: '',
ajax_request: function (method, params, on_success)
{
if (method.toLowerCase() !== "post" && method.toLowerCase() !== "get")
{
method = 'get';
}
var on_error = function (XMLHttpRequest, textStatus, errorThrown)
{
$("#sperrloganzeige_show_link").css ("display", "none");
mw.util.jsMessage("<span style=\"color: #ff0000\">Sperrloganzeige: Fehler bitte <a href=\"" + mw.util.getUrl("Benutzer Diskussion:Steef389") + "\">Steef389</a> melden.<br />Genauer Fehler: " + errorThrown + "</span>", "sperrloganzeige_error_message");
return;
};
$.ajax (
{
url: mw.util.wikiScript("api"),
data: params,
dataType: "json",
type: method.toUpperCase(),
success: on_success,
error: on_error
} );
},
check_user_exist: function (username)
{
var params = { action: "query",
list: "users",
ususers: username,
format: "json" };
var antwort = JSON.parse ($.ajax (
{
url: mw.util.wikiScript("api"),
data: params,
async: false,
dataType: "json"
}).responseText);
if (typeof(antwort.query.users[0].missing) === "undefined")
{
return true;
}
return false;
},
get_heading: function ()
{
var heading = $("#firstHeading");
// Section 0 Edit-Button
if (heading.length === 0)
{
heading = $("#section-0");
if (heading.length === 0)
{
mw.util.jsMessage("<span style=\"color: #ff0000\">Sperrloganzeige: Konnte Überschrift nicht finden, bitte <a href=\"" + mw.util.getUrl("Benutzer Diskussion:Steef389") + "\">Steef389</a> melden.</span>", "sperrloganzeige_error_message");
throw "Can't find heading";
}
}
return heading;
},
init: function ()
{
if (mw.config.get ("wgAction") !== "view" || !(mw.config.get ("wgNamespaceNumber") === 2 || mw.config.get ("wgNamespaceNumber") === 3) || mw.config.get ("wgPageName").indexOf ("/") !== -1)
{
return;
}
sperrloganzeige.user = mw.config.get ("wgTitle");
if (!sperrloganzeige.check_user_exist (sperrloganzeige.user))
{
return;
}
// Validate Limit
if (sperrloganzeige.logEntryLimit !== "max" && parseInt("0" + sperrloganzeige.logEntryLimit.toString(), 10) < 1)
{
sperrloganzeige.logEntryLimit = "max";
}
else if (sperrloganzeige.logEntryLimit !== "max")
{
// make sure it is a number
sperrloganzeige.logEntryLimit = parseInt("0" + sperrloganzeige.logEntryLimit.toString(), 10).toString();
}
/*
// Validate Animation Time
if (parseInt("0" + sperrloganzeige.animationTime.toString(), 10) <= 0)
{
sperrloganzeige.animationTime = 0;
}
else
{
// make sure it is a number
sperrloganzeige.animationTime = parseInt("0" + sperrloganzeige.animationTime.toString(), 10);
}*/
if (!(sperrloganzeige.showOnPageLoad && sperrloganzeige.hideLink))
{
sperrloganzeige.get_heading ()
.append (" ")
.append ($(mw.html.element ('a' ,
{
href: "#",
id: "sperrloganzeige_show_link"
},
!sperrloganzeige.showOnPageLoad ? "(Sperrlog anzeigen)" : "(Sperrlog verstecken)")
)
.bind ('click', function() { sperrloganzeige.showHideLog (); return false; } )
.css ( { fontSize: "0.4em" } ));
}
if (sperrloganzeige.showOnPageLoad)
{
sperrloganzeige.loadLog ();
}
},
showHideLog: function (user)
{
var logOutput = $("#sperrloganzeige_box");
if (logOutput.length === 0)
{
$("#sperrloganzeige_show_link").first ().text ("(Sperrlog verstecken)");
sperrloganzeige.loadLog ();
}
else
{
if (logOutput.css ("display") === "none")
{
//logOutput.show (sperrloganzeige.animationTime);
logOutput.css ("display", "block");
$("#sperrloganzeige_show_link").first ().text ("(Sperrlog verstecken)");
}
else
{
//logOutput.hide (sperrloganzeige.animationTime);
logOutput.css ("display", "none");
$("#sperrloganzeige_show_link").first ().text ("(Sperrlog anzeigen)");
}
}
},
loadLog: function ()
{
sperrloganzeige.loadParams = { action: 'query',
list: 'logevents',
letitle: 'User:' + sperrloganzeige.user,
letype: 'block',
format: 'json',
lelimit: sperrloganzeige.logEntryLimit };
var onSuccess = function (antwort) { sperrloganzeige.writeLog (antwort, false); };
sperrloganzeige.ajax_request ("get", sperrloganzeige.loadParams, onSuccess);
},
loadPart: function (start)
{
var params = sperrloganzeige.loadParams;
params.lestart = start;
var onSuccess = function (antwort) { sperrloganzeige.writeLog (antwort, true); };
sperrloganzeige.ajax_request ("get", params, onSuccess);
},
writeLog: function (antwort, append)
{
var ul;
if (!append)
{
ul = $(mw.html.element ( "ul", {}));
}
else
{
ul = $("#sperrloganzeige_continue_link").parent ();
$("#sperrloganzeige_continue_link").remove ();
}
if (antwort.query.logevents.length === 0)
{
ul.append (mw.html.element ("li", { "class": "mw-logline-block" }, "keine Einträge"));
}
else
{
for (var i = 0; i < antwort.query.logevents.length; i++)
{
ul.append (sperrloganzeige.createLogLine (antwort.query.logevents[i]));
}
}
if (antwort["query-continue"] !== undefined)
{
ul.append ($(mw.html.element ("li", { "class": "mw-logline-block" , id: "sperrloganzeige_continue_link" }))
.append (mw.html.element ("a", { href: "#" }, "..."))
.bind ('click', function ()
{
sperrloganzeige.loadPart(antwort["query-continue"].logevents.lestart);
return false;
}
)
);
}
if (!append)
{
$(mw.html.element ( "div",
{
id: "sperrloganzeige_box",
"class": "mw-warning-with-logexcerpt"
}
))
.append (mw.html.element ( "p",
{},
"Sperrlogbuch:"))
.append (ul).insertBefore (sperrloganzeige.get_heading ().next ());
}
},
formatDate: function (datum)
{
var ret_datum = new Date ();
ret_datum.setUTCFullYear (datum.substr (0, 4));
ret_datum.setUTCMonth (datum.substr (5, 2) - 1);
ret_datum.setUTCDate (datum.substr (8, 2));
ret_datum.setUTCHours (datum.substr (11, 2));
ret_datum.setUTCMinutes (datum.substr (14, 2));
ret_datum.setUTCSeconds (datum.substr (17, 2));
return ret_datum.toLocaleString();
},
createLogLine: function (attribs)
{
var li = $(mw.html.element ("li", { "class": "mw-logline-block" }, sperrloganzeige.formatDate (attribs.timestamp) + ": "));
var admin_link = mw.html.element ( "a",
{
"class": "mw-userlink",
title: "Benutzer:" + attribs.user,
href: mw.util.getUrl("Benutzer:" + attribs.user)
},
attribs.user);
li.append (admin_link)
.append (" ");
var tools = $(mw.html.element ("span", { "class": "mw-usertoollinks" }))
.append ("(")
.append (mw.html.element ( "a",
{
title: "Benutzer Diskussion:" + attribs.user,
href: mw.util.getUrl("Benutzer Diskussion:" + attribs.user)
},
"Diskussion"))
.append (" | ")
.append (mw.html.element ( "a",
{
title: "Spezial:Beiträge/" + attribs.user,
href: mw.util.getUrl("Spezial:Beiträge/" + attribs.user)
},
"Beiträge"))
.append (")");
li.append (tools);
switch (attribs.action)
{
case "block":
li.append (" sperrte für den Zeitraum: ");
break;
case "unblock":
li.append (" hob die Sperre auf ");
break;
case "reblock":
li.append (" änderte die Sperre für den Zeitraum: ");
break;
default:
li.append (" machte ??? (Bitte diesen Fehler bei Steef389 melden. Danke) ");
}
if (attribs.action === "block" || attribs.action === "reblock")
{
li.append (
mw.html.element (
"span",
{
title: ((typeof(attribs.params) === "undefined") ? "Nicht verfügbar" : attribs.params.duration)
},
((typeof(attribs.params) === "undefined") ? "???" : attribs.params.duration)
)
)
.append (" ");
}
li.append (sperrloganzeige.parseComment (attribs.comment, typeof(attribs.commenthidden) !== "undefined"));
if (typeof(attribs.params) !== "undefined" && (attribs.action === "block" || attribs.action === "reblock") && attribs.params.flags !== null)
{
li.append (" ")
.append (
$(mw.html.element ("span", {}, "(" + attribs.params.flags.join (", ") + ")")).css ( { fontSize: "0.9em" } )
);
}
return li;
},
parseComment: function (text, hidden)
{
var comment = $(mw.html.element ("span", { "class": "comment" }));
if (typeof (text) === "undefined")
{
if (hidden)
{
comment.append ("(Begründung entfernt)").css ("color", sperrloganzeige.emptyHiddenColor);
return comment;
}
else
{
mw.util.jsMessage("<span style=\"color: #ff0000\">Sperrloganzeige: Bitte Steef389 folgendes auf die <a href=\"" + mw.util.getUrl("Benutzer Diskussion:Steef389") + "\">Diskussionsseite</a> setzen:<br /><i>Undefined Comment auf Seite " + sperrloganzeige.user + "</i></span>", "sperrloganzeige_error_message");
comment.append ("(undefined)").css ("color", "red");
return comment;
}
}
else if (text === null || text === "")
{
comment.append ("(kein Sperrkommentar)").css ("color", sperrloganzeige.emptyHiddenColor);
return comment;
}
var intLink = /(.*?)\[\[((.*?)\|)?(.*?)\]\](.*)/;
var suche = text;
var ergebnis;
comment.append ("(");
while (null !== (ergebnis = intLink.exec (suche)))
{
comment.append (ergebnis[1]);
if (ergebnis[2] === undefined)
{
comment.append (
mw.html.element (
'a',
{
href: mw.util.getUrl(ergebnis[4]),
title: ergebnis[4]
},
ergebnis[4]
)
);
}
else
{
comment.append (
mw.html.element (
'a',
{
href: mw.util.getUrl(ergebnis[3]),
title: ergebnis[3]
},
ergebnis[4]
)
);
}
suche = ergebnis[5];
}
comment.append (suche + ")");
return comment;
}
};
// DEPRECATED!
function sperrloganzeige_convert_old_config ()
{
if (typeof(logEntryLimit) !== "undefined")
{
sperrloganzeige.logEntryLimit = logEntryLimit;
// Deprecation Message
var hide = false;
var i, x, y, ARRcookies = document.cookie.split (";");
for (i = 0; i < ARRcookies.length; i++)
{
x = ARRcookies[i].substr (0, ARRcookies[i].indexOf ("="));
y = ARRcookies[i].substr (ARRcookies[i].indexOf ("=") + 1);
x = x.replace (/^\s+|\s+$/g,"");
if (x === "sperrloganzeige_deprecated_message")
{
hide = (y === "hide_depr_msg");
break;
}
}
if (!hide)
{
mw.util.jsMessage("<p style=\"color: #ff4500\">Hallo "+ mw.config.get ("wgUserName") +",<br />Du verwendest eine Funktionalität der Sperrloganzeige, die nun anders bewerkstelligt wird. Im Moment funktioniert dies noch, dies wird sich allerdings mit einem der nächsten Updates ändern.<br />Bitte schaue auf der <a href=\"" + mw.util.getUrl("Benutzer:Steef389/js/sperrloganzeige#Konfiguration") + "\">Beschreibungsseite</a> nach, was du ändern musst. Bei Fragen kannst du mich gerne auf meiner Diskussionsseite ansprechen.<br />Mit freundlichen Grüßen,<br />-- <a href=\"" + mw.util.getUrl("Benutzer:Steef389") + "\">Steef</a> <sup><a href=\"" + mw.util.getUrl("Benutzer Diskussion:Steef389") + "\">389</a></p><br /><p style=\"font-size: 0.75em\"><a href=\"#\" id=\"hide_steef_sperrloganzeige_deprecated_warning\">Diese Meldung verstecken</a></p>", "sperrloganzeige_deprecated_notice");
$("#hide_steef_sperrloganzeige_deprecated_warning").bind("click", function ()
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + 14);
document.cookie="sperrloganzeige_deprecated_message=hide_depr_msg; expires="+exdate.toUTCString()+"; path=/";
$(".mw-js-message-sperrloganzeige_deprecated_notice").hide ();
return false;
});
}
}
}
//sperrloganzeige_convert_old_config ();
$(document).trigger('loadWikiScript', ['Benutzer:Steef389/js/sperrloganzeige.js', sperrloganzeige]);
$(mw.loader.using('mediawiki.util', sperrloganzeige.init));
})(jQuery);