User:Void/testing.js: Difference between revisions

From TestWiki
Content deleted Content added
-.-
what do the warnings say?
Line 144: Line 144:
movetalk: 1,
movetalk: 1,
noredirect: 1,
noredirect: 1,
ignorewarnings: 1,
reason: 'Reverting page moves',
reason: 'Reverting page moves',
token: mw.user.tokens.get( 'csrfToken' ),
token: mw.user.tokens.get( 'csrfToken' ),

Revision as of 00:20, 22 February 2017

/*
 * Simple script designed to mass undelete pages deleted by a user.
 * You are responsible for any and all actions you take using this tool. PLEASE be careful.
 */

//Add link
var user = mw.config.get( 'wgRelevantUserName' );
if( user !== null ){
	var unNuke = mw.util.addPortletLink(
	    'p-tb',
    	'#',
    	'un-Nuke',
    	'pt-unnuke',
    	'Undelete all pages deleted by this user.'
	);
}

$( unNuke ).click( function () {
	$.getJSON(
		//Get deletions
        mw.util.wikiScript('api'),
        {
            format: 'json',
            action: 'query',
            list: 'logevents',
            leprop: 'title',
            leaction: 'delete/delete',
            leuser: user,
            lelimit: 500 //Going all out
        }
    ).done( function ( data ) {
        try {
        	var titles = [];
        	for( i = 0; i < data.query.logevents.length; i++ ) {
        		titles.push( data.query.logevents[i].title );
        	}
        	for( i = 0; i < titles.length; i++){
        		undelete( titles[i] );
        	}
        }
        catch ( e ) {
            console.log( "Content request error: " + e.message );
            console.log( "Content request response: " + JSON.stringify( data ) );
        }
    } ).fail( function () {
        console.log( "While getting the userlist, there was an AJAX error." );
    } );
});

function undelete( pageTitle ) {
	$.ajax( {
        url: mw.util.wikiScript( 'api' ),
        type: 'POST',
        dataType: 'json',
        data: {
            format: 'json',
            action: 'undelete',
            title: pageTitle,
            reason: 'Mass undeletion of pages',
            token: mw.user.tokens.get( 'csrfToken' ),
        }
    } ).done(console.log( "Undeleted page: " + pageTitle )
    ).fail( function ( e, data ){
    	console.log( e.message );
    	console.log( JSON.stringify( data ) );
    });
}

//Add link
if( user !== null ){
	var unMove = mw.util.addPortletLink(
	    'p-tb',
    	'#',
    	'un-move',
    	'pt-un-move',
    	'Unmove all pages moved by this user.'
	);
}

$( unMove ).click( function () {
	$.getJSON(
		//Get deletions
        mw.util.wikiScript('api'),
        {
            format: 'json',
            action: 'query',
            list: 'logevents',
            leprop: 'title|details',
            leaction: 'move/move',
            leuser: user,
            lelimit: 500 //Going all out
        }
    ).done( function ( data ) {
        try {
        	var fromTitles = [];
        	var toTitles = [];
        	for( i = 0; i < data.query.logevents.length; i++ ) {
        		toTitles.push( data.query.logevents[i].title );
        		fromTitles.push( data.query.logevents[i].params.target_title );
        	}
        	for( i = 0; i < fromTitles.length; i++){
        		delPage( toTitles[i] );
        		unmove( fromTitles[i], toTitles[i] );
        	}
        }
        catch ( e ) {
            console.log( "Content request error: " + e.message );
            console.log( "Content request response: " + JSON.stringify( data ) );
        }
    } ).fail( function () {
        console.log( "While getting the userlist, there was an AJAX error." );
    } );
});

function delPage( pTitle ) {
	$.ajax( {
        url: mw.util.wikiScript( 'api' ),
        type: 'POST',
        dataType: 'json',
        data: {
            format: 'json',
            action: 'delete',
            title: pTitle,
            reason: 'Deleted to make way for move',
            token: mw.user.tokens.get( 'csrfToken' ),
        }
    } ).done(console.log( "Deleted page " + pTitle )
    ).fail( function ( e, data ){
    	console.log( e.message );
    	console.log( JSON.stringify( data ) );
    });
}

function unmove( fromTitle, toTitle ) {
	$.ajax( {
        url: mw.util.wikiScript( 'api' ),
        type: 'POST',
        dataType: 'json',
        data: {
            format: 'json',
            action: 'move',
            title: fromTitle,
            to: toTitle,
            movetalk: 1,
            noredirect: 1,
            reason: 'Reverting page moves',
            token: mw.user.tokens.get( 'csrfToken' ),
        }
    } ).done(console.log( "Moved page " + fromTitle + " to " + toTitle )
    ).fail( function ( e, data ){
    	console.log( e.message );
    	console.log( JSON.stringify( data ) );
    });
}