User:L10nM4st3r/ReportUser.js

// /* Created by User:L10nM4st3r

To use, simply add "mw.loader.load('//en.wikibooks.org/w/index.php?title=User:L10nM4st3r/ReportUser.js&action=raw&ctype=text/javascript');" to you /common.js subpage. After doing that, go to RC, look for a user making really bad edits, and go to their userpage, talkpage, or contributions page. Press the "report" tab and give a reason to report them. Then they will automatically be reported to the admins. On TODO list: * Maybe: Use custom UI, rather than being lazy and using a very limited prompt command * Allow using preset reasons * Check if user is already blocked

/////////// Settings the user can change //////

var force_enabled_for_admins = false; // If true, even admins can use the script

var can_report_self = false; // If true, the user can report themselves. Useful for testing the script

///////////////////////////////////////////////

function success{ if(same){ same=false; mw.notify("User already reported",{type:'error'}); }	else mw.notify("Successfuly reported user!"); } function failed{ if(same){ same=false; mw.notify("User already reported",{type:'error'}); }	else mw.notify("Unable to report user. Perhaps you don't have permission to edit your local vandalism reporting page?",{type:'error'}); }

// Used in showing the correct error message. Do not modify deafult value. var same=false;

$.when($.ready,mw.loader.using(['mediawiki.util','mediawiki.api'])).then( function{

// Must have a user to accociate the page with if (mw.config.get('wgRelevantUserName') && ( mw.config.get('wgRelevantUserName') != mw.config.get('wgUserName') || can_report_self )

// Accepted wikis below /////////////////////////////////////////////////////////// && ['enwikibooks','metawiki','uncy_en'].includes(mw.config.get('wgDBname'))

// Sysops do not need this, disabled automatically && ( !mw.config.get('wgUserGroups').includes('sysop') || force_enabled_for_admins )

// User must be autoconfirmed to use this script in the first place. && mw.config.get('wgUserGroups').includes('autoconfirmed')){

var node = mw.util.addPortletLink('p-cactions','','Report','utreportuser',"Report this user to the local admins.");

$(node).on('click',function(e) {		var user = mw.config.get('wgRelevantUserName');		var reason = prompt("Give a reason for reporting "+user+".\n\nExamples: spam, vandalism, blanking pages, LTA (long-term abuse)\n\nLeave blank to cancel.");

// There MUST be a reason filled out for the edit to take place if(reason) { var ad = " (using ReportUser "+version+")"; var summary = "Reporting user "+user+" (talk · contribs)";

// Used to see if user is already reported var tag = ''; var full_reason = reason+' '+tag; // Report user, depending on the wiki

///////// en wikibooks ///////// if(mw.config.get('wgDBname') == 'enwikibooks') new mw.Api.edit('Wikibooks:Reading_room/Administrative_Assistance',function(revision){					ad = " (using ReportUser "+version+")";					if (revision.content.includes('')){same=true;return{text:revision.content}}					return {						text: revision.content+"\n\n==Please block "+user+' (talk · contribs)==\nReason: '+full_reason+' ~',						summary: summary+ad,					};				}).then(function{success},function{failed});

///////// meta ///////// else if(mw.config.get('wgDBname') == 'metawiki') new mw.Api.edit('Meta:Requests_for_help_from_a_sysop_or_bureaucrat',function(revision){					if (revision.content.includes()){same=true;return{text:revision.content}}					return {						text: revision.content+"\n\n"+user+,						summary:summary+ad,					};				}).then(function{success},function{failed});

///////// uncyclopedia ///////// else if(mw.config.get('wgDBname') == 'uncy_en') new mw.Api.edit('Uncyclopedia:Ban_Patrol',function(revision){					if (revision.content.includes('')){same=true;return{text:revision.content}}					section = "== Manual Ban Patrol (new stuff below this line) ==";					message = "\n "+full_reason+" ~";					// Something went wrong, and the section was not found. Instead show at the bottom of the page with the other scripted reports.					// Why we don't just report this with the other scripted reports is because it is easier for the admins this way. Plus, it might lead to those scripts getting improved ;) if(!revision.content.includes(section)) return { text: revision.content+message,summary:summary+ad+" - ERROR: edit section not found, unable to correctly format report so dumping at the bottom (please report this bug!)"}; return { text: revision.content.replace(section,section+message), summary: summary+ad, };				}).then(function{success},function{failed});

}		else // No reason given. Aborted the report mw.notify('You must give a reason to request to have this user blocked.',{type:'error'}); e.preventDefault; }); }}); //