Difference between revisions of "User:SuperHamster/vector.js"

From Nookipedia, the Animal Crossing wiki
(Rm talk count)
(Remove, now a gadget)
Tag: Blanking
Line 1: Line 1:
/*
 
* This script adds a tab which allows a mass patrolling on the current page. Because it was pointless to mark as patrolled 10 intermediate versions when we can read the difference between the first and the last
 
* {{Projet:JavaScript/Script|Smart patrol}}
 
*/
 
  
if ( mw.config.get('wgNamespaceNumber') >= 0 ) {
 
 
    mw.loader.using( 'mediawiki.util', function () {
 
        $( function ( $ ) {
 
 
            var link = mw.util.addPortletLink( 'p-cactions', '#', 'Smart patrol', 'Smart patrol' );
 
            $( link ).click( function ( e ) {
 
                e.preventDefault();
 
                mw.loader.using( [ 'mediawiki.api', 'mediawiki.notify', 'oojs-ui' ], function () {
 
                    askToLaunch();
 
                } );
 
            } );
 
 
            function askToLaunch() {
 
                new OO.ui.confirm( 'Are you sure you want to patrol all the page revisions?' ).then( function ( response ) {
 
                    if ( response === true ) {
 
                        getAndProcessRevisions();
 
                    }
 
                } );
 
            }
 
 
            function getAndProcessRevisions( apicontinue ) {
 
                var params = {
 
                    'action': 'query',
 
                    'format': 'json',
 
                    'prop': 'revisions',
 
                    'titles': mw.config.get( 'wgPageName' ),
 
                    'formatversion': 2,
 
                    'rvprop': 'ids',
 
                    'rvlimit': 50
 
                };
 
                if ( apicontinue ) {
 
                    $.extend( params, apicontinue );
 
                }
 
                new mw.Api()
 
                    .get( params )
 
                    .then( function ( data ) {
 
                        var revisions = data.query.pages[ 0 ].revisions;
 
                        markRevisionsAsPatrolled( revisions )
 
                            .then( function ( shouldContinue ) {
 
                                if ( shouldContinue && data[ 'continue' ] ) {
 
                                    getAndProcessRevisions( data[ 'continue' ] );
 
                                } else {
 
                                    window.location.reload();
 
                                }
 
                            } )
 
                            .fail( function ( error ) {
 
                                mw.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
 
                            } );
 
                    } )
 
                    .fail( function ( error ) {
 
                        mw.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );
 
                    } );
 
            }
 
 
            function markRevisionsAsPatrolled( revisions ) {
 
                var deferred = $.Deferred();
 
                markOneAsPatrolled( revisions, 0, deferred );
 
                return deferred.promise();
 
            }
 
 
            function markOneAsPatrolled( revisions, index, deferred ) {
 
                var revid = revisions[ index ].revid;
 
                new mw.Api()
 
                    .postWithToken( 'patrol', {
 
                        'action': 'patrol',
 
                        'revid': revid
 
                    } )
 
                    .then( function ( info ) {
 
                        console.log( 'Successfully patrolled: ' + revid );
 
                        if ( revisions[ index + 1 ] ) {
 
                            markOneAsPatrolled( revisions, index + 1, deferred );
 
                        } else {
 
                            deferred.resolve( true );
 
                        }
 
                    } )
 
                    .fail( function ( error ) {
 
                        if ( error === 'notpatrollable' ) {
 
                            console.log( "Can't be patrolled as it's too old: " + revid );
 
                            deferred.resolve( false );
 
                        } else {
 
                            deferred.reject( error );
 
                        }
 
                    } );
 
            }
 
 
        } );
 
    } );
 
}
 

Revision as of 00:03, March 12, 2021