User:DodoMan/grantadmin.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Created page with "//Script to add sysop to a user on one click //To do: add toggles for different skins if( mw.config.get("wgRelevantUserName") ) { var username = mw.config.get("wgRelevantUserName"); $.getJSON( //Get user's group membership mw.util.wikiScript('api'), { format: 'json', action: 'query', list: 'users', usprop: 'groups', ususers: username } ).done( function ( data ) { try { if(data.query.users[0].groups.indexOf(..."
 
m FuzzyBot moved page User:DodoMan~usurped/grantadmin.js to User:DodoMan/grantadmin.js: Part of translatable page "User:DodoMan~usurped"
 
(2 intermediate revisions by one other user not shown)
(No difference)

Latest revision as of 12:56, 2 April 2024

//Script to add sysop to a user on one click
//To do: add toggles for different skins
if( mw.config.get("wgRelevantUserName") ) {
	var username = mw.config.get("wgRelevantUserName");
	$.getJSON(
	//Get user's group membership
    mw.util.wikiScript('api'),
    {
        format: 'json',
        action: 'query',
        list: 'users',
        usprop: 'groups',
        ususers: username
    }
	).done( function ( data ) {
    try {
    	if(data.query.users[0].groups.indexOf('sysop') >= 0) {/* Do nothing */}
    	else {
			var link = mw.util.addPortletLink(
	    		'p-cactions',
	    		'#',
	    		'Grant admin',
		    	'pt-grantadminlink',
			 	'Grant admin privleges to this user'
			);
		
			$(link).click(function() {
				checkAndPromote(username);
			});
    	}
    }
    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 checkAndPromote(username) {
	$.getJSON(
	//Get user's group membership again
    mw.util.wikiScript('api'),
    {
        format: 'json',
        action: 'query',
        list: 'users',
        usprop: 'groups',
        ususers: username
    }
	).done( function ( data ) {
    try {
    	if(data.query.users[0].groups.indexOf('sysop') >= 0) {/* Do nothing */}
    	else {
    		check = confirm("Do you want to give " + username + " administrator privleges on this wiki?");
			if (check) {
				grantAdmin(username);
				alertUser(username);
				alert(username + " is now an administrator");
			}
    	}
    }
    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 grantAdmin(username) {
$.getJSON(
	//Get userrights token
    mw.util.wikiScript('api'),
    {
        format: 'json',
        action: 'query',
        meta: 'tokens',
        type: 'userrights'
    }
).done( function ( data ) {
    try {
    	var rightsToken = data.query.tokens.userrightstoken;
    	//Grant admin
    	$.ajax( {
	        url: mw.util.wikiScript( 'api' ),
    	    type: 'POST',
        	dataType: 'json',
        	data: {
	            format: 'json',
	            action: 'userrights',
	            user: username,
	            add: 'sysop',
	            reason: '+sysop',
	            token: rightsToken,
	        }
	    } ).done(console.log( "Granted sysop to: " + username )
	    ).fail( function ( e, data ){
	    	console.log( e.message );
	    	console.log( JSON.stringify( data ) );
	    });
    }
    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." );
} );
}