МедияУики:Gadget-Mwbot.js
Забележка: За да се видят промените, необходимо е след съхраняване на страницата, кешът на браузъра да бъде изтрит.
- Firefox / Safari: Задържа се клавиш Shift и се щраква върху Презареждане (Reload) или чрез клавишната комбинация Ctrl-Shift-R (⌘-Shift-R за Mac);
- Google Chrome: клавишна комбинация Ctrl-Shift-R (⌘-Shift-R за Mac)
- Internet Explorer: Задържа се клавиш Ctrl и се щраква върху Refresh или чрез клавишната комбинация CTRL-F5;
- Opera: кешът се изчиства през менюто Tools → Preferences.
/**
* Extends the functionality of an inputbox in a div.mwbot element.
* Appends { { MAINPAGE/SUBPAGE } } to MAINPAGE upon creation of MAINPAGE/SUBPAGE
*/
var Memory = {
memoryTtl: 86400, // last this many seconds
allowedActions: ["transcludeSubpage"],
delim1: "::",
delim2: ";;",
memorize: function(jsAction, jsArgs, mwPage, mwAction) {
mw.cookie.set(
Memory.getCookieName(mwPage, mwAction),
jsAction + Memory.delim1 + jsArgs.join(Memory.delim2),
new Date(Date.now() + Memory.memoryTtl*1000));
},
executeCurrentAction: function() {
var cookieName = Memory.getCookieName(mw.config.get('wgPageName'), mw.config.get('wgAction'));
var rawData = mw.cookie.get(cookieName);
if (rawData) {
mw.cookie.set(cookieName, null);
var p = rawData.split(Memory.delim1);
if ( $.inArray(p[0], Memory.allowedActions) !== -1 ) {
eval(p[0] + '("'
+ p[1].replace(/"/g, '\\"').split(Memory.delim2).join('", "')
+ '")');
}
}
},
getCookieName: function (mwPage, mwAction) {
return "on" + mwAction + "_" + mwPage;
}
};
function attachMemorizers() {
$('.mwbot').find('form[name="createbox"]').each(function() {
attachMemorizer(this, false);
});
$('.mwbot-root').find('form[name="createbox"]').each(function() {
attachMemorizer(this, true);
});
}
function attachMemorizer(form, mainIsRoot) {
var mainpage;
var subpath = '';
if (mainIsRoot) {
var titleElements = form.title.value.split('/');
mainpage = titleElements[0];
subpath = (titleElements.length > 2) ?
titleElements.slice(1, -1).join('/') + '/' :
'';
} else {
mainpage = form.title.value.replace(/\/+$/g, '');
}
if ( mainpage == "" ) {
mainpage = mw.config.get('wgPageName');
}
form.title.value = "";
jQuery(form).submit(function() {
if ( $.trim(this.title.value) == "" ) {
alert( mw.msg("ta-emptyfield") );
return false;
}
var subpage = this.title.value;
var prefix = mainpage + "/" + subpath;
var prefindex = subpage.indexOf(prefix);
if ( prefindex == 0 ) { // the prefix is already there, remove it
subpage = subpage.substr(prefix.length);
}
var fullpage = prefix + subpage;
this.title.value = fullpage;
// allow summary prefilling by new section
$('<input>', {type: 'hidden', name: "preloadtitle", value: subpath + subpage}).appendTo(this);
Memory.memorize("transcludeSubpage",
[mainpage, subpath, subpage],
fullpage.replace(/ /g, "_"), "view");
return true;
});
}
function transcludeSubpage(mainpage, subpath, subpage) {
// subpath is okay to be empty.
if ( $.trim(mainpage) == "" || $.trim(subpage) == "" ) {
return;
}
var api = new mw.Api();
var fullpage = mainpage + "/" + subpath + subpage;
api.postWithToken("edit", {
action: "edit",
title: mainpage,
summary: mw.msg("ta-summary", fullpage),
appendtext: "\n{"+"{" + fullpage + "}}"
});
}
$( function( $ ) {
attachMemorizers();
$(".done-by-script").hide();
$(".showme").show();
Memory.executeCurrentAction();
} );