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

Материал из Lurkmore
Версия от 16:11, 18 марта 2017; imported>T kns
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

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

  • 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(!window.showmessage) {window.showmessage = alert;}

    var tok ='';

    function undosmot(revid, currevnum) {
      var delay = setTimeout(function() {
        clearTimeout(delay);

        $.ajax({
            url: '/api.php',
            data: {
                format: 'json',
                action: 'review',
                revid: revid,
                token: tok,
                comment: 'Автоматическая очистка выверенной статьи от старых досмотренных версий',
                'unapprove': 1
            },
            dataType: 'json',
            type: 'POST'
        }).success(function(d){
            var str = 'Ошибка //'+revid;
            if(d.review && d.review.result && d.review.result == 'Success') {
                str = 'С версии <a href="https://lurkmore.to/index.php?diff='+revid+'">'+revid+'</a> снят досмот //'+currevnum;
            }

            showmessage(str);
        });
      }, (currevnum*400));
    }

    function getflagged(ok) {
        if(ok === false) {showmessage('xyu');return;}

        var data = {
            format: 'json',
            action: 'query',
            prop: 'revisions',
            rvprop: 'ids|flagged',
            rvlimit: 500,
            titles: wgPageName
        }

        if(!isNaN(parseInt(ok,10))) {
            console.log('rvstartid: '+ok);
            data.rvstartid = ok;
        }

        $.ajax({
            url: '/api.php',
            data: data,
            dataType: 'json',
            type: 'POST'
        }).success(function(d){
            if(d.query && d.query.pages) {
                for(var i in d.query.pages) {
                    if(d.query.pages[i].revisions) {
                        var revs = d.query.pages[i].revisions, revslength = revs.length, k = 0;
                        for(var j=0; j < revslength; j++) {
                            if(revs[j].flagged && revs[j].flagged.tags.accuracy === 1) {
                                k++;
                                undosmot(revs[j].revid, k);
                            }
                        }
                        if(k > 0) {
                            showmessage('Всего досмотов: '+k);
                        } else {
                            showmessage('Досмотов нет');
                        }
                    }
                }
            }

            if(d['query-continue'] && d['query-continue'].revisions) {
                console.log('query-continue: '+d['query-continue'].revisions.rvstartid);
                getflagged(d['query-continue'].revisions.rvstartid);
            } else {
                console.log('no query-continue');
            }
        });
    }

    function gettok(cback) {
        $.ajax({
            url: '/api.php',
            data: {
                format: 'json',
                action: 'query',
                prop: 'info',
                intoken: 'edit',
                titles: wgPageName
            },
            dataType: 'json',
            type: 'POST'
        }).success(function(d){
            if(d.query && d.query.pages) {
                for(var i in d.query.pages) {
                    if(d.query.pages[i].edittoken) {
                        tok = d.query.pages[i].edittoken;
                        cback();
                        return;
                    }
                    break;
                }
            }
            cback(false);
        }).error(function(d) {
            console.log(d);
        });
    }


if(wgAction=="history" && window.wgStableRevisionId) {

    if(wgStableRevisionId != wgCurRevisionId) {
        showmessage('Последняя версия страницы не является стабильной. ОСТАНОВ');
        return;
    }

    var cleandosmot = $('<li><a href="#">Почистить досмоты</a></li>').on('click', function(e) {
        e.preventDefault();

        if(confirm('Почистить досмоты?')) {
            gettok(getflagged);
        }

    }).appendTo('#p-tb .pBody ul');;

}

});
//</pre>