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"
},
createBotJob: {
reason: "erl",
comment: "umgesetzt"
}
}
if (botauftrag.debugMode) {
botauftrag.botPage = "Benutzer:$traight-$hoota/js/botauftrag/BotPage"
}
function showMarkDoneDialog(data) {
var reasons = [];
for (i in botauftrag.reasons) {
reasons.push([botauftrag.reasons[i], i, "Als " + botauftrag.reasons[i] + " markieren"]);
}
mw.loader.using('jquery.ui', 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) {
markDone($.extend(data, a));
}
);
});
}
function markDone(data) {
var reason = botauftrag.reasons[data.reason] != 'undefined' ? botauftrag.reasons[data.reason] : data.reason;
mw.libs.autoedit.edit({
summary: "/*" + data.title + "*/ " + reason,
section: data.section,
change: function(text) {
data = $.extend(data, parseText(text));
return createCodeForDisussionPage(data);
},
});
}
function parseText(text) {
return {
rawText: $.trim(text.replace(/(=[=]+)\s*(.+)\s*=[=]+\s*\n/, "")),
titleDepth: RegExp.$1,
rawTitle: $.trim(RegExp.$2.replace(/=+$/, ""))
}
}
function showCreateBotJobDialog(data) {
data.reason = botauftrag.createBotJob.reason;
$.get(data.editLink + "&action=raw", function(text) {
$.extend(data, parseText(text));
mw.loader.using('jquery.ui', 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: botauftrag.createBotJob.comment,
enter: true
}],
function(a) {
createBotJob($.extend(data, a));
}
);
});
});
}
function createBotJob(data) {
if (!data.command.match(/(\((Artikel|Kategorie)\))?\[\[:Kategorie:.*\]\] nach \[\[:Kategorie:.*\]\](, \[\[:Kategorie:.*\]\])*|\[\[:Kategorie:.*\]\] leeren/)) {
console.error("Invalid bot command: " + data.command);
return false;
}
mw.libs.autoedit.edit_series(
[{
title: botauftrag.botPage,
summary: "Bot: " + data.command,
section: "new",
change: function(text) {
return "[[" + mw.config.get("wgPageName").replace(/ /g, ' ') + "#" + data.title + "|Diskussion]] --~~~~";
}
}, {
summary: "/*" + data.title + "*/ " + data.reason,
section: data.section,
action: "wpSave", //alt:wpPreview
change: function(text) {
return createCodeForDisussionPage(data)
}
}],
//autosave
[true, false],
//callback
console.log,
//replace_last
true
);
}
function createCodeForDisussionPage(data) {
if (data.comment.substr(-6) !== "--~~~~" && $.trim(data.comment).length > 0) {
data.comment = $.trim(data.comment) + " --~~~~";
}
if(data.reason == "undefined") data.reason = "";
if(data.reason == "erl") {
data.reason = "";
} else if (data.reason != "") {
data.reason = "|" + data.reason;
}
return data.titleDepth + " {{erl|" + data.rawTitle + data.reason + "}} " + data.titleDepth + "\n" + data.rawText + "\n\n " + data.comment;
}
function addLinks() {
mw.util.$content.find('h2,h3,h4,h5,h6').each(function() {
var $h = $(this);
var $mwHeadline = $h.find('.mw-headline');
if (!$mwHeadline.length) {
return;
}
var $editsection = $h.find('.mw-editsection');
var data = {
"editLink": false,
"title": $mwHeadline.text()
};
if (data.title.match(/\{\{erl\||\((erl|bleibt|lae|laz|zurückgezogen)\.?\)/)) {
return;
}
$editsection.find("a").each(function() {
$this = $(this);
if ($this.text() == "Bearbeiten") {
data.editLink = $this.attr("href");
}
});
function eventHandler(e) {
e.preventDefault();
var data = $(e.target).data();
console.log(data);
data.editLink.match(/(\?|&)section=(\d+)/);
data.section = parseInt(RegExp.$2);
data.action(data);
}
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;
}
data.action = showCreateBotJobDialog;
$editsection.append(makeLink("Bot beauftragen", "Diesen Antrag auf die Kategorienwarteschlange einstellen", eventHandler, data));
data.action = showMarkDoneDialog;
$editsection.append(makeLink("Erledigen", "Diesen Antrag als erledigt markieren", eventHandler, data));
});
}
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>