Benutzer:TenWhile6/GRNHelper.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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
var v = 'v1.1'
var n = 'GRNHelper'
var GRNHelper = n + ' ' + v
var config = [n, `${n} ${v}`, `[[User:TenWhile6/${n}|${n}]]`, `[[User:TenWhile6/${n}|${n}]] ${v}`];
function execute() {
    const wikiPage = 'Wikipedia:Benutzernamen_ändern';
    function openDialog() {
        const api = new mw.Api();
        api.get({
            action: 'parse',
            page: wikiPage,
            prop: 'sections',
            format: 'json'
        }).then(function(data) {
            if (data && data.parse && data.parse.sections) {
                let dialogContent = '<form><fieldset>';
                dialogContent += '<h3>Warteschlange 🐍 </h3>';
                data.parse.sections.forEach(function(section) {
                    if (section.index > 1) {
                    dialogContent += `<label><input type="radio" name="section" id="${section.index}" value="${section.index}" />${section.line}</label><br>`;
                    lastsection = section.index;}
                });
                try {$(`#${lastsection}`).prop('checked', true);}catch{mw.notify('Warteschlange derzeit leer');return;}
                dialogContent += '<h3>Aktion</h3>';
                dialogContent += `<label><input type="radio" name="edit" value="Ok" /> Annehmen</label><br>`;
                dialogContent += `<label><input type="radio" name="edit" value="Nein1" /> Ablehnen (Ungeeignet)</label><br>`;  
                dialogContent += `<label><input type="radio" name="edit" value="Nein2" /> Ablehnen (keine Antwort)</label><br>`;    
                dialogContent += `<label><input type="radio" name="edit" value="Nein3" /> Ablehnen (Name bereits vergeben)</label><br>`;
                dialogContent += `<label><input type="radio" name="edit" value="Nein4" /> Ablehnen (Name ist anderem zu ähnlich)</label><br>`;
                dialogContent += `<label><input type="radio" name="edit" value="Nein5" /> Ablehnen (andere Begründung)</label><br>`;
                dialogContent += `<label><input type="radio" name="edit" value="R" /> Abwartend (Rückfrage)</label><br>`;
                dialogContent += '<div style="text-align: center;"><h6 style="color: red;">Made with ❤️ by <a href="https://de.wikipedia.org/wiki/User:TenWhile6">TenWhile6</a></h6></div></fieldset></form>';
                const $dialog = $(dialogContent).dialog({
                    title: config[1],
                    modal: true,
                    width: 400,
                    buttons: {
                        "OK": function() {
                            const sectionIndex = $('input[name=section]:checked').val();
                            const editValue = $('input[name=edit]:checked').val();
                            const sectionTitle = data.parse.sections[sectionIndex-1].line;
                            sum = 'not done'
                            switch (editValue) {
                                case 'Ok':
                                    addedtext = '{{Ok}} umbenannt';
                                    sum = 'done'
                                    break;
                                case 'Nein1':
                                    addedtext = '{{Nein}}, ungeeigneter Benutzername, vgl. [[H:AM#Ungeeignet]]';
                                    break;
                                case 'Nein2':
                                    addedtext = '{{Nein}}, keine Antwort auf Rückfrage(n)';
                                    break;
                                case 'Nein3':
                                    addedtext = '{{Nein}}, der Benutzername ist bereits vergeben.';
                                    break;
                                case 'Nein4':
                                    addedtext = '{{Nein}}, der Benutzername ist [[Special:CentralAuth/' + prompt('Benutzername:') + '|einem Anderen]] zu ähnlich.';
                                    break;
                                case 'Nein5':
                                    addedtext = '{{Nein}}, ' + prompt('{{Nein}}, [Begründung eingeben]');
                                    break;
                                case 'R':
                                    addedtext = '{{Abwartend}} — ' + prompt('Rückfrage:','{{ping|BENUTZER}} FRAGE');
                                    sum = "on hold"
                                    break;
                            }
                            api.get({
                                action: 'parse',
                                page: wikiPage,
                                prop: 'wikitext',
                                section: sectionIndex,
                                format: 'json'
                            }).done(function(result) {
                                let wikitext = result.parse.wikitext['*'];
                                wikitext += `\n\n${addedtext} --~~`+'~~';
                                if (editValue !== 'R') {wikitext+= '\n{{erledigt|--~~'+'~~}}';}
 
                                api.postWithEditToken({
                                    action: 'edit',
                                    title: wikiPage,
                                    section: sectionIndex,
                                    text: wikitext,
                                    summary: `/* ${sectionTitle} */ ${sum} (${config[3]})`,
                                    notminor: true,
                                    nocreate: true,
                                    format: 'json'
                                }).done(function(result) {
                                    if (result && result.edit && result.edit.result === 'Success') {
                                        //alert(`Der Text "${editValue}" wurde erfolgreich zum Abschnitt ${sectionIndex} hinzugefügt.`);
                                        location.reload();
                                    } else {
                                        console.error('Fehler beim Hinzufügen des Textes:', result);
                                    }
                                }).fail(function(err) {
                                    console.error('Fehler beim Hinzufügen des Textes:', err);
                                });
                            }).fail(function(err) {
                                console.error('Fehler beim Abrufen des Abschnitts:', err);
                            });

                            $(this).dialog('close');
                        },
                        "Abbrechen": function() {
                            $(this).dialog('close');
                        }
                    }
                });
            } else {
                mw.notify('Keine Abschnitte gefunden.',{'type':'warn','title':GRNHelper});
            }
        }).fail(function(err) {
            mw.notify('Fehler beim Abrufen der Abschnitte:',{'type':'error','title':GRNHelper});
        });
    }
    openDialog();
}
if (mw.config.get('wgPageName') === 'Wikipedia:Benutzernamen_ändern' && mw.config.get('wgDBname') === 'dewiki') {
(function(mw, $) {
    function init() {
        mw.loader.using(['mediawiki.api', 'mediawiki.util', 'jquery.ui']).then(function() {
            var portletLink = mw.util.addPortletLink(
                'p-search',
                '#',
                config[0],
                'ca-adduser',
                `${config[1]} ausführen`,
                null,
                '#ca-adduser'
            );
            $(portletLink).click(function(e) {
                e.preventDefault();
                execute();
            });
        });
    }
    $(init);
}(mediaWiki, jQuery));}