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 += "&nbsp;&nbsp;&nbsp;'''[[Служебная: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> */
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты