Benutzer:C-M/addEditAndRevertLinks.js
Erscheinungsbild
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
// ============================================================
// BEGIN addEditAndRevertLinks
// (ursprünglich von [[Benutzer:Berlin-Jurist]] so weit ich weiß)
// Revert-Fkt hinzugefügt + Beschränkung auf Seiten wo es Sinn macht. [[Benutzer:Littl]].
//
// verschiedene Fixes von [[Benutzer:PDD]]:
// - verwirrende Extrabuttons auf den Diff-Seiten (oben in den Tabs) entfernt
// - ausführlichere Revert-Informationen
// - bessere Erkennung von zu revertierenden/editierenden Links
// - optional Benutzer-Link in Revertinfo (über var revlinkshowuser)
// - Anpassung auf neue MediaWiki-Oberfläche (31.5.2006)
// - Verhinderung zu langer Editkommentare
// <nowiki>
// Variables that should be defined in your monobook
if (typeof(editlinkoldversion) == 'undefined')
var editlinkoldversion = true;
if (typeof(editlinktxt) == 'undefined')
var editlinktxt = "edit";
if (typeof(revertwithreason) == 'undefined')
var revertwithreason = true;
if (typeof(revlinktxt) == 'undefined')
var revlinktxt = "rev";
if (typeof(revlinkshowuser) == 'undefined')
var revlinkshowuser = true;
if (typeof(rvisminor) == 'undefined')
var rvisminor = true;
if (typeof(aearldefault) == 'undefined')
var aearldefault = "Grund: Unfug bzw. Vandalismus";
if (typeof(aearlhere) == 'undefined')
var aearlhere = false;
// Hauptfunktion: addEditAndRevertLinks
function addEditAndRevertLinks() {
// alert (for old monobooks)
if (minimalVersion(40) < 40) return;
var is_history = (UrlParameters['action']=='history');
var is_diff = (UrlParameters['diff']>'');
var mainNode = document;
if (is_history) {
for (var i=0; mainNode = document.body.getElementsByTagName("UL")[i]; i++)
if (mainNode.id == "pagehistory")
tagNodes (mainNode, is_history, is_diff);
}
else if (is_diff) {
for (var i=0; mainNode = document.body.getElementsByTagName("TD")[i]; i++)
if ((mainNode.className == "diff-otitle") || (mainNode.className == "diff-ntitle"))
tagNodes (mainNode, is_history, is_diff);
}
}
// END addEditAndRevertLinks
// ============================================================
// tagNodes (tagging descendant nodes of mainNode)
function tagNodes (mainNode, is_history, is_diff) {
var Edit = "(" + editlinktxt + ")";
var Rv = "(" + revlinktxt + ")";
var first= true;
for (var i=0; aNode = mainNode.getElementsByTagName("A")[i]; i++)
{
// if it's a link to an old version but not a diff-link and not already an edit link
if ( (href = aNode.getAttribute("href")) && (href.search(/oldid=/) != -1)
&& (href.search(/diff=/) == -1) && (href.search(/action=edit/) == -1) )
{
// Create Edit link (only on history; new MW has edit links on diffpage so we can skip this)
if (editlinkoldversion && is_history) {
var EditNode = document.createElement('a');
EditNode.setAttribute('href', href + '&action=edit#summary');
var EditTextNode = document.createTextNode(Edit);
EditNode.appendChild(EditTextNode);
// Add Edit Link To Old Version Link
aNode.parentNode.insertBefore( EditNode, aNode.nextSibling );
// Insert whitespace before Edit Link
aNode.parentNode.insertBefore( document.createTextNode(' '), aNode.nextSibling );
// jump over inserted (edit) anchor
i++;
}
// Create RV Link
if (revertwithreason && (is_diff || (is_history && !first))) {
var rvtimestamp = aNode.innerHTML.replace(/.*vom /,'');
var rvtsdate = rvtimestamp.replace(/.*, /,'');
var rvtstime = rvtimestamp.replace(/, .*/,'');
// für ISO 8601 datumsformat: erstmal keine Umformung
if (rvtsdate == rvtstime) rvtstime = '';
// Benutzernamen müsste man eigtl. aus dem href nehmen (um UTF8-Namen korrekt zu übernehmen),
// aber dann brauchen wieder IPs eine Sonderbehandlung. Vielleicht später...
var rvuser;
if (is_history){
rvuser = mainNode.getElementsByTagName("A")[i+1].innerHTML;
// kleiner Hack für Username mit '&'
rvuser = rvuser.split('&').join('&');
var Rvnode = document.createElement('a');
Rvnode.setAttribute('href', 'javascript:revertToRevision(\'' + getoldid(encodeURI(href))+ '\')');
var RvTextNode = document.createTextNode(Rv);
Rvnode.appendChild(RvTextNode);
aNode.parentNode.insertBefore( Rvnode, aNode.nextSibling );
aNode.parentNode.insertBefore( document.createTextNode(' '), aNode.nextSibling );
}
// jump over inserted (rev) anchor
i++;
} // END if2
first=false;
} // END if1
} // END for
}
// END tagNodes
// ============================================================
// revertme by Littl, extended by PDD
function getoldid (href) {
var oldid = href.replace(/.*(oldid)\=/,'');
return oldid
}
// END revertme
// ============================================================
addOnloadHook(addEditAndRevertLinks);
// </nowiki>