Участник:Dima st bk/oneclickkeep.js
Перейти к навигации
Перейти к поиску
/*
скрипт быстрого оставления статей на КУ // dima_st_bk 2015
часть кода взята тут - [[Участник:VasilievVV/oneclickkeep.js]]
*/
if ( mw.config.get('wgCategories').indexOf('Википедия:Кандидаты на удаление') >= 0 ) {
var keep = mw.util.addPortletLink( 'p-cactions', '#', 'Оставить', 'ca-keep-d', 'Снять эту страницу с удаления');
}
// Bind click handler
$( keep ).click( function () {
oneclickkeep();
});
function oneclickkeep () {
var api = new mw.Api();
// lets figure out the username
var id = mw.config.get('wgArticleId');
api.get( {
action: 'query',
prop: 'info',
inprop: 'talkid',
pageids: id
}).done(
function( data ) {
var talkid = ( data.query.pages[id].talkid === undefined) ? 0 : data.query.pages[id].talkid;
api.get( {
action: 'query',
prop: 'revisions',
rvprop: 'content',
pageids: id + '|' + talkid
}).done(
function( data ) {
var rfdRegex = /(?:\s*<\s*noinclude\s*>)?\s*\{\{\s*(КУ|К удалению)\s*\|\s*\d{4}-\d{2}-\d{2}\s*\}\}\s*(?:<\/noinclude>\s*)?/ig;
var text = data.query.pages[id].revisions[0]['*'];
var talktext = ( talkid === 0) ? '\n' : data.query.pages[talkid].revisions[0]['*'];
var matches = text.match( rfdRegex );
var newtext = text.replace( rfdRegex, "" );
var date = matches[0].match(/(\d{4})-(\d{2})-(\d{2})/);
var newtalktext = "{{оставлено|" + date[0] + "}}\n" + talktext;
var editsummary = 'оставлено согласно \[\[Википедия:К удалению/' + (date[3][0] == '0' ? date[3][1] : date[3]) + ' ' +
'января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря'
.split('|')[(date[2][0] == '0' ? parseInt(date[2][1]) : parseInt(date[2]))-1] + ' ' + date[1] +
'#' + mw.config.get('wgPageName').replace(/_/g, ' ') + ']]';
api.post( {
action: 'edit',
pageid: id,
text: newtext,
summary: editsummary,
token: mw.user.tokens.get('editToken')
}).done(
function( data ) {
mw.notify( 'Страница была успешно снята с удаления' );
api.post( {
action: 'edit',
title: mw.config.get('wgFormattedNamespaces')[mw.config.get('wgNamespaceNumber') + 1] + ':' + mw.config.get('wgTitle'),
text: newtalktext,
summary: editsummary,
token: mw.user.tokens.get('editToken')
}).done(
function( data ) {
mw.notify( $( '<span>На страницу обсуждения был поставлен шаблон \{\{оставлено}}. <a href="javascript:location.reload()">Перезагрузить страницу</a></span>' ) );
}
);
}
);
}
);
}
);
}