Участник:T kns/portaltomain.js
Материал из Lurkmore
Перейти к навигацииПерейти к поиску
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
//<pre>
/*
*
*
*
* ( )
* ( ) (
* ) _ )
* ( \_
* _(_\ \)
* (____\___))
*
*
*
*/
addOnloadHook(function() {if($('span.movetomainns').size() > 0) {$('span.movetomainns').on('click','a.external[href*=":Movepage/"]',function(e) {
if(e.which > 1) {return;}
e.preventDefault();
var version = '1.21', lparams = $(this).attr('href').split('&'), plparams = {}, i =0, k ='', vertoffset = 0;
for(i=0; i < lparams.length; i++) {
k = lparams[i].split('=');
plparams[k[0]] = k[1];
}
var newtitle = ((typeof plparams['wpNewTitle'] !== 'undefined')?plparams['wpNewTitle']: encodeURIComponent(wgPageName.replace("Портал:Ниасилили/",""))),
reason = ((typeof plparams['wpReason'] !== 'undefined')?plparams['wpReason']: "Geronimo!"),
token = '',
pagetext = '';
function formatdate(dt) {
var utc = dt.getTime() + (dt.getTimezoneOffset() * 60000), date = new Date(utc + 10800000),
Y = date.getFullYear().toString(), m = (date.getMonth()+1).toString(), d = date.getDate().toString();
return (d.length>1?d:'0'+d)+"."+(m.length>1?m:'0'+m)+"."+Y;
}
function loaderror(j,e){
showmessage('LoadError: '+e);
}
function reqerror(data, error) {
if(typeof data === 'object' && typeof data.error !== 'undefined'
&& typeof data.error.info !== 'undefined') {
var error = data.error.info;
}
showmessage('Error:\n'+error);
}
function undeleterevs(title) {
showmessage('Восстановление истории страницы "'+title+'"');
$.ajax({
url: '/api.php?'+$.param({format: 'json', action: 'undelete', title: title, token: token, reason: 'Техническое'}),
dataType: 'json', type: 'POST'
}).success(function(data) {
if(typeof data === 'object' && typeof data.undelete !== 'undefined'
&& typeof data.undelete.title === 'string') {
showmessage('История страницы "<a href="/?title='+encodeURIComponent(data.undelete.title)+'">'+data.undelete.title+'</a>" восстановлена');
var date = new Date();
createpage('Портал:Ниасилили/Выпускники/'+date.getFullYear(),
"\n# [["+data.undelete.title+"]] <sup>[''"+formatdate(date)+"'']</sup>"
);
} else {
reqerror(data,"undelete");
}
}).error(loaderror);
}
function createpage(title, appendtext) {
var data = {
format: 'json', action: 'edit',
title: title, token: token,
text: pagetext, summary: 'Вынесено из Инкубатора'
};
if (typeof appendtext !== 'undefined') {
data.appendtext = appendtext;
showmessage('Дополнение страницы "'+title+'"');
} else {
showmessage('Создание страницы "'+title+'"');
}
$.ajax({
url: '/api.php',
data: data,
dataType: 'json', type: 'POST'
}).success(function(data) {
if(typeof data === 'object' && typeof data.edit !== 'undefined') {
if(data.edit.result == "Success") {
if (typeof appendtext !== 'undefined') {
showmessage('Страница "<a href="/?title='+encodeURIComponent(data.edit.title)+'">'+data.edit.title+'</a>" дополнена');
} else {
showmessage('Страница "<a href="/?title='+encodeURIComponent(data.edit.title)+'">'+data.edit.title+'</a>" создана');
undeleterevs(data.edit.title);
}
} else {
showmessage('Ошибка при создании страницы "'+title+'"')
}
} else {
reqerror(data,"create");
}
}).error(loaderror);
}
function deletepage(title) {
showmessage('Удаление статьи "'+title+'"');
$.ajax({
url: '/api.php?'+$.param({format: 'json', action: 'delete', title: title, token: token, reason: 'Техническое'}),
dataType: 'json', type: 'POST'
}).success(function(data) {
if(typeof data === 'object' && typeof data.delete !== 'undefined'
&& typeof data.delete.title === 'string') {
showmessage('Страница '+data.delete.title+' удалена');
createpage(data.delete.title);
} else {
reqerror(data,"delete");
}
}).error(loaderror);
}
function movepage(pginfo) {
showmessage('Переименование статьи "'+pginfo.title+'"');
if(pginfo.title.replace(/ /g,'_') != wgPageName) {
showmessage('Страница уже переименована и называется: "<a href="/?title='+encodeURIComponent(pginfo.title)+'">'+pginfo.title+'</a>"');
} else {
if(typeof pginfo.movetoken !== 'undefined') {
$.ajax({
url: '/api.php?format=json&action=move&fromid='+wgArticleId
+'&to='+newtitle+'&reason='+reason
+'&token='+encodeURIComponent(pginfo.movetoken)+'&movetalk&noredirect&movesubpages',
dataType: 'json', type: 'POST'
}).success(function(data) {
if(typeof data === 'object' && typeof data.move !== 'undefined'
&& typeof data.move.to === 'string') {
showmessage('Страница "<a href="/?title='+encodeURIComponent(wgPageName)+'">'+wgPageName+'</a>" переименована в "<a href="/?title='+encodeURIComponent(data.move.to)+'">'+data.move.to+'</a>"');
deletepage(data.move.to);
} else {
reqerror(data,"move");
}
}).error(loaderror);
} else {
reqerror(data,"token");
}
}
}
function getinfo(type, title) {
$.getJSON('/api.php?'+$.param({
format: 'json', action: 'query',
prop: 'info|revisions', rvprop: 'content',
intoken: type, titles: title
})).success(function(data) {
if(typeof data === 'object' && typeof data.query !== 'undefined'
&& typeof data.query.pages !== 'undefined') {
for(var i in data.query.pages) {
if(type == 'move' && typeof data.query.pages[i].movetoken !== 'undefined'
&& typeof data.query.pages[i].revisions !== 'undefined') {
pagetext = data.query.pages[i]
.revisions[0]['*']
.replace(/^\s*[\{]{2}\s*recycle(?:[^[\{]{2}\n]|[^\n])+[\}]{2}\n\s*/i,'')
.replace(/\s*<!--\s*((?:[\{]{2}[^\}]+[\}]{2}\s*)+)\s*-->\s*/g,'\n\n\n$1\n');
token = data.query.pages[i].movetoken;
movepage(data.query.pages[i]);
} else {
reqerror(data,"token");
}
break;
}
} else {
reqerror(data,"info");
}
}).error(loaderror);
}
/********************************/
getinfo('move',wgPageName);
showmessage('Version: '+version);
})}});
//</pre>