Участник:Vlsergey/simpleku.js
Перейти к навигации
Перейти к поиску
( function() {
if ( typeof ( wfAnchorEncode ) != "function" ) {
function wfAnchorEncode( str ) {
str = encodeURIComponent( str );
str = str.replace( /%/g, "." );
str = str.replace( /\.20/g, "_" );
str = str.replace( /\.3A/g, ":" );
return str;
}
}
var wgKeepPage = {
'newtext': '',
'talktext': '',
'editsummary': '',
'edittoken': '',
};
wgKeepPage.addKeepTab = function() {
if ( !document.getElementById( 'request_for_deletion' ) )
return;
var portletLink = mw.util.addPortletLink( 'p-cactions', '#', 'Оставить', 'ca-keep', 'Снять эту страницу с удаления' );
// Bind click handler
$( portletLink ).click( function( e ) {
e.preventDefault();
wgKeepPage.keepPage();
} );
};
wgKeepPage.keepPage = function() {
var api = new mw.Api();
jsMsg( 'Получение текста страницы...' );
api.get( {
action: 'query',
prop: 'revisions',
rvprop: 'content',
pageids: mw.config.get( 'wgArticleId' ),
} ).done(
function( response ) {
var pgtext = response.query.pages[mw.config.get( 'wgArticleId' )].revisions[0]['*'];
var rfdRegex = /(?:\s*<\s*noinclude\s*>)?\s*\{\{\s*(КУ|К удалению)\s*\|\s*\d{4}-\d{2}-\d{2}\s*\}\}\s*(?:<\/noinclude>\s*)?/ig;
var matches = pgtext.match( rfdRegex );
if ( matches.length < 1 ) {
alert( 'Не найдена пометка {{' + 'к удалению}}' );
return;
}
var date = matches[0].match( /(\d{4})-(\d{2})-(\d{2})/ );
wgKeepPage.newtext = pgtext.replace( rfdRegex, "" );
wgKeepPage.talktext = "{{оставлено|" + date[0] + "}}\n";
wgKeepPage.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, ' ' ) + ']]';
jsMsg( 'Сохранение нового текста статьи...' );
api.postWithEditToken( {
action: 'edit',
title: mw.config.get('wgPageName'),
summary: wgKeepPage.editsummary,
text: wgKeepPage.newtext,
} ).done( function() {
jsMsg( 'Шаблон «К удалению» снят. ' + '<a href="javascript:location.reload()">Перезагрузить страницу</a>' );
} );
{
var title;
if ( mw.config.get('wgNamespaceNumber') == 0 ) {
title = "Обсуждение:" + mw.config.get('wgTitle');
} else if ( mw.config.get('wgNamespaceNumber') == 2 ) {
title = "Обсуждение участника:" + mw.config.get('wgTitle');
} else if ( mw.config.get('wgNamespaceNumber') == 4 ) {
title = "Обсуждение Википедии:" + mw.config.get('wgTitle');
} else if ( mw.config.get('wgNamespaceNumber') == 6 ) {
title = "Обсуждение файла:" + mw.config.get('wgTitle');
} else if ( mw.config.get('wgNamespaceNumber') == 10 ) {
title = "Обсуждение шаблона:" + mw.config.get('wgTitle');
} else if ( mw.config.get('wgNamespaceNumber') == 14 ) {
title = "Обсуждение категории:" + mw.config.get('wgTitle');
} else {
jsMsg( 'Страница была успешно снята с удаления. <a href="javascript:location.reload()">Перезагрузить страницу</a>' );
return;
}
api.postWithEditToken( {
action: 'edit',
title: title,
summary: wgKeepPage.editsummary,
prependtext: wgKeepPage.talktext
} ).done( function() {
jsMsg( 'На страницу обсуждения был поставлен шаблон {{' + 'оставлено}}. ' + '<a href="javascript:location.reload()">Перезагрузить страницу</a>' );
} );
}
} ).fail( function( error ) {
console.log( arguments );
jsMsg( 'Не удалось получить текст страницы.' );
} );
};
addOnloadHook( wgKeepPage.addKeepTab );
} )();