User:SVG/addEditAndRevertLinks.js
Appearance
< User:SVG
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:SVG/addEditAndRevertLinks. |
// ============================================================
// 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: keine Verbesserung des Artikels";
if (typeof(aearlhere) == 'undefined')
var aearlhere = false;
// Hauptfunktion: addEditAndRevertLinks
function addEditAndRevertLinks() {
// alert (for old monobooks)
if (minimalVersion(60) < 60) 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;
else {
// is_diff
// linke Seite?
if (mainNode.getElementsByTagName("A")[i+3].innerHTML == "Diskussion")
rvuser = mainNode.getElementsByTagName("A")[i+2].innerHTML;
// rechte Seite
else
rvuser = mainNode.getElementsByTagName("A")[i+3].innerHTML;
}
// kleiner Hack für Username mit '&'
rvuser = rvuser.split('&').join('&');
var defaultgrund = 'Revert auf Version vom ' + rvtsdate +
((rvtstime == '')? '' : (' (' + rvtstime + ')'));
if (revlinkshowuser)
defaultgrund = 'Revert auf Version von [[Benutzer:' + rvuser + ']] (' + rvtsdate +
((rvtstime == '')? '' : (', ' + rvtstime)) + ')';
var Rvnode = document.createElement('a');
Rvnode.setAttribute('href', 'javascript:revertme("' + encodeURI(href) + '", "' + defaultgrund + '")');
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 revertme (href, defaultgrund) {
var detailgrund = prompt(defaultgrund, aearldefault);
if (detailgrund == null) return;
detailgrund = trim(detailgrund);
// detailgrund-shortcuts von [[Benutzer:-jha-]]
switch (detailgrund) {
case "for":
case "web": detailgrund='Link bietet keine [[WP:WEB|weiterführenden lexikographischen Informationen]].';
break;
case "pop": detailgrund='Link führte zu Website mit bevormundender Navigation (siehe auch [[WP:WEB]]).';
break;
case "dis": detailgrund='Bitte Diskussionsseite beachten.';
break;
case "rere": detailgrund='Bitte zunächst auf der Diskussionsseite einen Konsens herstellen.';
break;
case "va":
case "ba": detailgrund='Grund: Vandalismus.';
break;
case "er": detailgrund='Eigenrevert! (Ich muss wohl mal wieder zum Optiker...)';
break;
case "unt": detailgrund='Nicht unterschriebenen Diskussionsbeitrag entfernt (siehe auch [[WP:SIG]]).';
break;
case "unf": detailgrund='Grund: Unfall in der Editbox';
break;
case "twl": detailgrund='Bitte keine externen Links (Weblinks) im Artikeltext selbst angeben (siehe auch [[WP:WEB]]).';
break;
case "blau": detailgrund='Bitte keine extreme Überverlinkung (siehe auch [[WP:BLAU]]).';
break;
case "blau2": detailgrund='[[Bitte]] [[keine]] [[Links]] [[ohne]] [[Bezug]] zum [[Thema]] [[reinsetzen]]. [[Danke]].';
break;
case "komm": detailgrund='Kommentare gehören nicht in den Artikel, sondern auf die Diskussionsseite.';
break;
case "qa": detailgrund='Bitte inhaltliche Änderungen mit Fundstellen/Belegen/Quellen begründen (siehe auch [[WP:BLG]]) und künftig den Hinweis "[[WP:ZQ|Zusammenfassung und Quellen]]" nutzen.';
break;
case "rl": detailgrund='Relevanz fraglich. Bei Beispielaufzählungen mit mehreren "blauen" Links keine "roten" Links hinzufügen. Relevanz durch Anlegen der entsprechenden Artikel klären (siehe [[WP:VL]]).';
break;
case "pov": detailgrund='Beitrag widerspricht dem Grundsatz des [[WP:NPOV|Neutralen Standpunktes]].';
break;
case "wl": detailgrund='Nicht begründete/nachvollziehbare Ver-/Entlinkung. Bitte begründen! ([[WP:ZQ|Zusammenfassung und Quellen]] oder ggf. Diskussionsseite nutzen.)';
break;
case "loe": detailgrund='Nicht begründete/nachvollziehbare Entfernung längerer Textabschnitte. Bitte begründen! ([[WP:ZQ|Zusammenfassung und Quellen]] oder ggf. Diskussionsseite nutzen.)';
break;
case "wwni": detailgrund='Form des Beitrages vermittelt kein enzyklopädisches Wissen. Bitte die Grundsätze in [[WP:WWNI|Was Wikipedia nicht ist]] beachten.';
break;
case "enz": detailgrund='Beitrag nicht von enzyklopädischer Textqualität. Bitte "[[WP:WSIGA|Wie schreibe ich einen guten Artikel]]" beachten.';
break;
case "otrs": detailgrund='OTRS-Freigabe ist eingetroffen, bitte siehe die Diskussionsseite des Artikels.';
break;
case "man": detailgrund='Bitte keine fremden Diskussionsbeiträge verändern.';
break;
}
// sicherstellen, dass Begründung in die Zusammenfassungszeile passt
if (EditCommentLength(defaultgrund+detailgrund+2) < 0) {
// zu lang, also erstmal den defaultgrund kürzen
defaultgrund = 'Revert';
var commenttoolong = true;
while ((commenttoolong == true) && (detailgrund != null)) {
if ((superflu=EditCommentLength(defaultgrund+detailgrund+2)) < 0)
detailgrund = prompt("Die Begründung ist leider etwas zu lang.\nBitte um "+(0-superflu)+" Zeichen kürzen.", detailgrund);
else
commenttoolong = false;
}
}
if (detailgrund == null) return;
if (detailgrund=='') grund = trim(defaultgrund);
else grund = defaultgrund + ((defaultgrund == 'Revert')? ': ' : '. ') + detailgrund;
href = href + "&action=edit&" + asuserp + "=" + generate_asuser() + "&" + astimep + "=" + generate_astime() + "&" + subjp + "=" + encodeURIComponent(grund);
if (rvisminor) href = href + "&" + minorp + "=1";
if (aearlhere)
window.open (href,'_self','',true);
else
window.open (href,'_blank');
window.focus();
}
// END revertme
// ============================================================
addOnloadHook(addEditAndRevertLinks);
// </nowiki>