MediaWiki:Gadget-importUtility/inarbeit.js
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
// Setze auf [[Wikipedia:Importwünsche]] Abschnitte "in Arbeit"
(function() {
'use strict';
// Stelle sicher, dass dieses Script nur einmal ausgeführt wird
if (window.iuinarbeitScriptExecuted) {
return;
}
window.iuinarbeitScriptExecuted = true;
// Überprüfe, ob der Benutzer sich auf der richtigen Seite befindet und die erforderlichen Rechte hat
const pageName = 'Wikipedia:Importwünsche';
if (mw.config.get('wgPageName') === pageName && ['sysop', 'import', 'transwiki'].some(group => mw.config.get('wgUserGroups').includes(group))) {
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function() {
// Füge "in Arbeit"-Buttons zu allen Überschriften hinzu, die noch nicht entsprechend markiert sind
$('#bodyContent').find('.mw-heading :header[id], .mw-headline[id]').each(function() {
if (!$(this).text().includes('(in Arbeit)')) {
$(this).after('<button class="iu-inarbeit" style="cursor:pointer; margin-left:1em;" data-heading-id="' + $(this).attr('id') + '">in Arbeit</button>');
}
});
// Event-Handler für Click auf "in Arbeit"-Button
$('.iu-inarbeit').on('click', function() {
const currentText = $('#' + CSS.escape($(this).data('heading-id'))).text();
const sectionNumber = parseInt($(this).siblings('.mw-editsection').find('a').attr('href').replace(/^.*?(\d+)$/, '$1'), 10);
if (!currentText.includes("(in Arbeit)")) {
const editSummary = `/* ${currentText} */ in Arbeit`;
const userName = mw.config.get('wgUserName');
// Hole den aktuellen Inhalt des Abschnitts
new mw.Api().get({
action: 'parse',
page: pageName,
prop: 'wikitext',
section: sectionNumber
}).done(function(data) {
const sectionContent = data.parse.wikitext['*'];
const headingMatch = sectionContent.match(/^(=+[^=\n]+?=+)\s*\n/);
if (headingMatch) {
// Aktualisiere den Inhalt mit der "In Arbeit"-Vorlage
const updatedContent = sectionContent.replace(
headingMatch[0],
headingMatch[1].replace(/([^=]+)/, '$1(in Arbeit) ') + '\n{{/In Arbeit|' + userName + '|~~' + '~' + '~~}}\n'
);
// Speichere die Änderungen und lade die Seite neu
new mw.Api().postWithToken('csrf', {
action: 'edit',
title: pageName,
section: sectionNumber,
text: updatedContent,
summary: editSummary
}).done(function() {
window.location.reload(true);
}).fail(function(error) {
mw.notify('Failed to mark section as in progress: ' + error, {type: 'error'});
});
} else {
mw.notify('Failed to find section heading', {type: 'error'});
}
}).fail(function(error) {
mw.notify('Failed to fetch section content: ' + error, {type: 'error'});
});
}
});
});
}
})();