Benutzer:$traight-$hoota/js/botauftrag.js
Erscheinungsbild
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
//Dokumentation unter [[Benutzer:$traight-$hoota/js/botauftrag]] <nowiki>
/*global mw: true */
(function($, mw){
var botauftrag = {
version: "0.1",
botPage: "Wikipedia:WikiProjekt Kategorien/Warteschlange",
debugMode: false,
reasons: {
"erl" : "erledigt",
"b": "bleibt",
"x": "gelöscht",
"sla": "schnellgelöscht",
"rev": "zurückgezogen",
"lae": "WP:LAE"
}
}
if(botauftrag.debugMode){
botauftrag.botPage = "Benutzer:$traight-$hoota/js/botauftrag/BotPage"
}
function onMarkDone(e){
e.preventDefault();
var data = $(e.target).data();
data.editLink.match(/(\?|&)section=(\d+)/);
data.section = parseInt(RegExp.$2);
var reasons = [];
for(i in botauftrag.reasons){
reasons.push([botauftrag.reasons[i], i, "Als " + botauftrag.reasons[i] + " markieren"]);
}
mw.loader.using('jquery.ui.dialog', function () {
mw.libs.schnark_dialog.show(
'Als erledigt markieren',
[
{type: 'select_other', name: 'reason', text: 'Markierung', list: reasons, standard: 1, other: 'anders...' },
{type: 'inputbox', name: 'comment', text: "Kommentar", optional: true, focus: true, enter: true},
],
function (a) {
data.reason = a.reason;
data.comment = a.comment;
if(data.comment.substr(-6) !== "--~~~~" && $.trim(data.comment).length > 0){
data.comment = $.trim(data.comment) + " --~~~~";
}
reason = a.reason;
if(botauftrag[reason] != 'undefined'){
reason = botauftrag[reason];
}
mw.libs.autoedit.edit({
summary: "/*" + data.title + "*/ " + reason,
section: data.section,
change: function(text){
data.rawText = $.trim(text.replace(/(=[=]+)\s*(.+)\s*=[=]+\s*/, ""));
data.titleDepth = RegExp.$1;
data.rawTitle = $.trim(RegExp.$2);
return createCodeForDisussionPage(data);
},
action: "wpSave"
})
}
);
});
}
function onBotauftrag(e){
e.preventDefault();
var data = $(e.target).data();
data.reason = "erl";
data.comment = "umgesetzt --~~~~";
data.editLink.match(/(\?|&)section=(\d+)/);
data.section = parseInt(RegExp.$2);
$.get(data.editLink + "&action=raw", function (raw) {
raw = $.trim(raw);
data.rawText = $.trim(raw.replace(/(=[=]+)\s*(.+)\s*=[=]+\s*/, ""));
data.titleDepth = RegExp.$1;
data.rawTitle = $.trim(RegExp.$2);
mw.loader.using('jquery.ui.dialog', function () {
mw.libs.schnark_dialog.show(
'Botauftrag erstellen',
[
{type: 'inputbox', name: 'command', text: "Bot-Befehl", focus: true, standard: data.rawTitle, enter: true},
{type: 'inputbox', name: 'comment', text: "Erledigt-Kommentar", standard: data.comment, enter: true},
],
function (a) {
data.command = a.command;
data.comment = a.comment;
params = [
//params
{
title: botauftrag.botPage,
summary: "Bot: " + data.command,
section: "new",
change: function(text){
return createCodeForBotPage(data);
}
},{
summary: "/*" + data.title + "*/ " + data.reason,
section: data.section,
action: "wpSave", //alt:wpPreview
change: function(text){
return createCodeForDisussionPage(data)
}
}];
console.log(params);
mw.libs.autoedit.edit_series(params,
//autosave
[true, false],
//callback
function(a,b,c){
console.log(a)
console.log(b)
console.log(c)
},
//replace_last
true
)
}
);
});
});
}
function createCodeForBotPage(data){
if(! data.command.match(/(\((Artikel|Kategorie)\))?\[\[:Kategorie:.*\]\] nach \[\[:Kategorie:.*\]\](, \[\[:Kategorie:.*\]\])*|\[\[:Kategorie:.*\]\] leeren/)){
console.error("Invalid bot command: " + data.command);
return false;
}
page = mw.config.get("wgPageName");
page = page.replace(/ /g, ' ');
code = "[[" + page + "#" + data.title + "|Diskussion]] --~~~~";
return code;
}
function createCodeForDisussionPage(data){
if(data.reason == "erl"){
data.reason = "";
}else if(data.reason != ""){
data.reason = "|" + data.reason;
}
erlTitle = "{{erl|" + data.rawTitle + data.reason + "}}";
erlTitle = data.titleDepth + " " + erlTitle + " " + data.titleDepth;
code = erlTitle + "\n" + data.rawText + "\n\n " + data.comment;
return code;
}
function addLinks(){
mw.util.$content.find('h1,h2,h3,h4,h5,h6').each(function (i, h) {
var $h = $(h);
var $mwHeadline = $h.find('.mw-headline');
if(! $mwHeadline.length){
return;
}
var $editsection = $h.find('.mw-editsection'),
hash = $mwHeadline.attr('id') || '',
editLink = false,
title = $mwHeadline.text();
if(title.match(/\{\{erl\||\((erl|bleibt|lae|laz|zurückgezogen)\.?\)/)){
return;
}
$editsection.find("a").each(function(){
$this = $(this);
if($this.text() == "Bearbeiten"){
editLink = $this.attr("href");
}
});
$editsection.append(makeLink("Bot beauftragen", "Diesen Antrag auf die Kategorienwarteschlange einstellen", onBotauftrag, {
"editLink": editLink,
"hash": hash,
"title": title
}));
$editsection.append(makeLink("Erledigen", "Diesen Antrag als erledigt markieren", onMarkDone, {
"editLink": editLink,
"hash": hash,
"title": title
}));
});
}
function makeLink(label, title, callback, data){
$link = $(mw.html.element('a', {
href: '#',
title: title,
'class': 'botauftrag-link botauftrag-link-' + label.toLowerCase()
}, label)).data(data).on("click", callback);
$span = $('<span class="mw-editsection-bracket">[</span>');
$span.append($link);
$span.append('<span class="mw-editsection-bracket">]</span>');
return $span;
}
function init(){
var pageName = mw.config.get("wgPageName");
var isWarteschlange = pageName.match(/Wikipedia:WikiProjekt_Kategorien\/Diskussionen\/(\d{4})\/(.+)\/(\d{1,2})/),
isTestPage = pageName.match(/Benutzer:\$traight-\$hoota\/js\/botauftrag\/Antrag/);
if((!isWarteschlange || botauftrag.debugMode) && !isTestPage){
console.log("debug mode: ", botauftrag.debugMode);
console.error(pageName);
return false;
}
$(addLinks);
}
init();
})(jQuery, mw);
//</nowiki>