User:Synoman Barris/common.js: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
MakeRollbacker = function(name) |
|||
{ |
{ |
||
if (typeof( |
if (typeof(MakeRollbackerConfig) == "undefined") MakeRollbackerConfig = {}; |
||
var groupReason = |
var groupReason = MakeRollbackerConfig.groupReason || "Trusted user"; |
||
var sectionHeader = |
var sectionHeader = MakeRollbackerConfig.sectionHeader || "Rollback"; |
||
var sectionBody = |
var sectionBody = MakeRollbackerConfig.sectionBody || ("{{subst:"+"User:HJ Mitchell/Rollback}}~~"+"~~"); |
||
var user; |
var user; |
||
Line 14: | Line 14: | ||
var req = sajax_init_object(); |
var req = sajax_init_object(); |
||
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?format=json&action=query&list=users&ustoken=userrights&ususers="+eUser+"&prop=info&intoken=edit&indexpageids&titles=User%20talk:"+eUser, false); |
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?format=json&action=query&list=users&ustoken=userrights&ususers="+eUser+"&prop=info&intoken=edit&indexpageids&titles=User%20talk:"+eUser, false); |
||
req.send("format=json&action=userrights&user=" + eUser + "&add= |
req.send("format=json&action=userrights&user=" + eUser + "&add=rollbacker&bot=1&reason=" + encodeURIComponent(groupReason) + "&token=" + encodeURIComponent(userrightstoken)); |
||
var info = eval("(" + req.responseText + ")"); |
var info = eval("(" + req.responseText + ")"); |
||
if (info.error) |
if (info.error) |
||
Line 29: | Line 29: | ||
var req = sajax_init_object(); |
var req = sajax_init_object(); |
||
var postdata = "format=json&action=userrights&user=" + eUser + "&add= |
var postdata = "format=json&action=userrights&user=" + eUser + "&add=rollbacker&token=" + encodeURIComponent(userrightstoken)+"&reason=" + encodeURIComponent(groupReason); |
||
req.open("POST", mw.config.get('wgScriptPath') + "/api.php", true); |
req.open("POST", mw.config.get('wgScriptPath') + "/api.php", true); |
||
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
||
Line 46: | Line 46: | ||
if (info.userrights.added.length==0) |
if (info.userrights.added.length==0) |
||
{ |
{ |
||
jsMsg("User already is in the |
jsMsg("User already is in the Rollbacker group"); |
||
return false; |
return false; |
||
} |
} |
||
Line 67: | Line 67: | ||
return false; |
return false; |
||
} |
} |
||
jsMsg("Done making "+user+" a |
jsMsg("Done making "+user+" a Rollbacker"); |
||
} |
} |
||
}; |
}; |
||
Line 78: | Line 78: | ||
if( mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3 ) |
if( mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3 ) |
||
{ |
{ |
||
addOnloadHook(function(){addPortletLink( "p-cactions", "javascript: |
addOnloadHook(function(){addPortletLink( "p-cactions", "javascript:MakeRollbacker()", (typeof(MakeRollbackerConfig)!="undefined"&&MakeRollbackerConfig.portletTitle)||"+rollback", "portlet-make-rollbacker");}); |
||
} |
} |
Revision as of 14:07, 5 March 2022
MakeRollbacker = function(name)
{
if (typeof(MakeRollbackerConfig) == "undefined") MakeRollbackerConfig = {};
var groupReason = MakeRollbackerConfig.groupReason || "Trusted user";
var sectionHeader = MakeRollbackerConfig.sectionHeader || "Rollback";
var sectionBody = MakeRollbackerConfig.sectionBody || ("{{subst:"+"User:HJ Mitchell/Rollback}}~~"+"~~");
var user;
var user = (mw.config.get('wgTitle').indexOf('/') != -1) ? (mw.config.get('wgTitle').split('/')[0]) : mw.config.get('wgTitle');
var eUser = encodeURIComponent(user.replace(/ /g, "_"));
jsMsg("Getting tokens");
var req = sajax_init_object();
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?format=json&action=query&list=users&ustoken=userrights&ususers="+eUser+"&prop=info&intoken=edit&indexpageids&titles=User%20talk:"+eUser, false);
req.send("format=json&action=userrights&user=" + eUser + "&add=rollbacker&bot=1&reason=" + encodeURIComponent(groupReason) + "&token=" + encodeURIComponent(userrightstoken));
var info = eval("(" + req.responseText + ")");
if (info.error)
{
jsMsg("Error when getting the tokens");
return false;
}
var userrightstoken = info.query.users[0].userrightstoken;
var edittoken = info.query.pages[info.query.pageids[0]].edittoken;
jsMsg("Setting bit");
var req = sajax_init_object();
var postdata = "format=json&action=userrights&user=" + eUser + "&add=rollbacker&token=" + encodeURIComponent(userrightstoken)+"&reason=" + encodeURIComponent(groupReason);
req.open("POST", mw.config.get('wgScriptPath') + "/api.php", true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", postdata.length);
req.onreadystatechange = function()
{
if(req.readyState == 4 && req.status == 200)
{
var info = eval("(" + req.responseText + ")");
if (info.error)
{
jsMsg("Error when setting the group on "+user);
return false;
}
if (info.userrights.added.length==0)
{
jsMsg("User already is in the Rollbacker group");
return false;
}
jsMsg("Notifying user");
var req2 = sajax_init_object();
var postdata2 = "format=json&action=edit&title=User_talk:" + eUser + "§ion=new¬minor=1&summary=" + encodeURIComponent(sectionHeader) + "&text="+encodeURIComponent(sectionBody)+"&token=" + encodeURIComponent(edittoken);
req2.open("POST", mw.config.get('wgScriptPath') + "/api.php", true);
req2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req2.setRequestHeader("Content-length", postdata2.length);
req2.onreadystatechange = function()
{
if(req2.readyState == 4 && req2.status == 200)
{
var info = eval("(" + req2.responseText + ")");
if (info.error)
{
jsMsg("Error when setting the group on "+user);
return false;
}
jsMsg("Done making "+user+" a Rollbacker");
}
};
req2.send(postdata2);
}
};
req.send(postdata);
}
if( mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3 )
{
addOnloadHook(function(){addPortletLink( "p-cactions", "javascript:MakeRollbacker()", (typeof(MakeRollbackerConfig)!="undefined"&&MakeRollbackerConfig.portletTitle)||"+rollback", "portlet-make-rollbacker");});
}