Потребител:V111P/js/rmUncatTemplate.js
From Wikipedia, the free encyclopedia
// https://bg.wikipedia.org/wiki/Потребител:V111P/js/rmUncatTemplate.js // v. 30 Oct 2016 // // Click the (−) link next to the Некатегоризирани_статии category to remove the // без_категория or некатегоризирана_статия template from the wikitext of the current page
(function ($) {
var info = mw.config.get(['wgPageName', 'wgUserLanguage', 'wgAction', 'wgScriptPath']); info.pageNameEncoded = encodeURIComponent(info.wgPageName); var pageText, pageTimestamp; var dialogHeading = 'V111P\'s Uncategorized Page Template removing tool:\n'; var $uncatLink;
var $uncategorizedPagesCatLink = $('a[href="' + encodeURI('/wiki/Категория:Некатегоризирани_статии') + '"]'); if ($uncategorizedPagesCatLink[0]) { $uncatLink = $('<a/>', { text: '(−)', href: '#', class: 'uncategorizedPagesCatRemoveLink', click: function (e) { e.preventDefault();
if (confirm('Премахване на шаблон
Тази статия трябва да се включи в една или повече категории. Моля, направете го – категоризирайте статията при подобните ѝ. |
?')) {
$uncatLink.addClass('working'); requestWikitext(); } } }); $uncategorizedPagesCatLink.after($uncatLink).after(' '); }
function requestWikitext() { $.get(info.wgScriptPath + '/api.php?action=query&prop=revisions&rvprop=content|timestamp&format=json&titles=' + info.pageNameEncoded, receiveResponse ); }
function receiveResponse(obj) { pageText = null; try { $.each(obj.query.pages, function (key, val) { pageText = val.revisions[0]['*']; pageTimestamp = val.revisions[0].timestamp; }); } catch (e) { error('Грешка при получаване на кода на страницата:\n' + e.message); return; }
var newWikitext = pageText.replace(/\{\{(без категория|некатегоризирана статия) *}}\n{0,2}/i, ); if (newWikitext == pageText) {
error('В кода на страницата не беше открит шаблон
Тази статия трябва да се включи в една или повече категории. Моля, направете го – категоризирайте статията при подобните ѝ. |
или
Тази статия трябва да се включи в една или повече категории. Моля, направете го – категоризирайте статията при подобните ѝ. |
.');
return; } savePage(newWikitext); }
function savePage(wikitext) { var editRequestObj = { action: 'edit', minor: true, nocreate: , title: info.wgPageName, basetimestamp: pageTimestamp,
summary: 'без
Тази статия трябва да се включи в една или повече категории. Моля, направете го – категоризирайте статията при подобните ѝ. |
',
text: wikitext, token: mw.user.tokens.get('editToken'), format: 'json' }; $.post(info.wgScriptPath + '/api.php', editRequestObj, function (data) { var err = data.error; var msg = ; if (err) { if (err.code == 'editconflict') error('Конфликт на редакциите. Опитай отново.'); else error('Грешка при записване на страницата: ' + err.info + ' (' + err.code + ')' ); } else { mw.notify('Готово'); $uncategorizedPagesCatLink.remove(); $uncatLink.remove(); } }); }
function error(msg) { $uncatLink.removeClass('working'); console.error(dialogHeading + msg); alert(dialogHeading + msg); }
})($);