Benutzer:TenWhile6/messageHelper.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
//<nowiki>
mHv = 'v1.0b';
mHn = 'messageHelper';
messageHelper = [mHn, `${mHn} ${mHv}`, `[[User:TenWhile6/${mHn}|${mHn}]]`, `[[User:TenWhile6/${mHn}|${mHn}]] ${mHv}`];
standardTemplates = ['{{ers:Hallo}}', '{{ers:Welcome}}', '{{ers:Test}}', '{{ers:Benutzernamensverifizierung}}', '{{ers:Marketing|EINGABE}}', '{{ers:Werbung}}', '{{ers:Verschoben|EINGABE||1}}'];
function messageHelperexecute() {
    const wikiPage = mw.config.get('wgPageName');
    const api = new mw.Api();
    let dialogContent = '<form><fieldset>';
    dialogContent += '<legend>Verfügbare Vorlagen</legend>';
    standardTemplates.forEach(function(element) {
        dialogContent += `<label><input type="checkbox" name="edit" value=${element} /> ${element}</label><br>`;
    });
    dialogContent += `</fieldset>`;
    if (typeof messageHelperConfig === 'undefined' || typeof messageHelperConfig.userTemplates === 'undefined' ) {
		dialogContent += `<fieldset><legend>Benutzerdefinierte Vorlagen</legend><p>Nicht konfiguriert. <sup><b><a href="https://de.wikipedia.org/wiki/Benutzer:TenWhile6/messageHelper">Wie geht das?</a></b></sup></p></fieldset>`;
	} else {
		try {
			if (messageHelperConfig.userTemplates.length === 0) {
			    dialogContent += `</form>`;
			} else {
                dialogContent += `<fieldset><legend>Benutzerdefinierte Vorlagen</legend>`;
				messageHelperConfig.userTemplates.forEach(function(element) {
					  dialogContent += `<label><input type="checkbox" name="edit" value="{{ers:${element}}}" /> {{ers:${element}}}</label><br>`;
				});
                dialogContent += `</fieldset>`;
			}
		} catch {
			dialogContent += `<p>Fehlerhafte Konfiguration! <sup><b><a href="https://de.wikipedia.org/wiki/Benutzer:TenWhile6/messageHelper">Hilfe</a></b></sup></p></fieldset>`;
		}
	}
    dialogContent += '<div style="position:absolute; right:1em; top:0.1em"><p style="color:red">Made with ❤️ by <a href="https://de.wikipedia.org/wiki/User:TenWhile6">TenWhile6</a></div></form>';
    const $dialog = $(dialogContent).dialog({
        title: messageHelper[1],
        modal: true,
        width: 580,
        buttons: {
            "OK": function() {
            	var relevantUserName = mw.config.get('wgRelevantUserName') || '';
                if (!relevantUserName) {
                    mw.notify(`Error: Kein Benutzername erkannt.`,{'type':'error','title':messageHelper[1]});
                    return;
                }
                sum = "leer";
                const selectedValues = $('input[name=edit]:checked').map(function() {
                    value = $(this).val();
                    if (value == '{{ers:Benutzernamensverifizierung}}') {
                		var date = new Date();
            			var year = date.getFullYear();
                		var month = date.toLocaleString('de-DE', { month: 'long' });
                		var pagename = 'Wikipedia:Benutzerverifizierung/Benutzernamen-Ansprachen/' + month + year;
                		var reason = prompt('Bitte gib eine Begründung ein:', 'bearbeitet [[SEITENNAME]]');
                		if (reason === null) {
                			return;
                		}
                		var api = new mw.Api();
                		api.post({
                    		action: 'query',
                    		titles: pagename,
                    		prop: 'revisions',
                    		rvprop: 'content',
                    		rvslots: 'main',
                    		formatversion: '2'
                		})
                		.then(function(response) {
                    		var page = response.query.pages[0];
                    		var content = page.revisions[0].slots.main.content;
                    		var script = "[[User:TenWhile6/messageHelper|messageHelper]]/[[User:TenWhile6/AddToVeriList|AddToVeriList]]";
                    		var newText = content.replace(/\|\}/g, "|-\n| {{Benutzer|" + relevantUserName + "}}\n| {{DatumZelle|{{ers:LOKALES_JAHR}}-{{ers:LOKALER_MONAT}}-{{ers:LOKALER_TAG_2}} {{ers:LOKALE_UHRZEIT}}|T._Mon4 JJJJ hh:mm:ss}}\n|~~"+"~<br><small><small>(mit " + script + ")</small></small>\n| " + reason + "\n|}");
                    		api.postWithEditToken({
                        		action: 'edit',
                        		title: pagename,
                        		watchlist: 'nochange',
                        		summary: 'Ergänze „' + relevantUserName + '“ (mit ' + script + ')',
                        		text: newText
                    		})
                    		.then(function() {
                        		console.log('x');
                    		})
                    		.fail(function(e) {
                        		console.log(`Fehler beim Aktualisieren des Seiteninhalts: ${e}`);
                    		});
                		})
                		.fail(function(e) {
                    		console.log(`Fehler beim Aktualisieren des Seiteninhalts: ${e}`);
                		});
					}
                    if (value == '{{ers:Verschoben|EINGABE||1}}') {
						input = prompt('Artikelname:');
						if (!(input === null || input === '')) {
						    value = `{{ers:Verschoben|${input}||1}}`;
                        } else {
                        	value = '';
                        	mw.notify(`Achtung: Kein Artikel angegeben. {{ers:Verschoben}} wurde daher nicht gesetzt.`,{'type':'warn','title':messageHelper[1]});
                        }
					}
					if (value == '{{ers:Marketing|EINGABE}}') {
						input=prompt('Artikelname (optional, sonst leer lassen)');
						if (input === null || input === '') {
							value = '{{ers:Marketing}}';
						}
						else {
							value = `{{ers:Marketing|${input}}}`;
						}
					}
                    if (value == '{{ers:Test}}') {
                        value = "== Hinweis ==\n{{ers:Test}}<!--Huggle:Level-1-->";
                    }
					if (['{{ers:Hallo}}', '{{ers:Begrüßungsbox}}', '{{ers:Welcome}}'].includes(value)) {
						sum = "Willkommen";
					}
					else if (value == '{{ers:Ungeeigneter Benutzername}}') {
                        value = "== Ungeeigneter Benutzername ==\nHallo „"+relevantUserName+"“,\n\n[[Wikipedia:Warum sich hier alle duzen|dein]] Benutzername ist gemäß [[H:AM#Ungeeignet]] Punkt 5 ungeeignet, da er [[Uniform Resource Locator|Internetadresse]] bzw. wie eine [[IP-Adresse]] aussieht.\n\nBitte ändere ihn <u>schnellstmöglich</u> mithilfe eines Antrages auf [[Wikipedia:Benutzernamen ändern]] oder [[Special:GlobalRenameRequest]].\n\nOhne Umbenennung musst du mit der '''Stilllegung deines Benutzerkontos''' rechnen.\n\nLG, --~~"+"~~";
                    }
                    return `${value}`;
                }).get();
                if (sum == 'leer') {
                	sum = "Hinweis";
                }
                if (selectedValues.length > 0) {
                    let currentWikitext = '';
                    try {
                        api.get({
                            action: 'parse',
                            page: wikiPage,
                            prop: 'wikitext',
                            format: 'json'
                        }).done(function(result) {
                            currentWikitext = result.parse.wikitext['*'];
                        });
                    } catch (error) {
                        mw.notify(`Error: Fehler beim Abrufen des bestehenden Wikitexts.`,{'type':'error','title':messageHelper[1]});
                    }
                    selectedValues.forEach(function(editValue) {
                        currentWikitext += `\n${editValue}`;
                    });
                    api.postWithEditToken({
                        action: 'edit',
                        title: wikiPage,
                        appendtext: currentWikitext,
                        summary: `${sum} (${messageHelper[3]})`,
                        notminor: true,
                        format: 'json',watchlist:'nochange'
                    }).done(function(result) {
                        if (result && result.edit && result.edit.result === 'Success') {
                            location.reload();
                        } else {
                            mw.notify(`Error: Fehler beim Hinzufügen der Texte.`,{'type':'error','title':messageHelper[1]});
                        }
                    }).fail(function(err) {
                    	mw.notify(`Error: Fehler beim Hinzufügen der Texte.`,{'type':'error','title':messageHelper[1]});
                    });

                    $(this).dialog('close');
                } else {
                	mw.notify(`Achtung: Bitte wähle mindestens eine Aktion aus.`,{'type':'warn','title':messageHelper[1]});
                }
            },
            "Abbrechen": function() {
                $(this).dialog('close');
            }
        }
    });
}

if (mw.config.get("wgNamespaceNumber") == 3) {
    mw.loader.using(['mediawiki.api', 'mediawiki.util', 'jquery.ui']).then(function() {
        var portletWLink = mw.util.addPortletLink(
           'p-cactions',
            '#',
            'messageHelper',
            'ca-messageHelper',
            'Hinweise & Begrüßung',
            null,
            '#ca-messageHelper'
        );
        $(portletWLink).click(function(e) {
        	e.preventDefault();
			messageHelperexecute();
		});
	});
}
//</nowiki>