User:Eithris/common.js

/* Require confirmation on rollback */ $.when( mw.loader.using( ['mediawiki.util'] ), $.ready).then( function {	$(".mw-rollback-link").on('click', function(e) { var count = e.target.innerText.match(/\d/) ? e.target.innerText.match(/\d+/)[0] : null, message = 'Rollback ' + (count ? count + ' edits' : 'edit') + ' by ' + mw.util.getParamValue('from',e.target.href) + '?'; if(!confirm(message)) return e.preventDefault; }); });

/* Mass patrol */ if ( mw.config.get('wgNamespaceNumber') >= 0 ) {

mw.loader.using( 'mediawiki.util', function {        $( function ( $ ) {

var link = mw.util.addPortletLink( 'p-cactions', '#', 'Patrol all', 'Patrol all' ); $( link ).click( function ( e ) {               e.preventDefault;                mw.loader.using( [ 'mediawiki.api', 'oojs-ui' ], function  { 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 );                        }                    } ); }

} );   } ); }