Zum Inhalt springen

Benutzer:Codeispoetry/replaceCommonsLinks.js

aus Wikipedia, der freien Enzyklopädie

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');
	}
};