User:TotallyLogical/global.js

/*FD Buttons*/ window.fdButtons = [ {       summary: 'Housekeeping', label: 'HK' },   {        summary: 'Vandalism', label: 'V'   }, {       summary: 'Spam', label: 'S'   } ]; //*MassEdit config// window.MassEditConfig = { interval: 1500, placement: { element: "tools", type: "prepend" } };

//*QuickMod Config// window.QuickModTools = { quickreasons: [ "Trolling", "Sockpuppet", "Spam", "Acting in an unnaceptable manner" ],	defbanreason: "Acting in an unacceptable manner", defbanlength: "1 hour" } //*Rollback// /*Rollback*/ mw.loader.using('mediawiki.api', function {	//Exit if normal rollback links are present	if ($('.mw-rollback-link').length || window.RollbackWikiDisable) return;	var conf = mw.config.get([ 'wgAction', 'wgCanonicalSpecialPageName', 'wgContentLanguage', 'wgPageName', 'wgUserLanguage' ]),	i18n = {		en: {			rollback: "rollback",			description: "&quot;Rollback&quot; reverts edit(s) to this page of the last contributor in one click",			summary: "Reverted edits by $1 (talk) to last version by $2",			summaryShort: "Reverted edits by $1 (talk) to last version by $2",			editConflict: "Unable to rollback (edit conflict)",			contentFail: "Unable to rollback (failed to get page content)",			singleEditor: "Unable to rollback (no different editor found)",			revisionFail: "Unable to rollback (failed to get revisions)",			editFail: "Unable to rollback (failed to publish edit)",			success: "Rollback successful"		},		ru: {			rollback: "rollback",			description: "&quot;Rollback&quot; reverts edit(s) to this page of the last contributor in one click",			summary: "Откат правок без статуса откатчика (скрипт)", summaryShort: "Reverted edits by $1 (script)", editConflict: "Произошёл конфликт правок", contentFail: "Произошла ошибка", singleEditor: "Произошла ошибка", revisionFail: "Произошла ошибка", editFail: "Произошла ошибка", success: "Откат совершен" },		fr: { rollback: "révoquer", description: "&quot;Rollback&quot; révoque la/les modification(s) du dernier contributeur de cette page en un clic", summary: "Révoqué les modifications par $1 (talk) à la dernière version par $2 (script)", summaryShort: "Révoqué les modifications par $1 (script)", editConflict: "Impossible de révoquer (conflit de modifications)", contentFail: "Impossible de révoquer (échec de l'obtention du contenu de la page)", singleEditor: "Impossible de révoquer (aucun éditeur différent trouvé)", revisionFail: "Impossible de révoquer (échec de l'obtention des révisions)", editFail: "Impossible de révoquer (échec de la publication de la modification)", success: "Révocation(s) réussie(s) !" }	};	i18n = i18n[conf.wgContentLanguage] || i18n[conf.wgContentLanguage.split('-')[0]] || i18n[conf.wgUserLanguage] || i18n[conf.wgUserLanguage.split('-')[0]] || i18n.en; //History if (conf.wgAction == "history" && $('#pagehistory li').length > 1) $('#pagehistory li:first .mw-history-undo a').before(' ' + i18n.rollback + ' | '); //Contributions else if (conf.wgCanonicalSpecialPageName == "Contributions") { $('#mw-content-text ul').find('li').each(function {			if ($(this).find('.mw-uctop').length)				$(this).append(' [' + i18n.rollback + '] ');		}); }	//Diffs else if (($.getUrlVar('diff') || $.getUrlVar('oldid')) && $('#differences-nextlink').length === 0) $('.mw-usertoollinks:last').after('   [' + i18n.rollback + '] '); else return; conf.API = new mw.Api; conf.token = mw.user.tokens.values.editToken; mw.util.addCSS('.mw-custom-rollback-link a { cursor: pointer; }'); $('.mw-custom-rollback-link a').click(function {		getRevisionIdAndContent($(this).data('id'),$(this).data('user').replace(/_/g, " "));		$(this).parent.remove;	}); function getRevisionIdAndContent(title,target) { conf.API.get({		action: 'query',		prop: 'revisions',		titles: title,		rvprop: 'user|ids',		rvlimit: 500,		cb: new Date.getTime		}) .done(function(d) {			if (!d.error) {				var revisions;				for (var i in d.query.pages) {					revisions = d.query.pages[i].revisions;				}				//Don't rollback if the page has been edited by somebody else				if (target != revisions[0].user) {					outputError(i18n.editConflict);					return;				}				var lastUser,				revId;				for (var i in revisions) {					if (revisions[i].user != target) {						lastUser = revisions[i].user; //remember last author						revId = revisions[i].revid; //get revision to revert to						break;					}				}				if (lastUser) {					conf.API.get({ action: 'query', prop: 'revisions', rvprop: 'content', revids: revId, cb: new Date.getTime })					.done(function(d) { if (!d.error) { var content = ""; //can be no content on page for (var i in d.query.pages) { if (d.query.pages[i].revisions) content = d.query.pages[i].revisions[0]["*"]; }							performRollback(title,content,target,lastUser); }						else outputError(i18n.contentFail + ': ' + d.error.code); })					.fail(function { outputError(i18n.contentFail); });				}				else					outputError(i18n.singleEditor);			}			else				outputError(i18n.revisionFail + ': ' + d.error.code);		}) .fail(function {			outputError(i18n.revisionFail);		}); }	function performRollback(page,text,user,user2) { var summary = i18n.summary.replace(/\$1/g,user).replace(/\$2/g,user2); if (summary.length > 150) summary = i18n.summaryShort.replace('$1',user); conf.API.post({		action: 'edit',		title: page,		text: text,		summary: summary,		minor: true,		token: conf.token		}) .done(function(d) {			if (!d.error) {				new BannerNotification(i18n.success,'confirm').show;							}			else				outputError(i18n.editFail + ': ' + d.error.code);		}) .fail(function {			outputError(i18n.editFail);		}); }	function outputError(text) { new BannerNotification(text,'error').show; } });

//* Rollback Ends// importArticles({   type: 'script',    articles: [        'u:dev:QuickCreateUserPage/code.js',        'u:dev:AnchoredRollback/code.js',        'u:dev:GlobalEditcount/code.js',        'u:dev:MediaWiki:AjaxEdit.js',        'u:dev:AjaxBatchDelete.js',        'u:dev:AjaxCommentDelete/code.js',        'u:dev:AjaxDelete/code.js',        'u:dev:AjaxDiff/code.js',        'u:dev:AjaxPatrol/code.js',        'u:dev:AjaxThreadDelete/code.js',        'u:dev:AjaxUndo/code.js',        'u:dev:MediaWiki:AjaxDiff/code.js',        'u:dev:LastEdited/code.js',        'u:dev:MassEdit/code.js',        'u:dev:MediaWiki:MassRenameRevert/code.js',        'u:dev:MediaWiki:Discussions Delete All/code.js',        'u:dev:EditBio/code.js',        'u:dev:MediaWiki:ArchiveTool/code.js',        'u:dev:ViewRemoved/code.js',        'u:dev:ShowUserGroups.js',        'u:dev:RevealAnonIP/usercode.js',        'u:dev:UnhideUserMasthead/code.js', 'u:dev:MediaWiki:NotesModule/code.js', 'u:dev:VSTFReport.js', 'u:dev:MediaWiki:MassBlock/code.js', 'u:dev:MediaWiki:MessageBlock/code.js', 'u:dev:MediaWiki:AdminDashboard block/code.js', 'u:dev:FindAndReplace/code.js', 'u:dev:WhatLinksHere/code.js', 'u:dev:FastDelete/code.js', 'u:dev:MediaWiki:QuickDelete/code.js', 'u:dev:BackToTopButton/code.js', 'u:dev:UserAccountAge/code2.js', 'u:dev:UserAndIPTools.js', 'u:dev:StickySummary.js', 'u:dev:MediaWiki:SourceEditButton.js', 'u:dev:MediaWiki:MultiUpload/code.js', 'u:dev:ClearSandbox/code.js', 'u:dev:MediaWiki:WhatLinksHere/code.js', 'u:dev:MediaWiki:Sine/code.js', 'u:dev:MediaWiki:UserRightsRecord/code.js', 'u:dev:MediaWiki:QuickTools/code.js', 'u:dev:MediaWiki:QuickModTools/code.js', 'u:dev:MediaWiki:Quick Management/code.js', 'u:dev:MediaWiki:WHAM/code.2.js', ] });