Участник:Absconditus/rfd.js
Перейти к навигации
Перейти к поиску
Страница персонального оформления. У этого JS-кода есть документация: Участник:Absconditus/rfd.
После сохранения очистите кэш браузера.
После сохранения очистите кэш браузера.
/*
* Скрипт для упрощенного вынесения на удаление статьи в Википедии: добавляет шаблон на страницу, создаёт тему на КУ.
* Документация: https://ru.wikipedia.org/wiki/Участник:Absconditus/rfd
* Лицензия: GNU GPL
* Версия: 1.9 06.05.2012
* Автор — анонимный разработчик, связь — xzs.jx@yandex.ru
*/
rfd = {
$token: null,
$reason: null,
rfdPageExists: null,
insert_tag: function(text) {
var textbox = $( "#rfd-reason" );
textbox.textSelection( 'encapsulateSelection', { 'pre' : text } );
},
show_window: function() {
var $window = '<div xmlns="http://www.w3.org/1999/xhtml" id="rfd-window" style="background: white; border:1px double black; padding: 15px; position: fixed; top: 150px; left: 400px; z-index: 2"><table>' +
'<tr><td>Страница RfD:</td><td>' + this._rfd_page() + '</td></tr>' +
'<tr><td>Страница:</td><td>' + this._xe( mw.config.get('wgPageName') ) + '</td></tr>' +
'<tr><td>Быстрая вставка:</td><td style="font-size:90%">' + '<a onclick="rfd.insert_tag(\'|\');return false" href=\"#\">|</a> <a onclick="rfd.insert_tag(\'[[ВП:ОКЗ]]\');return false" href=\"#\">[[ВП:ОКЗ]]</a> <a onclick="rfd.insert_tag(\'[[ВП:ЧНЯВ]]\');return false" href=\"#\">[[ВП:ЧНЯВ]]</a> <a onclick="rfd.insert_tag(\'[[ВП:МТФ]]\');return false" href=\"#\">[[ВП:МТФ]]</a> <a onclick="rfd.insert_tag(\'[[ВП:МТМР]]\');return false" href=\"#\">[[ВП:МТМР]]</a> <a onclick="rfd.insert_tag(\'[[ВП:НЕГУЩА]]\');return false" href=\"#\">[[ВП:НЕГУЩА]]</a> <a onclick="rfd.insert_tag(\'[[ВП:ПРОВ]]\');return false" href=\"#\">[[ВП:ПРОВ]]</a> <a onclick="rfd.insert_tag(\'[[ВП:БИО]]\');return false" href=\"#\">[[ВП:БИО]]</a> <a onclick="rfd.insert_tag(\'[[ВП:АИ]]\');return false" href=\"#\">[[ВП:АИ]]</a></td></tr>' +
(($("#rfd-replace-sd-tmpl").is(':checked')) ? '<tr><td>Автоматически добавленный к номинации текст: «С быстрого удаления.».</td></tr>' : '') +
'<tr><td>Причина</td><td>' + '<textarea id="rfd-reason" rows="4" cols="60"></textarea></td></tr>' +
'<tr><td></td><td><input type="checkbox" id="rfd-replace-sd-tmpl" />Перенести с быстрого (<a href="//ru.wikipedia.org/wiki/user_talk:Absconditus/rfd.js\#Описание_работы_скрипта" target="_blank">?</a>)</td></tr>' +
'<tr><td></td><td><input type="checkbox" id="rfd-replace-afi-tmpl" />Перенести с КУЛ (<a href="//ru.wikipedia.org/wiki/user_talk:Absconditus/rfd.js\#Описание_работы_скрипта" target="_blank">?</a>)</td></tr>' +
'<tr><td></td><td><input type="checkbox" id="rfd-forcewrap" />Принудительно обернуть шаблон КУ в тег <noinclude> (<a href="//ru.wikipedia.org/wiki/user_talk:Absconditus/rfd.js\#Описание_работы_скрипта" target="_blank">?</a>)</td></tr>' +
'<tr><td></td><td><input type="checkbox" id="rfd-watch" />Следить за номинированной страницей (<a href="//ru.wikipedia.org/wiki/user_talk:Absconditus/rfd.js\#Описание_работы_скрипта" target="_blank">?</a>)</td></tr>' +
'<tr><td><input type="button" id="rfd-confirm" value="ОК" /><input type="button" id="rfd-cancel" value="Отмена" />' +
'</td></tr></table></div>';
$( '#bodyContent' ).append( $.parseXML( $window ).firstChild );
$( '#rfd-confirm' )[0].onclick = function() { rfd.execute() };
$( '#rfd-cancel' )[0].onclick = function() {
$( 'div#rfd-window' ).remove();
};
},
execute: function() {
this.$reason = $( '#rfd-reason' ).val();
var titleParam = encodeURIComponent( this._rfd_page() );
$.getJSON( mw.config.get('wgScriptPath') + '/api.php?format=json&action=query&prop=info&intoken=edit&titles=' + titleParam, function( $x ) { rfd.process_page( $x ) });
},
process_page: function( $data ) {
for( var $i in $data['query']['pages'] ) {
this.$token = $data['query']['pages'][$i]['edittoken'];
this.rfdPageExists = $data.query.pages[$i].missing === undefined;
}
$.getJSON( mw.config.get('wgScriptPath') + '/api.php?format=json&action=parse&page=' + this._ae(mw.config.get('wgPageName')) + '&prop=wikitext', function( $data ) {
if( typeof $data['parse'] == 'undefined' ) { alert( 'Статья уже не существует.' ); return false }
var $content = $data['parse']['wikitext']['*'];
if( $content.match( /\{\{к удалению\|(.+)\}\}\n/ig ) ) { alert( 'На статье уже стоит шаблон удаления.' ); return false }
var $template = ((mw.config.get('wgNamespaceNumber') != 10 && $('#rfd-forcewrap').is(':checked')) ? '<' + 'noinclude>' : '') + '{' + '{subst:afdd}}\n' + ((mw.config.get('wgNamespaceNumber') != 10 && $('#rfd-forcewrap').is(':checked')) ? '<' + '/noinclude>' : '');
$.post( mw.config.get('wgScriptPath') + '/api.php', { action: 'edit', title: mw.config.get('wgPageName'), notminor: '1', watchlist: ( $('#rfd-watch').is(':checked') ? 'watch' : 'nochange'), summary: (($('#rfd-replace-sd-tmpl').is(':checked')) ? 'С ' + (($('#rfd-replace-afi-tmpl').is(':checked')) ? 'КУЛ' : 'быстрого') + ' на медленное' : 'Страница вынесена на') + ' удаление: [[' + rfd._rfd_page() + '#' + mw.config.get('wgPageName') + '|тема]] ([[user talk:Absconditus/rfd.js|RfD.js]])',
token: rfd.$token, text: ( ($('#rfd-replace-sd-tmpl').is(':checked') ) ? $content.replace(/\{\{((db|уд)-.*|deleteslow\|1\=.*\|2\=.*)\}\}/ig, $template) : ($content.match(/\{\{(hangon|hang-on)\}\}/ig) ? $content.replace(/\{\{(hangon|hang-on)\}\}\n/ig, '') : (($('#rfd-replace-afi-tmpl').is(':checked')) ? $content.replace(/\{\{К\sулучшению\|.*\}\}/ig, $template) : $template + $content ) ) ), basetimestamp: rfd._ts(), format: 'json' }, function( $x ) { rfd.process_rfd( $x ) });
});
},
process_rfd: function( $data ) {
if( $data && $data['edit'] && $data['edit']['result'] == 'editconflict' ) { alert( 'Конфликт правок. Запустите скрипт ещё раз.' ); return false }
var $h2 = mw.config.get('wgPageName').replace( /_/g, ' ' );
var $n = '\n\n== [[' + ( ( mw.config.get('wgNamespaceNumber') == 14 || mw.config.get('wgNamespaceNumber') == 6 ) ? ':' : '' ) + $h2 + ']] ==\n'+ (($('#rfd-replace-sd-tmpl').is(':checked')) ? 'Перенесено с быстрого удаления. ' : (($('#rfd-replace-afi-tmpl').is(':checked')) ? 'Перенесено с КУЛ. ' : '')) + rfd.$reason + ' ~~' + '~~';
$.post( mw.config.get('wgScriptPath') + '/api.php', { action: 'edit', title: rfd._rfd_page(), notminor: '1', summary: (($('#rfd-replace-sd-tmpl').is(':checked')) ? 'с быстрого ' : (($('#rfd-replace-afi-tmpl').is(':checked')) ? 'С КУЛ ' : '')) + '\/*' + $h2 + '*\/ новая тема (с помощью [[user talk:Absconditus/rfd.js|RfD.js]])', token: rfd.$token, appendtext: (!rfd.rfdPageExists ? '\{\{ВПКУ-навигация\}\}' : '') + $n }, function() { window.location = mw.config.get('wgServer') + '/wiki/' + rfd._rfd_page() + '#' + mw.config.get('wgPageName') });
},
_rfd_page: function() {
var $date = new Date();
return this._xe( 'Википедия:К_удалению/' + $date.getUTCDate() + ' ' + ( this._months[$date.getUTCMonth()] ) +
' ' + $date.getUTCFullYear() );
},
_xe: function( $i ) {
return $i.replace(/\&/g,'&'+'amp;').replace(/</g,'&'+'lt;')
.replace(/>/g,'&'+'gt;').replace(/\'/g,'&'+'apos;').replace(/\"/g,'&'+'quot;');
},
_ae: function( $i ) {
return $i.replace(/\+/g,'%2B').replace(/&/g,'%26');
},
_ts: function() {
var $d = new Date();
var $m = $d.getUTCMonth()+1;
return $d.getUTCFullYear()+'-'+($m<10?'0'+$m:$m)+'-'+$d.getUTCDate()+'T'+$d.getUTCHours()+':'+$d.getUTCMinutes()+':'+$d.getUTCSeconds()+'Z';
},
_months: [ 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' ]
},
$( function() {
if( mw.config.get('wgCanonicalNamespace') != 'Special' && mw.config.get('wgArticleId') && $('#ca-viewsource').length === 0) {
mw.loader.using('mediawiki.util').done(function(){
mw.util.addPortletLink("p-cactions", "javascript: rfd.show_window()", "КУ", "ca-rfd", "Вынести на удаление");
});
}
});
mw.loader.load( 'jquery.textSelection', 'text/javascript', false );