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 = {
'rq' : null,
'newtext' : '',
'talktext' : '',
'editsummary' : '',
'edittoken' : '',
'addKeepTab' : function() {
if( !document.getElementById( 'request_for_deletion' ) ) return;
addPortletLink( 'p-cactions', 'javascript:wgKeepPage.keepPage()', 'Оставить', 'ca-keep', 'Снять эту страницу с удаления' );
},
'onTextDownload' : function() {
if( this.readyState != 4 ) return;
if( this.status != 200 ) return;
var pgtext = this.responseText;
var rfdRegex = /(?:\s*<\s*noinclude\s*>)?\s*\{\{\s*(КУ|К удалению)\s*\|\s*\d{4}-\d{1,2}-\d{1,2}\s*\}\}\s*(?:<\/noinclude>\s*)?/ig;
var matches = pgtext.match( rfdRegex );
if( matches == null || matches.length < 1 ) {
alert( 'Не найдена пометка {{' + 'к удалению}}' );
return;
}
var date = matches[0].match(/(\d{4})-(\d{1,2})-(\d{1,2})/);
wgKeepPage.newtext = pgtext.replace( rfdRegex, "" );
wgKeepPage.talktext = "{{оставлено|" + date[0] + "}}\n";
wgKeepPage.editsummary = 'оставлено согласно \[\[Википедия:К удалению/' + parseInt(date[3]) + ' ' +
'января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря'
.split('|')[parseInt(date[2])-1] + ' ' + date[1] +
'#' + wgPageName.replace(/_/g, ' ') + ']]';
var uri = wgServer + wgScriptPath + '/api.php?format=json&action=query&prop=info&intoken=edit&titles=' + encodeURIComponent( wgPageName );
wgKeepPage.rq.onreadystatechange = wgKeepPage.onTokenDownload;
wgKeepPage.rq.open( "GET", uri, true );
wgKeepPage.rq.send( "" );
},
'onTokenDownload' : function() {
if( this.readyState != 4 ) return;
if( this.status != 200 ) return;
result = JSON.parse(this.responseText);
wgKeepPage.edittoken = result.query.pages[wgArticleId].edittoken;
if( !wgKeepPage.edittoken ) {
alert( 'Редактирование невозможно' );
return;
}
var uri = wgServer + wgScriptPath + '/api.php?format=json&action=edit&title=' + encodeURIComponent( wgPageName );
var rq = "summary=" + encodeURIComponent( wgKeepPage.editsummary ) +
"&text=" + encodeURIComponent( wgKeepPage.newtext ) +
"&token=" + encodeURIComponent( wgKeepPage.edittoken );
wgKeepPage.rq.onreadystatechange = wgKeepPage.onEditSaved;
wgKeepPage.rq.open( "POST", uri, true );
wgKeepPage.rq.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
wgKeepPage.rq.send( rq );
},
'onEditSaved' : function() {
if( this.readyState != 4 ) return;
if( this.status != 200 ) return;
result = JSON.parse(this.responseText);
if( typeof( result.error ) != 'undefined' ) {
alert( "Не удалось сохранить страницу: " + result.error.info );
return;
}
var title;
if( wgNamespaceNumber == 0 ) {
title = "Обсуждение:" + wgTitle;
} else if( wgNamespaceNumber == 2 ) {
title = "Обсуждение участника:" + wgTitle;
} else if( wgNamespaceNumber == 4 ) {
title = "Обсуждение Википедии:" + wgTitle;
} else if( wgNamespaceNumber == 6 ) {
title = "Обсуждение файла:" + wgTitle;
} else if( wgNamespaceNumber == 10 ) {
title = "Обсуждение шаблона:" + wgTitle;
} else if( wgNamespaceNumber == 14 ) {
title = "Обсуждение категории:" + wgTitle;
} else {
jsMsg( 'Страница была успешно снята с удаления. <a href="javascript:location.reload()">Перезагрузить страницу</a>');
return;
}
var uri = wgServer + wgScriptPath + '/api.php?format=json&action=edit&title=' + encodeURIComponent( title );
var rq = "summary=" + encodeURIComponent( wgKeepPage.editsummary ) +
"&prependtext=" + encodeURIComponent( wgKeepPage.talktext ) +
"&token=" + encodeURIComponent( wgKeepPage.edittoken );
wgKeepPage.rq.onreadystatechange = wgKeepPage.onTalkSaved;
wgKeepPage.rq.open( "POST", uri, true );
wgKeepPage.rq.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
wgKeepPage.rq.send( rq );
},
'onTalkSaved' : function() {
if( this.readyState != 4 ) return;
if( this.status != 200 ) return;
result = JSON.parse(this.responseText);
if( typeof( result.error ) != 'undefined' ) {
alert( "Не удалось сохранить страницу обсуждения: " + result.error.info );
return;
}
jsMsg( 'Страница была успешно снята с удаления; на страницу обсуждения был поставлен шаблон {{' + 'оставлено}}. ' +
'<a href="javascript:location.reload()">Перезагрузить страницу</a>' );
},
'keepPage' : function() {
var uri = wgServer + wgScriptPath + '/index.php?action=raw&title=' + encodeURIComponent( wgPageName );
this.rq = new XMLHttpRequest();
this.rq.onreadystatechange = this.onTextDownload;
this.rq.open( "GET", uri, true );
this.rq.send( "" );
}
}
addOnloadHook( wgKeepPage.addKeepTab );