Участник:T kns/portaltomain.js

Материал из Lurkmore
Перейти к навигацииПерейти к поиску

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
//<pre>
/*
*
*
*
*                    (   )
*                 (   ) (
*                  ) _   )
*                   ( \_
*                 _(_\ \)
*                (____\___))
*
*
*
*/

addOnloadHook(function() {if($('span.movetomainns').size() > 0) {$('span.movetomainns').on('click','a.external[href*=":Movepage/"]',function(e) {
    if(e.which > 1) {return;}
    e.preventDefault();

    var version = '1.21', lparams = $(this).attr('href').split('&'), plparams = {}, i =0, k ='', vertoffset = 0;
    for(i=0; i < lparams.length; i++) {
        k = lparams[i].split('=');
        plparams[k[0]] = k[1];
    }

    var newtitle = ((typeof plparams['wpNewTitle'] !== 'undefined')?plparams['wpNewTitle']: encodeURIComponent(wgPageName.replace("Портал:Ниасилили/",""))),
        reason = ((typeof plparams['wpReason'] !== 'undefined')?plparams['wpReason']: "Geronimo!"),
        token = '',
        pagetext = '';

    function formatdate(dt) {
        var utc = dt.getTime() + (dt.getTimezoneOffset() * 60000), date = new Date(utc + 10800000),
            Y = date.getFullYear().toString(), m = (date.getMonth()+1).toString(), d = date.getDate().toString();

        return (d.length>1?d:'0'+d)+"."+(m.length>1?m:'0'+m)+"."+Y;
    }

    function loaderror(j,e){
        showmessage('LoadError: '+e);
    }

    function reqerror(data, error) {
        if(typeof data === 'object' && typeof data.error !== 'undefined'
                && typeof data.error.info !== 'undefined') {
            var error = data.error.info;
        }

        showmessage('Error:\n'+error);
    }

    function undeleterevs(title) {
        showmessage('Восстановление истории страницы "'+title+'"');
                $.ajax({
                    url: '/api.php?'+$.param({format: 'json', action: 'undelete', title: title, token: token, reason: 'Техническое'}),
                    dataType: 'json', type: 'POST'
                }).success(function(data) {
                    if(typeof data === 'object' && typeof data.undelete !== 'undefined'
                            && typeof data.undelete.title === 'string') {
                        showmessage('История страницы "<a href="/?title='+encodeURIComponent(data.undelete.title)+'">'+data.undelete.title+'</a>" восстановлена');

                        var date = new Date();
                        createpage('Портал:Ниасилили/Выпускники/'+date.getFullYear(),
                            "\n# [["+data.undelete.title+"]] <sup>[''"+formatdate(date)+"'']</sup>"
                        );
                    } else {
                        reqerror(data,"undelete");
                    }

                }).error(loaderror);
    }

    function createpage(title, appendtext) {
                var data = {
                    format: 'json', action: 'edit',
                    title: title, token: token,
                    text: pagetext, summary: 'Вынесено из Инкубатора'
                };

                if (typeof appendtext !== 'undefined') {
                    data.appendtext = appendtext;
                    showmessage('Дополнение страницы "'+title+'"');
                } else {
                    showmessage('Создание страницы "'+title+'"');
                }
                $.ajax({
                    url: '/api.php',
                    data: data,
                    dataType: 'json', type: 'POST'
                }).success(function(data) {
                    if(typeof data === 'object' && typeof data.edit !== 'undefined') {
                        if(data.edit.result == "Success") {
                            if (typeof appendtext !== 'undefined') {
                                showmessage('Страница "<a href="/?title='+encodeURIComponent(data.edit.title)+'">'+data.edit.title+'</a>" дополнена');
                            } else {
                                showmessage('Страница "<a href="/?title='+encodeURIComponent(data.edit.title)+'">'+data.edit.title+'</a>" создана');
                                undeleterevs(data.edit.title);
                            }
                        } else {
                            showmessage('Ошибка при создании страницы "'+title+'"')
                        }
                    } else {
                        reqerror(data,"create");
                    }

                }).error(loaderror);
    }

    function deletepage(title) {
        showmessage('Удаление статьи "'+title+'"');
                $.ajax({
                    url: '/api.php?'+$.param({format: 'json', action: 'delete', title: title, token: token, reason: 'Техническое'}),
                    dataType: 'json', type: 'POST'
                }).success(function(data) {
                    if(typeof data === 'object' && typeof data.delete !== 'undefined'
                            && typeof data.delete.title === 'string') {
                        showmessage('Страница '+data.delete.title+' удалена');

                        createpage(data.delete.title);
                    } else {
                        reqerror(data,"delete");
                    }

                }).error(loaderror);
    }

    function movepage(pginfo) {
        showmessage('Переименование статьи "'+pginfo.title+'"');
        if(pginfo.title.replace(/ /g,'_') != wgPageName) {
            showmessage('Страница уже переименована и называется: "<a href="/?title='+encodeURIComponent(pginfo.title)+'">'+pginfo.title+'</a>"');
        } else {
            if(typeof pginfo.movetoken !== 'undefined') {
                $.ajax({
                    url: '/api.php?format=json&action=move&fromid='+wgArticleId
                        +'&to='+newtitle+'&reason='+reason
                        +'&token='+encodeURIComponent(pginfo.movetoken)+'&movetalk&noredirect&movesubpages',
                    dataType: 'json', type: 'POST'
                }).success(function(data) {
                    if(typeof data === 'object' && typeof data.move !== 'undefined'
                            && typeof data.move.to === 'string') {
                        showmessage('Страница "<a href="/?title='+encodeURIComponent(wgPageName)+'">'+wgPageName+'</a>" переименована в "<a href="/?title='+encodeURIComponent(data.move.to)+'">'+data.move.to+'</a>"');

                        deletepage(data.move.to);
                    } else {
                        reqerror(data,"move");
                    }
                }).error(loaderror);
            } else {
                reqerror(data,"token");
            }
        }
    }


    function getinfo(type, title) {
        $.getJSON('/api.php?'+$.param({
            format: 'json', action: 'query',
            prop: 'info|revisions', rvprop: 'content',
            intoken: type, titles: title
        })).success(function(data) {
            if(typeof data === 'object' && typeof data.query !== 'undefined'
                    && typeof data.query.pages !== 'undefined') {

                for(var i in data.query.pages) {
                    if(type == 'move' && typeof data.query.pages[i].movetoken !== 'undefined'
                            && typeof data.query.pages[i].revisions !== 'undefined') {
                        pagetext = data.query.pages[i]
                                        .revisions[0]['*']
                                        .replace(/^\s*[\{]{2}\s*recycle(?:[^[\{]{2}\n]|[^\n])+[\}]{2}\n\s*/i,'')
                                        .replace(/\s*<!--\s*((?:[\{]{2}[^\}]+[\}]{2}\s*)+)\s*-->\s*/g,'\n\n\n$1\n');
                        token = data.query.pages[i].movetoken;
                        movepage(data.query.pages[i]);
                    } else {
                        reqerror(data,"token");
                    }
                    break;
                }
            } else {
                reqerror(data,"info");
            }
        }).error(loaderror);
    }

/********************************/
    getinfo('move',wgPageName);
    showmessage('Version: '+version);

})}});

//</pre>