User:X/grantAdmin.js: Difference between revisions
< User:X
m (X moved page User:Void/grantAdmin.js to User:X/grantAdmin.js: Move to my userspace to maintain) |
(rework) |
||
Line 94: | Line 94: | ||
user: username, | user: username, | ||
add: 'sysop', | add: 'sysop', | ||
reason: '+sysop', | reason: '+[[Test Wiki:Administrators|sysop]]; Requested', | ||
token: rightsToken, | token: rightsToken, | ||
} | } | ||
Line 122: | Line 122: | ||
action: 'edit', | action: 'edit', | ||
title: 'User talk:' + username, | title: 'User talk:' + username, | ||
summary: ' | summary: 'Administrator permissions granted', | ||
nocreate: 1, | nocreate: 1, | ||
appendtext: ' | appendtext: '==Administrator permissions granted== {{done}}. Please follow our [[Test Wiki:Policies|policies]] when performing tests and non-test actions. Feel free to ask questions on a [[Test Wiki:Stewards|steward]]'s talk page, or on the [[Test Wiki:Community portal|community portal]]. Happy testing!', | ||
token: mw.user.tokens.get( 'csrfToken' ) | token: mw.user.tokens.get( 'csrfToken' ) | ||
} | } | ||
Line 143: | Line 143: | ||
action: 'edit', | action: 'edit', | ||
title: 'User talk:' + username, | title: 'User talk:' + username, | ||
summary: ' | summary: 'Administrator permissions granted', | ||
createonly: 1, | createonly: 1, | ||
text: '{{ | text: '==Administrator permissions granted== {{done}}. Please follow our [[Test Wiki:Policies|policies]] when performing tests and non-test actions. Feel free to ask questions on a [[Test Wiki:Stewards|steward]]'s talk page, or on the [[Test Wiki:Community portal|community portal]]. Happy testing!', | ||
token: mw.user.tokens.get( 'csrfToken' ) | token: mw.user.tokens.get( 'csrfToken' ) | ||
} | } |
Revision as of 13:27, 22 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: '+[[Test Wiki:Administrators|sysop]]; Requested',
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." );
} );
}
function alertUser(username) {
//If page already exists
$.ajax( {
url: mw.util.wikiScript( 'api' ),
type: 'POST',
dataType: 'json',
data: {
format: 'json',
action: 'edit',
title: 'User talk:' + username,
summary: 'Administrator permissions granted',
nocreate: 1,
appendtext: '==Administrator permissions granted== {{done}}. Please follow our [[Test Wiki:Policies|policies]] when performing tests and non-test actions. Feel free to ask questions on a [[Test Wiki:Stewards|steward]]'s talk page, or on the [[Test Wiki:Community portal|community portal]]. Happy testing!',
token: mw.user.tokens.get( 'csrfToken' )
}
} ).done( function (data) {
//console.log(data);
}).fail( function ( e, data ){
console.log( e.message );
console.log( JSON.stringify( data ) );
});
//If pages does not exist
$.ajax( {
url: mw.util.wikiScript( 'api' ),
type: 'POST',
dataType: 'json',
data: {
format: 'json',
action: 'edit',
title: 'User talk:' + username,
summary: 'Administrator permissions granted',
createonly: 1,
text: '==Administrator permissions granted== {{done}}. Please follow our [[Test Wiki:Policies|policies]] when performing tests and non-test actions. Feel free to ask questions on a [[Test Wiki:Stewards|steward]]'s talk page, or on the [[Test Wiki:Community portal|community portal]]. Happy testing!',
token: mw.user.tokens.get( 'csrfToken' )
}
} ).done( function (data) {
//console.log(data);
}).fail( function ( e, data ){
console.log( e.message );
console.log( JSON.stringify( data ) );
});
}