MediaWiki:Update-newpages.js
Материал из Телевики — свободной вики-энциклопедии о мире телекоммуникаций
/* <pre><nowiki>
Автообновление шаблона {{Новые статьи}} -- 23 Августа 2011.
Автор: Edward Chernenko
Когда участник создаёт статью, автоматически обновляет
шаблон {{Новые статьи}}. Дополнительных действий со стороны
самого участника не требуется.
*/
var update_newpages_count = 5; /* можно менять */
var newpages_pageids_unfiltered = new Array();
var newpages_pageids = new Array();
var newpages = new Object();
var edittoken;
function get_newpages_ids(how_many_more, callback_when_done)
{
$.getJSON(wgScriptPath + "/api.php?format=json&action=query&prop=info&pageids="
+ newpages_pageids_unfiltered.splice(0, 50).join("|") + (edittoken == undefined ? "&intoken=edit" : ""),
function(rq) {
var pages = rq['query']['pages'];
for(var p in pages)
{
if(edittoken == undefined) edittoken = pages[p]['edittoken'];
if(pages[p]['redirect'] != undefined || pages[p]['ns'] != 0)
continue;
newpages_pageids.push(p);
newpages[p] = pages[p]['title'];
}
how_many_more -= newpages_pageids.length;
if(how_many_more > 0 && newpages_pageids_unfiltered.length > 0) get_newpages_ids(how_many_more, callback_when_done);
else callback_when_done(newpages_pageids);
}
);
}
function updateNewPages()
{
$.getJSON(wgScriptPath + '/api.php?format=json&action=query&list=recentchanges&rcnamespace=0&rclimit=500&rctype=new&rcprop=ids',
function(ret){
var pages = ret['query']['recentchanges'];
for(var i = 0; i < pages.length; i ++)
newpages_pageids_unfiltered.push(pages[i].pageid);
get_newpages_ids(update_newpages_count, function(pageids) {
var pageids = pageids.sort(function(a,b){return b-a}).splice(0, update_newpages_count);
var j = 0;
var text = '';
for(var i = 0; i < pageids.length; i ++)
{
var title = newpages[pageids[i]];
/* !!! СЛЕДУЮЩАЯ СТРОКА ОПРЕДЕЛЯЕТ ФОРМАТ ШАБЛОНА */
text += '• [[' + title + ']]<br />';
}
/* !!! СЛЕДУЮЩАЯ СТРОКА ОПРЕДЕЛЯЕТ ФОРМАТ ШАБЛОНА */
text += " '''[[Служебная:NewPages|Все]]'''<noinclude>[[Категория:Заглавная страница|{{PAGENAME}}]]</noinclude>";
$.post(wgScriptPath + '/api.php', {
format: 'json',
action: 'edit',
title: 'Шаблон:Новые_статьи',
minor: 1,
summary: '[[MediaWiki:Update-newpages.js]]: автоматическое обновление шаблона {{Новые статьи}}',
token: edittoken,
text: text
});
});
});
}
if(wgAction == 'edit' || wgAction == 'submit')
{
$(function(){
if(wgNamespaceNumber == 0 && wgArticleId == 0)
$('#wpSave').click(function(){ document.cookie = 'creatingArticle=' + encodeURIComponent(wgPageName) + '; path=/'; });
});
}
if(wgArticleId != 0 && wgAction == 'view' && document.referrer.match(/action=(edit|submit)/) && document.cookie.match('creatingArticle=' + encodeURIComponent(wgPageName)))
{
updateNewPages();
}
/* </nowiki></pre> */