Benutzer:Codeispoetry/replaceCommonsLinks.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
/*global SimpleUI, DOM, getBody, WikiLinker, SimpleAjax */
var CommonsReplacer = {
Files: null,
init: function () {
SimpleUI.Box('Dateien werden gesucht …', 'com-r');
var join = new Join(
CommonsReplacer.checkDupe,
0);
var images = DOM.fetch(getBody(), 'img');
for (var n = 0 ; n < images.length ; ++n) {
if (images[n].src.search('/skins-1.5/common/images/magnify-clip.png') === -1) {
var filename = images[n].src.match(/^http:\/\/upload\.wikimedia\.org\/wikipedia\/([^\/]+)\/(thumb\/)?.\/..\/([^\/]+)/);
if (filename && filename[1] !== 'commons') {
CommonsReplacer.Files = [];
join.total++;
SimpleAjax.get(images[n].parentNode.href, '', function (req) {CommonsReplacer.Files.push(req); join.check();});
}
}
}
join.finalize();
},
checkDupe: function () {
if (CommonsReplacer.Files.length === 0) {
SimpleUI.Box('Alles fertig!', 'com-r');
document.editform.wpSummary.value += 'Bild durch Commonsversion ersetzt';
return;
}
var obj = SimpleAjax.getResponseXML(CommonsReplacer.Files.pop());
var dupes = obj.getElementById('mw-imagepage-section-duplicates');
if (!dupes) {
CommonsReplacer.checkDupe();
return;
}
dupes = dupes.getElementsByTagName('li');
for (var n = 0 ; n < dupes.length ; ++n) {
if (dupes[n].getElementsByTagName && dupes[n].getElementsByTagName('a')[0].href.search(/http:\/\/commons\.wikimedia\.org/) === 0) {
CommonsReplacer.replaceImageLink(obj.getElementsByTagName('h1')[0].innerHTML.match(/Datei:(.+)$/)[1], dupes[n].getElementsByTagName('a')[0].innerHTML.match(/Datei:(.+)$/)[1]);
return;
}
}
},
replaceImageLink: function (oldtext, newtext) {
var editbox = document.editform.wpTextbox1;
var plainimglink = WikiLinker.createLinkRegExp(oldtext, 6, false);
if (editbox.value.search(plainimglink) > -1) {
SimpleUI.Box('„' + oldtext + '“ wurde durch „' + newtext + '“ ersetzt.', 'com-r');
editbox.value = editbox.value.replace(plainimglink, '[[Datei:' + newtext + '$1]]');
CommonsReplacer.checkDupe();
return;
}
var galeriesimglink = new RegExp('<gallery([ _]*perrow[ _]*=[ _]*"\\d+"[ _]*)?>((?:[^<]|(?:<[^g]))+)' + WikiLinker.createFirstCharInsensStringMatch(oldtext) + '((?:[^<]|(?:<[^g]))+)<\/gallery>');
if (editbox.value.search(galeriesimglink ) > -1) {
SimpleUI.Box('„' + oldtext + '“ wurde durch „' + newtext + '“ ersetzt.', 'com-r');
editbox.value = editbox.value.replace(galeriesimglink, '<gallery$1>$2' + newtext + '$3</gallery>');
CommonsReplacer.checkDupe();
return;
}
SimpleUI.AlertBox('„' + oldtext + '“ konnte nicht automatisch durch „' + newtext + '“ ersetzt werden.', [ ['Weiter', CommonsReplacer.checkDupe] ], 'com-r');
}
};