Benutzer:Se4598/autoantraege.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
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
//Kopie von [[Benutzer:Schnark/js/autoantraege.js]]. Versionsgeschichte dort.
//Dokumentation unter [[Benutzer:Schnark/js/autoantraege]]
//angepasst von mir mangels Config+Kleinigkeiten
//<nowiki>
mw.loader.load('//de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/autoedit.js&action=raw&ctype=text/javascript&maxage=60480&smaxage=86400'); //[[Benutzer:Schnark/js/autoedit.js]]
mw.loader.load('//de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/dialog.js&action=raw&ctype=text/javascript&maxage=60480&smaxage=86400'); //[[Benutzer:Schnark/js/dialog.js]]
/*global mw: true */
/*global autosave: true, defaultSLA: true, defaultVandal: true, defaultAVandal: true, usersignature: true *///Abwärtskompatibilität
(function($, libs){
var autoantraege = {
version: 3.5,
zeige_menu: true, //zeigt Menü mit Anträgen
zeige_revert: false, //zeigt dialogbasierte Revert-Links
zeige_erl: true, //zeigt Links für {{erledigt}}
zeige_inuse: false, //zeigt Links für {{InuseBot}}
autosave: false, //automatisch speichern
autosave_override: {},
inform_autor: false, //Autor infomieren?
multiline: true, //Eingabefelder mehrzeilig?
grund_kursiv: true, //(einzeiligen) Grund bei Antrag kursiv
hide_duep: false, //DÜP verstecken
no_alert: false, //bei Fehlern nicht warnen
sig: '--~~~~', //Signatur
sauberesig: false, //kann für Signaturen ohne = auf true gesetzt werden
revert_vorsatz: 'Revert: ', //Start der Revertbegründung
//Standard-Gründe
standard_grund: {'qs': '[[WP:Vollprogramm|Vollprogramm]]', 'sla': 'kein Artikel', 'urv': '[http://]', 'vm_benutzer': 'vandaliert in [[]]', 'vm_artikel': 'Edit-War'},
//Benutzer ist Admin (wird automatisch ermittelt)
admin: false,
//Antrags-Seiten (Datum wird ergänzt)
qs_seite: 'Wikipedia:Qualitätssicherung/',
la_seite: 'Wikipedia:Löschkandidaten/',
kat_seite: 'Wikipedia:WikiProjekt_Kategorien/Diskussionen/',
urv_seite: 'Wikipedia:Löschkandidaten/Urheberrechtsverletzungen',
vm_seite: 'Wikipedia:Vandalismusmeldung',
//Hilfsfunktionen
//erstellt einen Wikilink
link: function (titel) {
return '[[' + ((titel.match(/^(Datei:|Kategorie:|\/)/)) ? ':' : '') + titel.replace(/_/g, ' ') + ']]';
},
//escapet Text für Vorlagen
escape: function (param) {
//evt. auch mit geschweiften Klammern aufpassen
if (param.replace(/\[\[[^\[\]|]+(?:\|[^\[\]|]*)?\]\]/g, '').indexOf('|') > -1) param = param.replace(/\|/g, '{{!}}'); //Pipe außerhalb Link, sicherheitshalber alle escapen
if (param.indexOf('=') > -1 || (param.replace(/~~~~~/g, '').indexOf('~~~') > -1 && !autoantraege.sauberesig)) param = '1=' + param; //= verstecken
return param;
},
//formatiert Grund
format_grund: function (grund, inVorlage) {
grund = grund.replace(/\s*$/, '');
if (inVorlage && autoantraege.grund_kursiv && grund.indexOf('\n') === -1) {
if (grund.match(/^'/)) grund = '<nowiki' + ' />' + grund;
if (grund.match(/'$/)) grund += '<nowiki' + ' />';
grund = "''" + grund + "''";
}
grund += ' ' + autoantraege.sig;
return inVorlage ? autoantraege.escape(grund) : grund;
},
warn_abort: function (typ) {
if (typ) return;
if (autoantraege.no_alert) return;
window.alert('Bitte alle Felder ausfüllen!');
},
warn_edit: function (err, count) {
if (autoantraege.no_alert) return;
if (err == 'success') return; //sollte nicht passieren
if (count > 0 && err == 'nochange') return window.alert('Der Benutzer hat den gewählten Hinweis\n' +
'bereits auf seiner Diskussionsseite, es wurde nur der Antrag gestellt.\n' +
'Um den Benutzer musst du dich selber kümmern!');
if (count > 0) return window.alert('Ein Problem ist aufgetreten, der Antrag wurde nur zur Hälfte gespeichert!');
if (err == 'nochange') return window.alert('Artikel enthält den gewählten Baustein bereits!');
window.alert('Artikel wurde bereits gelöscht! (Oder ein Fehler trat auf, Code ' + err + '.)');
},
//ruft callback('Autor', anonym?) auf, Autor ist Urheber der aktuellen Seite
erstautor: function (callback) {
if (!autoantraege.inform_autor) return callback('', true);
$.getJSON(mw.util.wikiScript('api'), {action: 'query', prop: 'revisions', titles: mw.config.get('wgPageName'),
rvlimit: 1, rvdir: 'newer', rvprop: 'user', format: 'json'},
function (json) {
if (!json || !json.query || !json.query.pages) return callback('', true);
var pages = json.query.pages, page;
for (var p in pages) page = pages[p];
if (!page || !page.revisions || !page.revisions[0] || !page.revisions[0].user) return callback('', true);
callback(page.revisions[0].user, page.revisions[0].anon === '');
}
);
},
//Zeigt ein Dialogfenster (Titel title, Elemente dialog) an,
//überibt die gewählten Parameter an die Funktion list, welche die Liste der notwendigen Bearbeitung liefert,
//die anschließend (automatisch?: as) durchgeführt werden.
exec: function (title, dialog, list, as) {
if (as === undefined) as = autoantraege.autosave;
mw.loader.using('jquery.ui', function() { //falls der Server rumtrödelt, muss man warten
libs.schnark_dialog.show(title, dialog, function (p) {
libs.autoedit.edit_series(list(p), as, autoantraege.warn_edit, true);
}, autoantraege.warn_abort);
}, function() { window.alert('Leider will der Server jquery.ui nicht liefern!'); });
},
standard_dialog: function (label, grund, autor, anon) {
var dialog = [{type: 'input', name: 'grund', text: label, standard: grund || '',
focus: true, multiline: autoantraege.multiline, enter: !autoantraege.multiline}];
if (autoantraege.inform_autor) {
dialog.push({type: 'toggle', name: 'inform', text: 'Autor informieren', standard: !anon, list: [2]});
dialog.push({type: 'input', name: 'autor', text: 'Autor: ', standard: autor, enter: true});
}
return dialog;
},
standard_bearb: function (vorlage, noinclude, vorlageExpand, summary, seite, section, hinweisVorlage, p) {
var bearb = [],
t1 = '{{ers:' + vorlage + '|' + autoantraege.format_grund(p.grund, true) + '}}\n\n',
t2 = autoantraege.format_grund(p.grund, false),
t3 = '{{ers:' + hinweisVorlage + '|' + autoantraege.escape(mw.config.get('wgPageName')) + '}}';
if (noinclude && mw.config.get('wgPageName').indexOf('Vorlage') > -1) {
t1 = '<noinclude>' + t1 + '</noinclude>\n';
}
bearb.push({change: function (alt) {
if (alt.indexOf('{{' + vorlageExpand + '|') > -1) {
return false;
}
return t1 + alt;
},
summary: summary});
if (section === 'new') {
bearb.push({title: seite, section: section, summary: autoantraege.link(mw.config.get('wgPageName')), change: t2});
} else {
bearb.push({title: seite, section: section,
summary: 'Neuer Abschnitt /* ' + autoantraege.link(mw.config.get('wgPageName')) + ' */',
change: function (alt) {
return alt + '\n\n== ' + autoantraege.link(mw.config.get('wgPageName')) + ' ==\n' + t2;
}
});
}
if (p.inform) {
bearb.push({title: 'Benutzer Diskussion:' + p.autor,
summary: 'Neuer Abschnitt /* ' + autoantraege.link(mw.config.get('wgPageName')) + ' */',
change: function (alt) {
if (alt === '') return t3;
return alt + '\n\n' + t3;
}, create: true});
}
return bearb;
},
//einzelne Funktionen zum Stellen der Anträge
execute: {
'qs': function (grund, as) {
autoantraege.erstautor(function (autor, anon) {
autoantraege.exec('Qualitätssicherung', autoantraege.standard_dialog('QS-Grund: ', grund, autor, anon), function (p) {
return autoantraege.standard_bearb('QS', true, 'QS-Antrag', 'QS+', autoantraege.qs_seite, 'new', 'QS-Hinweis', p);
}, as);
});
},
'fach-qs':
function (grund, as) {
var list = [
['Animation', 'QS-Animation|Portal Diskussion:Animation', ''],
['Bahn', 'QS-Bahn|Portal:Bahn/Qualitätssicherung', ''],
['Begriffsklärungsseiten', 'QS-BKS|Wikipedia:WikiProjekt Begriffsklärungsseiten/Fließband', ''],
['Bergbau', 'QS-Bergbau|Portal:Bergbau/Wartung', ''],
['Berge und Gebirge', 'QS-Berge und Gebirge|Portal:Berge und Gebirge/Qualitätssicherung', ''],
['Biologie', 'QS-Biologie|Wikipedia:Redaktion Biologie/Qualitätssicherung', ''],
['Chemie', 'QS-Chemie|Wikipedia:Redaktion Chemie/Qualitätssicherung', ''],
['Computerspiele', 'QS-Computerspiel|Wikipedia:WikiProjekt Computerspiel/Qualitätssicherung', ''],
['Comic', 'QS-Comic|Portal Diskussion:Comic', ''],
['Country-Musik', 'Projekt:Country-Musik|Wikipedia:WikiProjekt Country-Musik/Baustellen-Artikel', ''],
['Einsatzorganisationen', 'QS-EO|Wikipedia:WikiProjekt Einsatzorganisationen/Qualitätssicherung', ''],
['Eishockey', 'QS-Eishockey|Portal:Eishockey/Qualitätssicherung', ''],
['Elekrotechnik', 'QS-Elekrotechnik|Wikipedia:WikiProjekt Elekrotechnik/Qualitätssicherung', ''],
['Ereignisse', 'QS-Ereignisse|Wikipedia:WikiProjekt Ereignisse/Qualitätssicherung', ''],
['Film und Fernsehen', 'QS-FF|Wikipedia:Redaktion Film und Fernsehen/Qualitätssicherung', ''],
['Geowissenschaften', 'QS-Geowissenschaften|Portal:Geowissenschaften/Qualitätssicherung', ''],
['Geschichte', 'QS-Geschichte|Wikipedia:Redaktion Geschichte/Qualitätssicherung', ''],
['Hund', 'QS-Hund|Portal:Hund/Qualitätssicherung', ''],
['Jagd', 'QS-Jagd|Portal:Jagd/Qualitätssicherung', ''],
['Kernenergie', 'QS-Kernenergie|Portal:Kernenergie/Qualitätssicherung', ''],
['Mathematik', 'QS-Mathematik|Portal:Mathematik/Qualitätssicherung', ''],
['Medien', 'QS-Medienwissenschaft|Wikipedia:WikiProjekt Medienwissenschaft/Qualitätssicherung', ''],
['Medizin', 'QS-Medizin|Wikipedia:Redaktion Medizin/Qualitätssicherung', ''],
['Militär', 'QS-Militär|Portal Diskussion:Militär', ''],
['Minerale', 'QS-Minerale|Wikipedia:WikiProjekt Minerale/QS-Minerale', ''],
['Motorsport', 'QS-Motorsport|Wikipedia:WikiProjekt Motorsport/Qualitätssicherung', ''],
['Musikalben', 'QS-Musikalben|Wikipedia:Redaktion Musik/Musikalben QS', ''],
['Naturwissenschaft', 'QS-NaWi|Wikipedia:Qualitätssicherung Naturwissenschaften', ''],
['Niederlande', 'QS-NL|Portal:Niederlande/Qualitätssicherung', ''],
['Philosophie', 'QS-Philosophie|Portal:Philosophie/Qualitätssicherung', ''],
['Physik', 'QS-Physik|Wikipedia:Redaktion Physik/Qualitätssicherung', ''],
['Planen und Bauen', 'QS-Planen und Bauen|Wikipedia:WikiProjekt Planen und Bauen/Qualitätssicherung', ''],
['Politiker', 'QS-Politiker|Wikipedia:WikiProjekt Politiker/Qualitätssicherung', ''],
['Religion', 'QS-Religion|Wikipedia:Redaktion Religion/QS', ''],
['Sexualität', 'QS-Sexualität|Wikipedia:Redaktion Sexualität/Qualitätssicherung', ''],
['Soziologie', 'QS-Soziologie|Portal:Soziologie/Qualitätssicherung', ''],
['Spiele', 'QS-Spiele|Portal:Spiele/Qualitätssicherung', ''],
['Straßen', 'QS-Straßen|Wikipedia:WikiProjekt Straßen/Qualitätssicherung', ''],
['Vereinigte Staaten', 'QS-USA|Portal:Vereinigte Staaten/Qualitätssicherung', ''],
['Vor- und Frühgeschichte', 'QS-Vor- und Frühgeschichte|Wikipedia:WikiProjekt Vor- und Frühgeschichte/Qualitätssicherung', ''],
['Waffen', 'QS-Waffen|Portal:Waffen/Qualitätssicherung', ''],
['Wirtschaft', 'QS-Wirtschaft|Portal:Wirtschaft/Wartung', ''],
['Wrestling', 'QS-Wrestling|Portal:Wrestling/Qualitätssicherung', ''],
['Wintersport', 'QS-Wintersport|Portal:Wintersport/Mitarbeiten/Qualitätssicherung', '']
];
var dialog = [{type: 'select', name: 'fach', list: list, text: 'Portal etc.: '},
{type: 'input', name: 'grund', text: 'QS-Grund: ', standard: grund || '', multiline: autoantraege.multiline, enter: !autoantraege.multiline}];
autoantraege.exec('Fach-QS', dialog, function (p) {
var bearb = [],
t1 = '{{' + p.fach.replace(/\|.*$/, '') + '}}\n\n';
if (mw.config.get('wgPageName').indexOf('Vorlage') > -1) t1 = '<noinclude>' + t1 + '</noinclude>\n';
bearb.push({change: function (alt) {return t1 + alt;}, summary: p.fach.replace(/\|.*$/, '') + '+'});
var t2 = autoantraege.format_grund(p.grund, false);
bearb.push({title: p.fach.replace(/^.*\|/, ''), section: 'new', summary: autoantraege.link(mw.config.get('wgPageName')), change: t2});
return bearb;
}, as);
},
'la': function (grund, as) {
var f;
switch (mw.config.get('wgNamespaceNumber')) {
case 0: if (mw.config.get('wgPageName').indexOf('Liste_') === 0) f = 'la_liste'; else f = 'la_artikel'; break;
case 2: f = 'la_benutzer'; break;
case 10: f = 'la_vorlage'; break;
case 14: f = 'la_kat'; break;
default: f = 'la_meta';
}
autoantraege.execute[f](grund, as);
},
'la_artikel':
function (grund, as) {
autoantraege.erstautor(function (autor, anon) {
autoantraege.exec('Löschantrag', autoantraege.standard_dialog('LA-Grund: ', grund, autor, anon), function (p) {
return autoantraege.standard_bearb('LA', false, 'Löschantragstext', 'LA+', autoantraege.la_seite, 'new', 'LD-Hinweis', p);
}, as);
});
},
'la_xxx': function (grund, as, typ) {
autoantraege.erstautor(function (autor, anon) {
autoantraege.exec('Löschantrag (' + typ + ')', autoantraege.standard_dialog('LA-Grund: ', grund, autor, anon), function (p) {
return autoantraege.standard_bearb('LA', false, 'Löschantragstext', 'LA+', autoantraege.la_seite, {title: typ + 'n'}, 'LD-Hinweis', p);
}, as);
});
},
'la_liste':
function (grund, as) { autoantraege.execute.la_xxx(grund, as, 'Liste'); },
'la_vorlage':
function (grund, as) {autoantraege.execute.la_xxx(grund, as, 'Vorlage'); },
'la_kat':
function (grund, as) {
autoantraege.erstautor(function (autor, anon) {
autoantraege.exec('Löschantrag (Kategorie)', autoantraege.standard_dialog('LA-Grund: ', grund, autor, anon), function (p) {
var bearb = [],
t1 = '{{ers:LA|' + autoantraege.format_grund(p.grund, true) + '}}\n\n';
bearb.push({change: function (alt) {
if (alt.indexOf('{{Löschantragstext|') > -1) return false;
return t1 + alt;
},
summary: 'LA+'});
var t2 = autoantraege.format_grund(p.grund);
bearb.push({title: autoantraege.kat_seite, section: 'new', summary: autoantraege.link(mw.config.get('wgPageName')), change: t2});
if (p.inform) {
var t3 = '{{ers:LD-Hinweis|' + autoantraege.escape(mw.config.get('wgPageName')) + '}}';
bearb.push({title: 'Benutzer Diskussion:' + p.autor, summary: 'Neuer Abschnitt /* ' + autoantraege.link(mw.config.get('wgPageName')) + ' */',
change: function (alt) {
if (alt === '') return t3;
return alt + '\n\n' + t3;
}, create: true});
}
return bearb;
}, as);
});
},
'la_benutzer':
function (grund, as) { autoantraege.execute.la_xxx(grund, as, 'Benutzerseite'); },
'la_meta':
function (grund, as) { autoantraege.execute.la_xxx(grund, as, 'Metaseite'); },
'sla': function (grund, as) {
autoantraege.erstautor(function (autor, anon) {
grund = grund || '';
if (grund.match(/^[0-9]+$/)) grund = Number(grund);
if (grund == 'kein Artikel') grund = 0;
var list = [['Unfug', 'Unfug', 'Seiteninhalt ist Unfug'],
['kein Artikel', '[[WP:ART|kein ausreichender Artikel]] und/oder [[WP:WWNI|kein enzyklopädischer Inhalt]]',
'kein ausreichender Artikel und/oder<br />kein enzyklopädischer Inhalt'],
['offensichtliche Irrelevanz', 'Offensichtlich keine enzyklopädische [[WP:RK|Relevanz]] vorhanden',
'Offensichtlich keine enzyklopädische Relevanz vorhanden'],
['Werbung', '[[WP:WWNI|Reiner Werbeeintrag]]', 'Reiner Werbeeintrag'],
['URV + fehlende Qualität', 'mögliche [[WP:URV|Urheberrechtsverletzung]] bei gleichzeitig fehlender Qualität',
'mögliche URV bei gleichzeitig fehlender Qualität'],
['Tastaturtest', 'Tastaturtest', 'Tastaturtest'],
['Unsinn', 'Seiteninhalt war [[WP:VAND|Unsinn]]', 'Seiteninhalt war Unsinn (mit Link auf WP:VAND)'],
['Wiedergänger', 'Unerwünschte Wiederanlage einer gelöschten Seite, siehe dazu [[WP:LP|Löschprüfung]]',
'Unerwünschte Wiederanlage einer gelöschten Seite'],
['Verschieberest', 'Verschieberest', 'Unnötiger Rest einer Verschiebung'],
['Unnötige Weiterleitung', 'Unnötige bzw. unerwünschte [[WP:WL|Weiterleitung]]', 'Unnötige bzw. unerwünschte Weiterleitung']];
if (mw.config.get('wgNamespaceNumber') % 2 == 1) {
list.unshift(
['Verwaiste Diskussionsseite', 'Verwaiste Diskussionsseite', 'Verwaiste Diskussionsseite'],
['keine regelkonforme Disk.', 'keine [[WP:DS|regelkonformen Diskussionsbeiträge]]', 'keine regelkonformen Diskussionsbeiträge']);
if (typeof grund == 'number') grund += 2;
} else if (mw.config.get('wgNamespaceNumber') == 2) {
list.unshift(['Verstoß gegen BNR', 'Missachtung der [[WP:BNR|Benutzernamensraum-Konventionen]]', 'Missachtung der Benutzernamensraum-Konventionen']);
if (typeof grund == 'number') grund += 1;
}
var dialog = [{type: 'select_other', name: 'grund', other: 'Sonstiger Grund', text: 'SLA-Grund: ', list: list,
standard: grund, html: true, focus : true, multiline: autoantraege.multiline, enter: !autoantraege.multiline}];
if (autoantraege.inform_autor) {
//TODO : ausbauen
var vorl_list = [['Standard-Vorlage', 'Gelöscht', 'Verwendet die Standard-Vorlage, meist {{Gelöscht}}.<br />Parameter werden aus Begründung erraten.'],
['Unsinn gelöscht', 'Unsinn gelöscht', 'Hinweis zur Schnelllöschung bei Unsinn'],
['Tastaturtest', 'Tastaturtest', 'Hinweis bei Tastaturtests'],
['Test', 'Test', 'Bitte mit dem Vandalieren aufzuhören']];
dialog.push({type: 'toggle', name: 'inform', text: 'Autor informieren', standard: !anon, list: [2, 3]});
dialog.push({type: 'input', name: 'autor', text: 'Autor: ', standard: autor, enter: true});
dialog.push({type: 'select', name: 'vorlage', text: 'Vorlage: ', list: vorl_list, html: true});
}
if (autoantraege.admin) dialog.push({type: 'toggle', name: 'del', text: 'direkt löschen', standard: true, list: []});
autoantraege.exec('Schnelllöschantrag', dialog, function (p) {
var bearb = [];
if (p.del) {
bearb.push({summary: p.grund.replace(/\s+/g, ' '), edit: 'del'});
} else {
var t1 = '{{löschen|' + autoantraege.format_grund(p.grund, true) + '}}\n\n';
if (mw.config.get('wgPageName').indexOf('Vorlage') > -1) t1 = '<noinclude>' + t1 + '</noinclude>\n';
bearb.push({change: function (alt) {
if (alt.indexOf('{{löschen') > -1) return false;
if (alt.indexOf('{{Löschen') > -1) return false;
if (alt.indexOf('{{SLA') > -1) return false;
return t1 + alt;
},
summary: 'SLA+'});
}
if (p.inform) {
if (p.vorlage == 'Gelöscht') {
if (p.grund == '[[WP:VAND|Unsinn]]') p.vorlage = 'Unsinn gelöscht';
if (/tastaturtest/i.test(p.grund)) p.vorlage = 'Tastaturtest';
}
var t2 = '{{ers:' + p.vorlage;
if (p.vorlage == 'Gelöscht') {
var param = '';
if (/redundan[tz]|(?:schon|bereits).+vorhanden/i.test(p.grund)) param += '|red';
if (/wiederg(?:ä|ae)nger/i.test(p.grund)) param += '|wh';
if (/wwni/i.test(p.grund)) param += '|wwni';
if (/werb(?:ung|e)/i.test(p.grund)) param += '|wer';
if (/kein.+artikel/i.test(p.grund)) param += '|ka';
if (/falsche\s+sprache/i.test(p.grund)) param += '|lang';
if (mw.config.get('wgNamespaceNumber') % 2 == 1) param += '|disk';
if (mw.config.get('wgNamespaceNumber') == 2) param += '|bnr';
if (/relevan[tz]/i.test(p.grund)) param += '|rel';
if (/theoriefindung|\btf\b|theorieetablierung|begriffsbildung|begriffsfindung|quellenlos/i.test(p.grund)) param += '|tf';
if (/\bpov\b|neutral/i.test(p.grund)) param += '|pov';
if (/(?:selbst|eigen)darstell|interessens?konflikt/i.test(p.grund)) param += '|sd';
t2 += param + '|art=' + mw.config.get('wgPageName');
}
t2 += '}}';
if (p.vorlage == 'Gelöscht' || p.vorlage == 'Unsinn gelöscht') t2 += ' ' + autoantraege.sig;
var t3 = 'Hinweis';
switch (p.vorlage) {
case 'Gelöscht': t3 = 'Neuer Abschnitt /* Schnelllöschung deines Eintrags „' + autoantraege.link(mw.config.get('wgPageName')) + '“ */'; break;
case 'Tastaturtest': t3 = 'Neuer Abschnitt /* Deine Bearbeitung */'; break;
}
bearb.push({title: 'Benutzer Diskussion:' + p.autor, summary: t3, create: true,
change: function (alt) {
if (p.vorlage == 'Tastaturtest' && /„Artikel“/.test(alt)) return false;
if (p.vorlage == 'Test' && /Test/.test(alt)) return false;
if (/[sS]top[ _]hand\.svg/.test(alt)) return false;
if (/letzte.+warnung/i.test(alt)) return false;
if (alt === '') return t2;
return alt + '\n\n' + t2;
}
});
}
return bearb;
}, as);
});
},
'kat_versch':
function (grund, as) {
autoantraege.exec('Kategorieverschiebung', [{type: 'input', name: 'neu', text: 'Neue Kategorie: ',
standard: mw.config.get('wgPageName').replace(/^Kategorie:/, ''), focus: true},
{type: 'input', name: 'grund', text: 'Grund: ', standard: grund || '',
multiline: autoantraege.multiline, enter: !autoantraege.multiline}], function (p) {
return [{change: function (alt) {
if (alt.indexOf('{{Umbenennungstext|') > -1) return false;
return '{{ers:Umbenennen|' + autoantraege.escape(p.neu) + '}}\n\n' + alt;
},
summary: 'Umbenennungsantrag'},
{title: autoantraege.kat_seite, section: 'new',
summary: autoantraege.link(mw.config.get('wgPageName')) + ' nach ' + autoantraege.link('Kategorie:' + p.neu),
change: autoantraege.format_grund(p.grund, false)}];
}, as);
},
'urv': function (grund, as) {
autoantraege.erstautor(function (autor, anon) {
autoantraege.exec('Urheberrechtsverletzung', autoantraege.standard_dialog('Quelle: ', grund, autor, anon), function (p) {
var bearb = [],
t1 = '{{URV}}\n\n' + autoantraege.format_grund(p.grund, false);
bearb.push({change: function (alt) {
if (alt.indexOf('{{URV}}') > -1) return false;
return t1;
},
summary: 'URV'});
var t2 = '\n# ' + autoantraege.link(mw.config.get('wgPageName')) + ' von ' + autoantraege.format_grund(p.grund, false);
bearb.push({title: autoantraege.urv_seite, section: 'last', summary: '+' + autoantraege.link(mw.config.get('wgPageName')),
change: function (alt) { return alt + t2; }});
if (p.inform) {
var url = p.grund;
url = url.replace(/^.*?\[?\s*(http[^\s\]]+).*$/, '$1'); //quick and dirty
var t3 = '{{ers:URV-Hinweis|' + autoantraege.escape(mw.config.get('wgPageName')) + '|' + autoantraege.escape(url).replace(/^1=/, '2=') + '}}';
bearb.push({title: 'Benutzer Diskussion:' + p.autor,
summary: 'Neuer Abschnitt /* Mögliche Urheberrechtsverletzung in ' + autoantraege.link(mw.config.get('wgPageName')) + ' */',
change: function (alt) {
if (alt === '') return t3;
return alt + '\n\n' + t3;
}, create: true});
}
return bearb;
}, as);
});
},
'vm_artikel':
function (grund, as) {
var dialog = [{type: 'input', name: 'grund', text: 'Grund: ', standard: grund || '',
focus: true, multiline: autoantraege.multiline, enter: !autoantraege.multiline}];
if (autoantraege.admin) {
dialog.push({type: 'toggle', name: 'sperren', text: 'direkt sperren', standard: true, list: [2, 3]});
dialog.push({type: 'input', name: 'dauer', text: 'Sperrdauer: ', standard: '1 month', enter: true});
dialog.push({type: 'toggle', name: 'sysop', text: 'Vollsperre', standard: false, list: []});
}
autoantraege.exec('Bitte um Seitensperrung', dialog, function (p) {
if (p.sperren) {
return [{edit: 'protect', expiry: p.dauer, protections: p.sysop ? 'sysop' : undefined, summary: p.grund.replace(/\s+/g, ' ')}];
} else {
return [{title: autoantraege.vm_seite, section: 'new',
change: '{{Artikel|' + autoantraege.escape(mw.config.get('wgPageName')) + '}} ' + autoantraege.format_grund(p.grund, false),
summary: 'Artikel: ' + autoantraege.link(mw.config.get('wgPageName'))}];
}
}, as);
},
'vm_benutzer':
function (grund, as) { //TODO admin
autoantraege.exec('Bitte um Benutzersperrung', [{type: 'input', name: 'grund', text: 'Grund: ', standard: grund || '',
focus: true, multiline: autoantraege.multiline, enter: !autoantraege.multiline}], function (p) {
var name = mw.config.get('wgTitle');
if (mw.config.get('wgCanonicalSpecialPageName') == 'Contributions') name = $('[name=target]').val();
return [{title: autoantraege.vm_seite, section: 'new',
change: '{{Benutzer|' + autoantraege.escape(name) + '}} ' + autoantraege.format_grund(p.grund, false),
summary: '[[Benutzer:' + name + ']]'}];
}, as);
},
'duep':
function (grund, as) {
var s = [], i;
var list = [['Wenn nicht deutlich wird, woher der Uploader die Datei hat', 'Quelle'],
['Wenn nicht deutlich wird, wer der Urheber der Datei ist', 'Urheber'],
['Wenn die Datei nicht unter einer freien Lizenz veröffentlicht wurde', 'Lizenz'],
['Wenn nicht deutlich wird, dass der Urheber einer freien Lizenz zugestimmt hat', 'Freigabe'],
['Wenn nicht klar ist, dass der Urheber des Originalwerks einer freien Lizenz zugestimmt hat', 'Gezeigtes Werk'],
['Wenn ein besonderer Fall vorliegt', 'Besonderer Fall']];
for (i = 0; i < list.length; i++) list[i][0] += ' (' + list[i][1] + ')';
if (grund) {
s = grund.replace(/[0-5]/g, '').replace(/q/i, '0').replace(/u/i, '1').replace(/l/i, '2').replace(/f/i, '3').replace(/g/i, '4').replace(/b/i, '5')
.replace(/[^0-5]/g, '').split('');
for (i = 0; i < s.length; i++) s[i] = Number(s[i]);
}
autoantraege.exec('Dateiüberprüfung', [{type: 'select_multi', name: 'duep', text: 'Bitte DÜP-Gründe auswählen: ', list: list, standard: s}], function (p) {
return [{change: function (alt) {
if (alt.indexOf('{{Dateiüberprüfung|') > -1) return false;
if (alt.indexOf('{{DÜP|') > -1) return false;
return alt + '\n{{Dateiüberprüfung|'+ p.duep.join('|') + '}}'; },
summary: 'Dateiüberprüfung'}];
}, as);
},
'b_warn':
function (grund, as) {
var list = [['Test', 'Freundlicher Hinweis, mit dem Vandalieren aufzuhören'],
['Test2', 'Deutlicher Hinweis, mit dem Vandalieren aufzuhören'],
['Test1', 'Freundlicher Hinweis, für Tests die Spielwiese zu nutzen'],
['Tastaturtest', 'Freundlicher Hinweis bei Tastaturtests'],
['Mitarbeit', 'Aufforderung, nicht nur die Benutzerseite zu pflegen'],
['Linkspam', 'Aufforderung, Weblinkspam zu unterlassen'],
['Litspam', 'Aufforderung, Literaturspam zu unterlassen'],
['WT', 'Hinweis nach SLA auf Werbung']];
for (var i = 0; i < list.length; i++) {
var e = list[i];
list[i] = [e[0], e[0], e[1]];
}
autoantraege.exec('Warnung an den Benutzer', [{type: 'select', name: 'v', text: 'Hinweisvorlage: ', list: list}], function (p) {
return [{change: function (alt) {
var v = '{{ers:' + p.v + '}}';
if (alt === '') return v;
return alt + '\n\n' + v;
},
summary: 'Hinweis', create: true}];
}, as);
},
'b_hinweis':
function (grund, as) {
var list = [['Hallo', 'Allgemeine Begrüßung'],
['Willkommen', 'alternative Begrüßungsvorlage'],
//Begrüßung, HalloIP
['Unterschreiben', 'Bitte, Diskussionsbeiträge zu unterschreiben'],
['Unterseite', 'Hinweis auf die Möglichkeit Artikel im BNR vorzubereiten'],
['Vorschau', 'Bitte, die Vorschau zu verwenden (ohne genaue Angabe des Artikels)'],
['Hinweis Commons', 'Bitte, Bilder auf Commons hochzuladen']];
for (var i = 0; i < list.length; i++) {
var e = list[i];
list[i] = [e[0], e[0], e[1]];
}
autoantraege.exec('Hinweis für den Benutzer', [{type: 'select', name: 'v', text: 'Hinweisvorlage: ', list: list}], function (p) {
return [{change: function (alt) {
var v = '{{ers:' + p.v + '}}';
if (alt === '') return v;
return alt + '\n\n' + v;
},
summary: 'Hinweis', create: true}];
}, as);
},
'b_hinweis_a':
function (grund, as) {
var list = [['Vorschau', 'Bitte, die Vorschau zu verwenden'],
['Werbung', 'Hinweis bei wieder gelöschter Werbung'],
['LD-Hinweis', 'Hinweis auf Löschdiskussion'],
['QS-Hinweis', 'Hinweis auf QS'],
['URV-Hinweis', 'Hinweis bei URV (Artikel und URL der Quelle bitte mit | trennen!)']];
for (var i = 0; i < list.length; i++) {
var e = list[i];
list[i] = [e[0], e[0], e[1]];
}
autoantraege.exec('Hinweis für den Benutzer', [{type: 'select', name: 'v', text: 'Hinweisvorlage: ', list: list},
{type: 'input', name: 'a', text: 'Betroffener Artikel: ', enter: true}], function (p) {
var param = p.a, url = '';
if (p.v == 'URV-Hinweis') {
param = param.replace(/\|.*$/, '');
url = p.a.replace(/^.*?\|/, '');
url = '|' + autoantraege.escape(url).replace(/^1=/, '2=');
}
return [{change: function (alt) {
var v = '{{ers:' + p.v + '|' + autoantraege.escape(param) + url + '}}';
if (alt === '') return v;
return alt + '\n\n' + v;
},
summary: 'Hinweis', create: true}];
}, as);
}
},
//grund optional, kompatibel mit PDD
eintragen: function (typ, grund, as) {
typ = typ.toString();
var pdd = //Kompatibilität mit PDD
{'1': 'qs', '2': 'la', '3': 'sla', '5': 'urv', '6': 'vm_benutzer', '7': 'la_kat', '8': 'la_vorlage', '9': 'vm_artikel', '11': 'kat_versch'};
if (typ in pdd) typ = pdd[typ];
if (!(typ in autoantraege.execute)) return window.alert('Falscher Parameter!');
if (typeof grund != 'string') grund = '';
if (grund === '') grund = autoantraege.standard_grund[typ];
if (typeof grund != 'string') grund = '';
if (as === undefined) as = autoantraege.autosave_override[typ];
if (as === undefined) as = autoantraege.autosave;
autoantraege.execute[typ](grund, as);
},
//revertiert
revert: function (param, as) {
if (as === undefined) as = autoantraege.autosave_override.revert;
if (as === undefined) as = autoantraege.autosave;
//TODO
var list = [['Vandalismus', '[[Wikipedia:Vandalismus|Vandalismus]]', 'Vandalismus (mit Link)'],
['Quelle', 'Bitte inhaltliche Änderungen mit Fundstellen/Belegen/Quellen begründen (siehe auch [[WP:BLG]]) und künftig den Hinweis „[[WP:ZQ|Zusammenfassung und Quellen]]“ nutzen.', 'Bitte inhaltliche Änderungen mit Fundstellen/Belegen/Quellen begründen (siehe auch WP:BLG) und künftig den Hinweis „Zusammenfassung und Quellen“ nutzen.'],
['Weblink', 'Weblink bietet keine [[WP:WEB|weiterführenden lexikographischen Informationen]].', 'Weblink bietet keine weiterführenden lexikographischen Informationen.'],
['Unenzyklopädisch', 'Beitrag nicht von enzyklopädischer Textqualität. Bitte „[[WP:WSIGA|Wie schreibe ich einen guten Artikel]]“ beachten.', 'Beitrag nicht von enzyklopädischer Textqualität. Bitte „Wie schreibe ich einen guten Artikel“ beachten.']];
var list2 = [['{{Test}}', 'Test', 'Freundlicher Hinweis, mit dem Vandalieren aufzuhören'],
['{{Test2}}', 'Test2', 'Deutlicher Hinweis, mit dem Vandalieren aufzuhören'],
['VM', 'VM', 'Vandalismusmeldung zu diesem Benutzer']];
var dialog = [{type: 'select_other', name: 'grund', text: 'Begründung: ', other: 'Sonstiger Grund', list: list, multiline: false, enter: true}];
if (autoantraege.inform_autor) {
dialog.push({type: 'toggle', name: 'warn', text: 'Benutzer verwarnen', standard: param.user ? true : false, list: [2, 3]});
dialog.push({type: 'input', name: 'user', text: 'Benutzer: ', standard: param.user || '', enter: true});
dialog.push({type: 'select', name: 'vorlage', text: 'Verwarnung: ', list: list2});
}
autoantraege.exec('Rückgängig machen', dialog, function (p) {
var bearb = [{edit: 'revert', title: param.title, revert: param, summary: autoantraege.revert_vorsatz + p.grund}];
if (p.warn) {
if (p.vorlage == 'VM') {
bearb.push({title: autoantraege.vm_seite, section: 'new',
change: '{{Benutzer|' + autoantraege.escape(p.user) + '}} Siehe {{Artikel|' + mw.config.get('wgPageName') + '}} und meinen Revert „' +
p.grund + '“ ' + autoantraege.sig, summary: '[[Benutzer:' + p.user + ']]'});
} else {
bearb.push({change: function (alt) {
if (/Test/.test(alt)) return false;
if (/[sS]top[ _]hand\.svg/.test(alt)) return false;
if (/letzte.+warnung/i.test(alt)) return false;
var v = '{{ers:' + p.vorlage + '}}';
if (alt === '') return v;
return alt + '\n\n' + v;
},
title: 'Benutzer Diskussion:' + p.user, summary: 'Hinweis', create: true});
}
}
return bearb;
}, as);
},
init: function() {
//TODO andere Zeitzonen
var heute = new Date();
var jahr = heute.getFullYear();
var monat = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'][heute.getMonth()];
var tag = heute.getDate();
var datum = tag + '._' + monat + '_' + jahr;
autoantraege.qs_seite += datum;
autoantraege.la_seite += datum;
datum = jahr + '/' + monat + '/' + tag;
autoantraege.kat_seite += datum;
if (typeof autosave == 'boolean') autoantraege.autosave = autosave;
if (typeof defaultSLA == 'string') autoantraege.standard_grund.sla = defaultSLA;
if (typeof defaultVandal == 'string') autoantraege.standard_grund.vm_benutzer = defaultVandal;
if (typeof defaultAVandal == 'string') autoantraege.standard_grund.vm_artikel = defaultAVandal;
if (typeof usersignature == 'string') autoantraege.sig = usersignature;
if ($.inArray('sysop', mw.config.get('wgUserGroups')) > -1) autoantraege.admin = true;
if (autoantraege.zeige_menu || autoantraege.zeige_revert) {
mw.loader.load('jquery.ui');
if (autoantraege.zeige_menu) $(autoantraege.init_menu);
if (autoantraege.zeige_revert) $(autoantraege.init_revert);
}
if (autoantraege.zeige_erl && mw.config.get('wgNamespaceNumber') !== 0) {
$(function(){ if ( document.getElementById('autoarchiv-erledigt-baustein') || $('#Vorlage-Autoarchiv:has(a[title="Vorlage:Erledigt"])').length > 0)
autoantraege.autoerledigt('Erledigt', 'erl.', 'erl.', 'Diesen Abschnitt als erledigt markieren'); });
}
if (autoantraege.zeige_inuse && mw.config.get('wgPageName') == 'Wikipedia:Bots/Anfragen') {
$(function(){ autoantraege.autoerledigt('InuseBot', 'Anfrage wird bearbeitet', 'inuse', 'Diese Anfrage als in Bearbeitung markieren'); });
}
},
init_menu: function() {
var ziel = 'p-tb';
var ns = mw.config.get('wgNamespaceNumber');
//QS: Artikel, Vorlagen, Kategorien
if (ns === 0 || ns == 10 || ns == 14)
mw.util.addPortletLink(ziel, '#', 'QS+', 't-qs', 'QS-Antrag stellen').onclick = function(){autoantraege.eintragen('qs'); return false;};
//Fach-QS: Artikel, Vorlagen, Kategorien
if (ns === 0 || ns == 10 || ns == 14)
mw.util.addPortletLink(ziel, '#', 'Fach-QS+', 't-fachqs', 'Fach-QS-Antrag stellen').onclick = function(){autoantraege.eintragen('fach-qs'); return false;};
//URV
if (ns != -1)
mw.util.addPortletLink(ziel, '#', 'URV+', 't-urv', 'Als Urheberrechtsverletzung markieren').onclick = function(){autoantraege.eintragen('urv'); return false;};
//LA: keine Diskussionsseiten
if (ns % 2 === 0)
mw.util.addPortletLink(ziel, '#', 'LA+', 't-la', 'Löschantrag stellen').onclick = function(){autoantraege.eintragen('la'); return false;};
//DÜP: Dateien
if (ns == 6 && !autoantraege.hide_duep)
mw.util.addPortletLink(ziel, '#', 'DÜP+', 't-duep', 'Dateiüberprüfung').onclick = function(){autoantraege.eintragen('duep'); return false;};
//KAT_VERSCH: nur Kategorien
if (ns == 14)
mw.util.addPortletLink(ziel, '#', 'Kat. verschieben', 't-katversch', 'Antrag zur Kategorie-Verschiebung stellen').onclick =
function(){autoantraege.eintragen('kat_versch'); return false;};
//SLA
if (ns != -1) {
if (autoantraege.admin) {
mw.util.addPortletLink(ziel, '#', 'Löschen', 't-sla', 'Schnelllöschen').onclick = function(){autoantraege.eintragen('sla'); return false;};
} else {
mw.util.addPortletLink(ziel, '#', 'SLA+', 't-sla', 'Schnelllöschantrag stellen').onclick = function(){autoantraege.eintragen('sla'); return false;};
}
}
//VM
if (ns == 2 || ns == 3 || mw.config.get('wgCanonicalSpecialPageName') == 'Contributions') {
mw.util.addPortletLink(ziel, '#', 'VM+', 't-vm', 'Benutzer als Vandale/Edit-Krieger melden').onclick =
function(){autoantraege.eintragen('vm_benutzer'); return false;};
} else if (ns != -1) {
mw.util.addPortletLink(ziel, '#', 'VM+', 't-vm', 'Sperrung der Seite wegen Vandalismus/Edit-War beantragen').onclick =
function(){autoantraege.eintragen('vm_artikel'); return false;};
}
//Benutzerdisk.
if (ns == 3) {
//TODO einschränken
mw.util.addPortletLink(ziel, '#', 'Warnung+', 't-warn', 'Den Benutzer verwarnen').onclick = function(){autoantraege.eintragen('b_warn'); return false;};
mw.util.addPortletLink(ziel, '#', 'Hinweis+', 't-hinweis', 'Den Benutzer freundlich auf etwas hinweisen').onclick =
function(){autoantraege.eintragen('b_hinweis'); return false;};
mw.util.addPortletLink(ziel, '#', 'Hinweis (Art.)+', 't-hinweis-a', 'Dem Benutzer einen auf einen konkreten Artikel bezogenen Hinweis geben').onclick =
function(){autoantraege.eintragen('b_hinweis_a'); return false;};
}
},
autoerledigt: function(vorlage, kommentar, link, titel) {
$('.mw-editsection').each(function() {
var $this = $(this);
var section = null;
$this.find('a').each(function() {
if (section !== null) return;
section = mw.util.getParamValue('section', $(this).attr('href') || 'x');
if (section !== null && section.search(/^\d+$/) == -1) section = null; //keine transkludierten Abschnitte
});
if (section === null) return;
section = Number(section);
var summ = $this.parent().find('.mw-headline').attr('id') || '';
summ = summ.replace(/_/g, ' ').replace(/(\.[0-9A-F]{2})+/g, function (utf8) {return decodeURIComponent(utf8.replace(/\./g, '%'));});
if (summ) summ = '/* ' + summ + ' */ ';
summ += kommentar;
var $link = $('<a/>', {title: titel, href: '#'}).text(link).click(function() {
libs.autoedit.edit_series([{section: section,
change: function (alt) {
if (alt.indexOf('{{' + vorlage) > -1) return false;
if (alt.indexOf('{{' + vorlage.replace(/^./, function (c) { return c.toLowerCase(); })) > -1) return false;
return alt + '\n{{' + vorlage + '|' + autoantraege.escape('~~~~') + '}}'; },
summary: summ}], autoantraege.autosave, autoantraege.warn_edit, true);
return false;
});
$this.append(' / [').append($link).append(']');
});
},
init_revert: function () {
var link = function (param) {
if (param.undoafter === null) delete param.undoafter;
if (param.user === null) delete param.user;
var text = '', tip = '';
if (param.reset) {
text = 'wiederherstellen'; tip = 'auf diese Version revertieren'; delete param.user;
} else if (param.user) {
text = 'verbessertes Rückgängig'; tip = 'Diese Änderung von Benutzer:' + param.user + ' mit Dialog rückgängig machen.';
} else {
text = 'verbessertes Rückgängig'; tip = 'Diese Änderungen mit Dialog rückgängig machen.';
}
return $(mw.html.element('a', {href: '#', title: tip}, text)).click(function(e) {
e.preventDefault();
autoantraege.revert(param);
});
};
var situation = '';
if (mw.util.getParamValue('diff')) {
situation = ($('.diff-multi').length > 0) ? 'diffmulti' : 'diff';
} else if (mw.util.getParamValue('oldid')) {
situation = 'old';
} else if (mw.config.get('wgAction') == 'history') {
situation = 'history';
} else if (mw.config.get('wgCanonicalSpecialPageName') == 'Contributions') {
situation = 'contrib';
} else if ($.inArray(mw.config.get('wgCanonicalSpecialPageName'), ['Recentchanges', 'Recentchangeslinked', 'Watchlist'])) {
situation = 'changes';
}
if (situation === '') return;
switch (situation) {
case 'diff': case 'diffmulti':
$('#mw-diff-otitle1, #mw-diff-ntitle1').find('a').each(function() {
var $a = $(this), href = $a.attr('href'), $link;
if (!href) return;
if (mw.util.getParamValue('action', href) != 'edit') return;
var oldid = mw.util.getParamValue('oldid', href), undo = mw.util.getParamValue('undo', href);
if (oldid !== null) $link = link({reset: oldid});
if (undo !== null) $link = link({undo: undo, undoafter: mw.util.getParamValue('undoafter', href),
user: (situation == 'diffmulti') ? null : $('#mw-diff-ntitle2').find('.mw-userlink').text()});
if ($link) $a.after($link).after(' | ');
});
break;
case 'old':
$('#mw-revision-info').after(link({reset: mw.util.getParamValue('oldid')}));
break;
case 'history':
$('#pagehistory').find('li').each(function() {
var $li = $(this), $rev = $li.find('.mw-history-undo'), href = $rev.find('a').attr('href');
if (!href) return;
var $link1 = link({reset: mw.util.getParamValue('undo', href)}),
$link2 = link({undo: mw.util.getParamValue('undo', href), undoafter: mw.util.getParamValue('undoafter', href), user: $li.find('.mw-userlink').text()});
$rev.after($link2).after(' | ').after($link1).after(' | ');
});
break;
case 'contrib':
mw.util.$content.find('ul:last').find('li').each(function() {
$(this).find('a').each(function() {
var $a = $(this), href = $a.attr('href');
if (!href) return;
if (mw.util.getParamValue('diff', href) != 'prev') return;
var $link = link({undo: mw.util.getParamValue('oldid', href), user: $('[name=target]').val(), title: mw.util.getParamValue('title', href)});
$a.after($link).after(' | ');
});
});
break;
case 'changes':
//TODO
break;
}
}
};
if (mw.config.get('debug')) window.autoantraege = autoantraege;
$(document).trigger('loadWikiScript', ['Benutzer:Schnark/js/autoantraege.js', autoantraege]);
autoantraege.init();
})(jQuery, mw.libs);
//</nowiki>