Benutzer:PDD/dellink-nc.js
aus Wikipedia, der freien Enzyklopädie
< Benutzer:PDD
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 23. Januar 2021 um 18:27 Uhr durch imported>Jon (WMF)(2262197) (maintenance: more info ReferenceError: EditCommentLength is not defined).
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
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
/*
* dellink-nc.js
*
* Autor: [[Benutzer:Revvar]], [[Benutzer:PDD]], [[Benutzer:Codeispoetry]]
* Quelle: [[Benutzer:Revvar/dellink nowcommons.js]]
*
* lokal übernommen wegen konsistenter Einbindung
*
* Dokumentation:
* - Direkt über dem NowCommons-Baustein erscheinen Buttons zur Bearbeitung der Datei im Rahmen der NowCommons-Abarbeitung
* - Löschen: Öffnet die Spezial:Löschen-Seite mit eingetragener Begründung. Bei Verwendung des DerHexer-Monobooks kann die Datei auch sofort gelöscht werden; außerdem wird ein zusätzlicher Link für das normale, langsame Löschen angezeigt.
* - Behalten: Ein Bearbeitungsfenster mit entferntem NowCommons-Baustein wird geöffnet, die Commons-Version wird unter 'Andere Versionen' eingetragen.
* - Mängel: Ersetzt den NowCommons- durch einen NowCommons-Mängel-Baustein.
* - Mängel+DÜP: Ersetzt den NowCommons- durch einen NowCommons-Mängel-Baustein, setzt den DÜP-Baustein.
* - Nächstes: Springt zum nächsten Bild in der Kategorie, nur wenn nextItem() vorhanden ist, siehe unten
* - Unter den Buttons zur Bearbeitung erscheinen gegebenenfalls Warnungen
* - Verwendung: Die Commonsversion hat einen anderen Namen und die lokale Kopie wird noch verwendet.
* - Disku: Es existiert eine Diskussionsseite.
* - NoCommons: Die Bildbeschreibungsseite enthält einen NoCommons-Baustein. Besondere Vorsicht ist nötig.
* - Nicht-identisch: Die Commonsversion hat einen anderen Hash als die lokale
*
* Einbindung:
* - Führt sich selbst aus, lediglich Einbindung ist nötig
* - Keine Überprüfung, ob im Bildnamensraum
* - Als HTTP-Get-Variable wird 'nc_keep' verwendet
*
* Abhängigkeiten:
* - deleting(): Funktion zur sofortigen Löschung (DerHexer; optional)
* - AdminActions.delete(): Funktion zur sofortigen Löschung (Codeispoetry; optional)
* - nextItem(): Funktion zum Kategorie-Navigieren (optional)
* - UrlParameters[]: Array der HTTP-GET-Variablen
* - adminflag: Gibt an, ob der Benutzer Administrator ist (optional)
* - EditCommentLength: Überprüft die Kommentarlänge
*
*/
// <nowiki>
// aus [[Benutzer:D/monobook/api.js]]
/** escapes characters to make them usable as a literal in a RegExp */
String.prototype.escapeRE = function() {
return this.replace(/([{}()|.?*+^$\[\]\\])/g, "\\$1");
};
function newActionBar (id) {
var bar = document.createElement('DIV');
bar.style.textAlign = 'center';
bar.style.width = '100%';
bar.id = id;
bar.addLink = function (caption, title, href, onclick) {
var link = document.createElement('a');
if (href != '') link.href = href;
if (typeof onclick != 'undefined') {
link.setAttribute('onclick', onclick);
link.style.cursor = 'pointer';
}
link.innerHTML = caption;
link.title = title;
this.appendChild(link);
this.appendChild(document.createTextNode(' '));
}
return bar;
}
var NowCommons = {
KeepParameterName: 'nc_keep',
TemplateMatch: new RegExp(/{{\s*([Vv]orlage:|[Tt]emplate:)?\s*[Nn](CT?|ow[Cc]ommons)\s*(\|(\s*[^}]+\s*))?}}/),
GleicherName: false,
CommonsName: '',
Baustein: null,
init: function () {
var nc_keep = UrlParameters[NowCommons.KeepParameterName];
if (!nc_keep) {
NowCommons.Baustein = document.getElementById("Vorlage_NowCommons");
if (!NowCommons.Baustein)
return;
NowCommons.getCommonsName();
if (!NowCommons.CommonsName)
return;
NowCommons.markProblems();
NowCommons.addActionLinks();
}
else if (nc_keep == 1)
NowCommons.keepLocalCopy();
else if (nc_keep == 2)
NowCommons.markMängel();
else if (nc_keep == 4)
NowCommons.markMängelDÜP();
},
addActionLinks: function () {
var normal_link = mw.config.get( 'wgScriptPath' ) + '/index.php?title=' + mw.config.get( 'wgPageName' );
var action_div = newActionBar('NowCommons_Actions');
// Löschbutton(s) bauen.
if (typeof adminflag == 'undefined' || adminflag) {
var del_grund = 'Eine identische Datei ist auf Commons [[:commons:File:' + NowCommons.CommonsName + '|verfügbar]]' + (NowCommons.GleicherName ? '.' : ', alle Referenzen wurden ersetzt.');
if ( typeof EditCommentLength !== 'undefined' && EditCommentLength(del_grund) > -55 )
del_grund = del_grund + ' Sämtliche Metainformationen wurden korrekt übertragen.';
var normal_dellink = normal_link + '&action=delete&wpReason=' + encodeURIComponent(del_grund);
var createNormal = false;
var del_a = document.createElement('a');
del_a.style.fontWeight = 'bold';
del_a.style.fontSize = '150%';
del_a.style.cursor = 'pointer';
del_a.innerHTML = 'Löschen';
if ( typeof AdminActions != 'undefined' && typeof AdminActions.deletePage == 'function' ) { // Codeispoetry-Löschen
del_a.setAttribute('onclick', 'AdminActions.deletePage("' + del_grund + '", function() { nextItem("NowCommons", 6); });');
del_a.title = 'Löscht die Datei sofort mit einer passenden Begründung';
createNormal = true;
} else if ( typeof deleting == 'function' ) { // DerHexer-Löschen
del_a.setAttribute('onclick', 'deleting("' + del_grund + '");');
del_a.title = 'Löscht die Datei sofort mit einer passenden Begründung';
createNormal = true;
} else {
del_a.href = normal_dellink;
del_a.title = 'Löscht die Datei über die normale Mediawiki-Oberfläche';
createNormal = false;
}
action_div.appendChild(del_a);
action_div.appendChild(document.createTextNode(' '));
if (createNormal) {
action_div.addLink('(Langsam)', 'Löscht die Datei über die normale Mediawiki-Oberfläche', normal_dellink);
}
}
action_div.addLink('Behalten', 'Entfernt die NowCommons-Vorlage und fügt einen Hinweis hinzu', normal_link + '&action=edit&' + NowCommons.KeepParameterName + '=1');
action_div.addLink('Mängel', 'Ersetzt die NowCommons-Vorlage durch NowCommons/Mängel', normal_link + '&action=edit&' + NowCommons.KeepParameterName + '=2');
action_div.addLink('Mängel+DÜP', 'Ersetzt die NowCommons-Vorlage durch NowCommons/Mängel, ergänzt {{DÜP}}', normal_link + '&action=edit&' + NowCommons.KeepParameterName + '=4');
if ('function' == typeof window.nextItem) {
action_div.addLink('Nächstes', 'Springt zur nächsten als NowCommons markierten Datei', '', "nextItem('NowCommons', 6)");
}
NowCommons.Baustein.insertBefore(action_div, NowCommons.Baustein.firstChild);
},
markProblems: function () {
var prob_div = document.createElement('div');
prob_div.style.color = '#ff0000';
prob_div.style.width = '100%';
prob_div.style.textAlign = 'center';
prob_div.id = 'NowCommons_Problems';
prob_div.addItem = function (caption, title) {
var item = document.createElement('span');
item.innerHTML = caption;
item.title = title;
this.appendChild(item);
this.appendChild(document.createTextNode(' '));
}
// Noch verwendete Datei mit anderem Commonsnamen
if (!NowCommons.GleicherName) {
if (document.getElementById('mw-imagepage-section-linkstoimage')) {
prob_div.addItem ('Verwendung', 'Die Datei liegt auf Commons unter einem anderen Namen und wird noch verwendet.');
} else if (mw.config.get('wgAction') === 'view' && !document.getElementById('mw-imagepage-nolinkstoimage')) {
prob_div.addItem ('Verwendung:Bug!', 'Verwendungen konnten nicht bestimmt werden, vermutlich ein Bug im NowCommons-Script.');
} else if (mw.config.get('wgAction') === 'edit') {
prob_div.addItem ('Verwendung?', 'Verwendungen konnten nicht bestimmt werden, da im Vorschaumodus');
}
}
// existierende Diskussionsseite
if (document.getElementById('ca-talk').className != 'new')
prob_div.addItem ('Disku', 'Eine Diskussionsseite existiert.');
// NoCommons-Baustein
if ( document.getElementById('Vorlage_NoCommons') )
prob_div.addItem ('NoCommons', 'Auf der Dateibeschreibungsseite ist ein NoCommons-Hinweis eingebunden');
// Commons-Version identisch?
var found = false;
var dupesection = document.getElementById('mw-imagepage-section-duplicates');
if (dupesection != null) {
var lis = dupesection.getElementsByTagName('li');
for (var n = 0 ; n < lis.length ; ++n) {
var regexp = new RegExp(('http://commons.wikimedia.org/wiki/Image:' + NowCommons.CommonsName).escapeRE().replace(/[_ ]/g, '[_ ]'));
if (decodeURIComponent(lis[n].getElementsByTagName('a')[0].getAttribute('href')).search(regexp) === 0) {
found = true;
break;
}
}
}
if (dupesection == null || !found)
prob_div.addItem ('Nicht-identisch', 'Die Commonsversion ist nicht vorhanden oder nicht identisch.');
NowCommons.Baustein.insertBefore(prob_div, NowCommons.Baustein.firstChild);
NowCommons.Baustein.insertBefore(document.createElement('span'), prob_div.nextSibling); // stupid IE fix.
},
keepLocalCopy: function () {
NowCommons.getCommonsName();
if (!NowCommons.CommonsName)
return;
var textbox = document.editform.wpTextbox1;
textbox.value = textbox.value.replace(NowCommons.TemplateMatch,'');
var commons_text = "[[commons:File:" + NowCommons.CommonsName + "|Commons-Version]] (zur Sicherheit sollte die lokale Kopie behalten werden)";
var infoversions = new RegExp(/\|Andere[ _]Versionen\s*=/);
var lizenz = new RegExp(/==[^=]*Lizenz[^=]*==/);
if (textbox.value.match(infoversions))
textbox.value = textbox.value.replace(infoversions, "|Andere Versionen = " + commons_text)
else if (textbox.value.match(lizenz))
textbox.value = textbox.value.replace(lizenz , "* Andere Versionen: " + commons_text + "\n\n== Lizenz ==")
else
textbox.value = textbox.value + "* Andere Versionen: " + commons_text;
document.editform.wpSummary.value = "Diese Datei ist auf Commons nicht sicher, die lokale Kopie sollte behalten werden.";
},
markMängel: function () {
var textbox = document.editform.wpTextbox1;
textbox.value = textbox.value.replace(NowCommons.TemplateMatch, "{{NowCommons/Mängel$3}}");
document.editform.wpSummary.value = "NowCommons/Mängel";
},
markMängelDÜP: function () {
NowCommons.markMängel();
document.editform.wpSummary.value = document.editform.wpSummary.value + ", DÜP";
document.editform.wpTextbox1.value = "{{Dateiüberprüfung|Quelle|Urheber|Lizenz|Freigabe}}\n\n" + document.editform.wpTextbox1.value;
},
getCommonsName: function () {
if (document.location.toString().match(/action=(edit|submit)/)) {
NowCommons.CommonsName = document.editform.wpTextbox1.value.match(NowCommons.TemplateMatch)[4];
if (!NowCommons.CommonsName) {
NowCommons.CommonsName = mw.config.get('wgTitle');
NowCommons.GleicherName = true;
}
}
else {
var a = NowCommons.Baustein.getElementsByTagName('A');
for (var i = 0; i < a.length; i++) {
var a_class = a[i].className;
if ((((a_class) && ("extiw" == a_class) && (a[i].title.search(/^commons:/i) == 0)) || (a[i].href && a[i].href.search("http://commons.wikimedia.org/wiki/File:")==0)) && a[i].title != "commons:Hauptseite") {
NowCommons.CommonsName = a[i].title.match(/^[Cc]ommons:\s*[Ff]ile\s*:\s*(.+)$/)[1];
if (a[i].innerHTML.search("dem selben Namen") >= 0)
NowCommons.GleicherName = true;
}
}
}
}
}
$(document).ready(NowCommons.init);
// </nowiki>