User:Ursuul/global.js

/** * @name:          DisableCode * @description:   Allows users to disable personal/site-wide JS/CSS for testing purposes * @author:        Count of Howard  * @date:          25/03/17 * @notes:         Designed for the Oasis skin; Monobook support may eventually be added */ /*jslint browser*/ /*global window, jQuery, mediaWiki*/ (function ($, mw) {   "use strict";    var config = mw.config.get([ "skin", "wgPageName", "wgArticlePath", "wgUserLanguage" ]);   if ( $("#disablecode").length || $.inArray(config.skin, ["monobook", "uncyclopedia", "wowwiki"]) !== -1 ) {       return;    }    var i18n = {            "en": {                title: "DisableCode",                reset: "Reset",                userJS: "Disable User JS",                userCSS: "Disable User CSS",                siteJS: "Disable Wiki JS",                siteCSS: "Disable Wiki CSS"            },            "be": {                title: "Адключэнне кода",                reset: "Скінуць",                userJS: "Адключыць карыстацкі JS.",                userCSS: "Адключыць карыстацкі CSS",                siteJS: "Адключыць карыстацкі JS",                siteCSS: "Адключыць карыстацкі CSS"            },            "ru": {                title: "Отключение кода",                reset: "Сбросить",                userJS: "Отключить пользовательский JS.",                userCSS: "Отключить пользовательский CSS",                siteJS: "Отключить пользовательский JS",                siteCSS: "Отключить пользовательский CSS" },           "uk": { title: "Відключення коду", reset: "Скинути", userJS: "Вимкнути користувальницкий JS.", userCSS: "Вимкнути користувальницкий CSS", siteJS: "Вимкнути користувальницкий JS", siteCSS: "Вимкнути користувальницкий CSS" }       },        parameters = { userJS: "useuserjs", userCSS: "useusercss", siteJS: "usesitejs", siteCSS: "usesitecss" },       lang = i18n[config.wgUserLanguage] || i18n[config.wgUserLanguage.split("-")[0]] || i18n.en; function assembleLink(text, p) { var href, search = (window.location.search) ? "&" : "?";       if (text === lang.reset) { href = config.wgArticlePath.replace("$1", config.wgPageName); } else { href = window.location.href.replace(/#.*/, "") + search + p + "=" + 0; }       return mw.html.element("li", {            class: "overflow"        }, new mw.html.Raw( mw.html.element("a", {               href: href,                title: text,                id: p            }, text) ));   }    function init { var $userJS = assembleLink(lang.userJS, parameters.userJS), $userCSS = assembleLink(lang.userCSS, parameters.userCSS), $siteJS = assembleLink(lang.siteJS, parameters.siteJS), $siteCSS = assembleLink(lang.siteCSS, parameters.siteCSS), $reset = assembleLink(lang.reset, "reset-parameters"); mw.util.addCSS(           "#disablecode-menu {" +                "left: 10px;" +                "right: auto;" +                "display: none;" +            "}"        ); $("", {           class: "mytools menu",            id: "disablecode"        }).html(            " " +                " " +            " " +            "" +                lang.title +            "" +            ""        ).prependTo(".toolbar .tools"); $("#disablecode-menu").append(           $reset,            $userJS,            $userCSS,            $siteJS,            $siteCSS        ); $("#disablecode").click(           function  {                $("#disablecode-menu").slideToggle("fast");            }        ); }   init; }(jQuery, mediaWiki));//Will remove once JS is reviewed*/

/////////////////////////////////////////////////////////////////////////// /*************************************************************************/ /*********************** Modified Code Quick Links ***********************/ /******************* Original Author — Count of Howard *******************/ /********* @http://dev.wikia.com/wiki/User_talk:Count_of_Howard **********/ /*************************************************************************/ /////////////////////////////////////////////////////////////////////////// (function {   if ($('#mwModule').length) {        return;    }

var mwVariables = mw.config.get([       'wgServer',        'wgArticlePath',        'wgUserLanguage'    ]), i18n = { 'en': { title: 'Quick Links', mpTitle: 'Personal', wwTitle: 'MediaWiki', hCSS: 'Chat.css', hJS: 'Chat.js', cCSS: 'Common.css', cJS: 'Common.js', mCSS: 'Monobook.css', mJS: 'Monobook.js', wCSS: 'Wikia.css', wJS: 'Wikia.js', gCSS: 'Global.css', gJS: 'Global.js', iJS: 'ImportJS', sJS: 'JS Pages' }   },    lang = i18n[mwVariables.wgUserLanguage] || i18n[mwVariables.wgUserLanguage.split('-')[0]] || i18n.en, mwFiles = [ {           title: lang.mpTitle, pages: [ {                   url:'global.js', name:lang.gJS },               {                    url:'global.css', name:lang.gCSS },               {                    url:'common.js', name:lang.cJS },               {                    url:'wikia.js', name:lang.wJS },               {                    url:'monobook.js', name:lang.mJS },               {                    url:'chat.js', name:lang.hJS },               {                    url:'common.css', name:lang.cCSS },               {                    url:'wikia.css', name:lang.wCSS },               {                    url:'monobook.css', name:lang.mCSS },               {                    url:'chat.css', name:lang.hCSS }           ]        },        {            title: lang.wwTitle, pages: [ {                   url:'Special:JSPages', name:lang.sJS },               {                    url:'MediaWiki:ImportJS', name:lang.iJS },               {                    url:'MediaWiki:Common.js', name:lang.cJS },               {                    url:'MediaWiki:Wikia.js', name:lang.wJS },               {                    url:'MediaWiki:Monobook.js', name:lang.mJS },               {                    url:'MediaWiki:Chat.js', name:lang.hJS },               {                    url:'MediaWiki:Common.css', name:lang.cCSS },               {                    url:'MediaWiki:Wikia.css', name:lang.wCSS },               {                    url:'MediaWiki:Monobook.css', name:lang.mCSS },               {                    url:'MediaWiki:Chat.css', name:lang.hCSS }           ]        }    ];

function init { mw.util.addCSS(           '.WikiaRail .module h2 {' +                'margin-bottom:0;' +            '}' +            '#mwModuleContent {' +                'position: relative;' +            '}' +            '#mwModuleDiv-0 {' +                'float:left;' +            '}' +            '#mwModuleDiv-1 {' +                'float:right;' +            '}' +            '#mwModuleTitle {' +                'font-size: 14px;' +                'white-space: pre-line;' +            '}' +            '#mwModuleText {' +                'display: block;' +                'text-align: left;' +                'font-size: 12px;' +                'font-weight: bold;' +                'margin: 5px 0;' +                'padding: 0 20px;' +            '}'        );

$('#WikiaRail').prepend(           $(' ')                .attr('class', 'module railModule')                .attr('id', 'mwModule')                .html( ' ' + lang.title + ' ' + ' '               )        );

for (var i = 0; i < mwFiles.length; i++) { columns(i); for (var j = 0; j < mwFiles[i].pages.length; j++) { instances(i, j); }       }    }

function columns(i) { $('#mwModuleContent').append(           $(' ')                .attr('id', 'mwModuleDiv-' + i)                .html( $(' ')                       .attr('id', 'mwModuleTitle') .text(mwFiles[i].title) )       );    }

function instances(i, j) { var address = mwVariables.wgServer + mwVariables.wgArticlePath; if (i === 0) { address = address.replace( "$1", 'Special:MyPage/' + mwFiles[i].pages[j].url); } else if (i === 1) { address = address.replace( "$1", mwFiles[i].pages[j].url); }

if ( //Yikes           mwVariables.wgServer.substr(7, mwVariables.wgServer.length-17) !== 'community' &&            ( (i === 0 && j === 0) || (i === 0 && j === 1) )       ) {            address = 'http://community.wikia.com/wiki/Special:MyPage/' + mwFiles[i].pages[j].url; }

$('#mwModuleDiv-' + i).append(           $('')                .attr('id', 'mwModuleText')                .attr('href', address)                .text(mwFiles[i].pages[j].name)        ); }

init; });//End CQL*/

/////////////////////////////////////////////////////////////////////////// /*************************************************************************/ /*************************** Modified Rollback ***************************/ /********************** Original Author — Ozuzanna ***********************/ /*************** @http://dev.wikia.com/wiki/User:Ozank_Cx ****************/ /*************************************************************************/ /////////////////////////////////////////////////////////////////////////// mw.loader.using('mediawiki.api', function {

var main = { init: function { //check if user has rollback permission already var userGroups = ["rollback","content-moderator","sysop","vstf","helper","staff"], ownGroups = mw.config.get('wgUserGroups'), hasPermissionAlready = false;

for (var i in ownGroups) { if (userGroups.indexOf(ownGroups[i]) !== -1) { hasPermissionAlready = true; break; }		}

if (hasPermissionAlready) return; if (mw.config.get('wgAction') == "history" && $('#pagehistory li').length > 1) $('#pagehistory li:first .mw-history-undo a').before(' rollback | '); else if (mw.config.get('wgCanonicalSpecialPageName') == "Contributions") { $('#mw-content-text ul').find('li').each(function {				if ($(this).find('.mw-uctop').length)					$(this).append(' [rollback] ');			}); }		else if (($.getUrlVar('diff') || $.getUrlVar('oldid')) && $('#differences-nextlink').length === 0) $('.mw-usertoollinks:last').after('   [rollback] '); $('.mw-custom-rollback-link a').click(function {			main.getRevisionIdAndContent($(this).attr('data-id'));			$(this).parent.remove;		}); },	getRevisionIdAndContent: function(title) { var API = new mw.Api; 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;				}				var currentUser = revisions[0].user, //current user rollbacking from				lastUser,				revId;				for (var i in revisions) {					if (revisions[i].user != currentUser) {						lastUser = revisions[i].user; //remember last author						revId = revisions[i].revid; //get revision to revert to						break;					}				}				if (lastUser) {					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 so initialise empty as failsafe for (var i in d.query.pages) { if (d.query.pages[i].revisions) content = d.query.pages[i].revisions[0]["*"]; }							main.performRollback(title,content,currentUser,lastUser); }						else new BannerNotification('Unable to rollback (failed to get page content): ' + d.error.code,'error').show; })					.fail(function { new BannerNotification('Unable to rollback: failed to get page content!','error').show; });				}				else					new BannerNotification('Unable to rollback: no different editor found!','error').show;			}			else				new BannerNotification('Unable to rollback (failed to get revisions): ' + d.error.code,'error').show;		}) .fail(function {			new BannerNotification('Unable to rollback: failed to get revisions!','error').show;		}); },	performRollback: function(page,text,user,user2) { var API = new mw.Api; API.post({		action: 'edit',		title: page,		text: text,		summary: 'Reverted edits by ' + user + ' (talk | block) to last version by ' + user2 + ' (script)',		token: mw.user.tokens.values.editToken		}) .done(function(d) {			if (!d.error) {				new BannerNotification('Rollback successful!','confirm').show;							}			else				new BannerNotification('Unable to rollback (failed to publish edit): ' + d.error.code,'error').show;		}) .fail(function {			new BannerNotification('Unable to rollback: failed to publish edit!','error').show;		}); } };

main.init; });//End MR*/

/////////////////////////////////////////////////////////////////////////// /*************************************************************************/ /***************************** Miscellaneous *****************************/ /*************************************************************************/ /////////////////////////////////////////////////////////////////////////// /* Rail Priority */ $(function {   mw.hook('DiscordIntegrator.added').add(function { $('.DiscordIntegratorModule').appendTo('#WikiaRail'); }); });//End RP*/

/* Stop Signature Check */ if (window.WikiaEditor && window.GlobalTriggers) { window.GlobalTriggers.bind('WikiaEditorReady', function callback {       window.GlobalTriggers.unbind('WikiaEditorReady', callback);        window.setTimeout(function { $('#wpSave').closest('form').off('submit.CheckSignature'); }, 0);   }); }//End SSC*/

/////////////////////////////////////////////////////////////////////////// /*************************************************************************/ /************************* Import Configurations *************************/ /*************************************************************************/ /////////////////////////////////////////////////////////////////////////// /* Ajax Delete */ window.AjaxDelete = { deleteReasons: { 'Housekeeping': 'Housekeeping', 'Marked for deletion': 'Marked for deletion', 'Author request': 'Author request', 'Empty page': 'Empty', 'Irrelevant to Diep.io': 'Irrelevant', 'Broken Redirect': 'Broken Redirect', 'Help:Vandalism': 'Vandalism', 'Help:Spam': 'Spam', 'Other': 'Other' },   imageDeleteReasons: { 'Innapropiate': 'Innapropiate', 'Harassment': 'Harassment', 'Housekeeping/Unused': 'Housekeeping', 'Copyright infringement': 'Copyright', 'Author request': 'Author request', 'Refuse Image': 'Refuse Image' },   autoCheckWatch: true, noUndelete: false };//End AD*/

/* Back to Top Button */ window.BackToTopSpeed = 1500; window.BackToTopStart = 400;//End BtTB*/

/* Talk Notifications */ window.talkWikis = ['diepio', 'zh.diepio', 'rings-of-the-master'/*, 'dresdenfiles', 'es.diepio', 'ru.diepio', 'fr.diepio', 'tr.diepio', 'pl.diepio', 'pt-br.diepio', 'ko.diepio', 'ja.diepio', 'hu.diepio', 'diepio-conception', 'lightbringer-series', 'community', 'portability', 'communitycouncil', 'cohdev', 'mopeio', 'es.mopeio', 'fr.mopeio', 'pl.mopeio', 'ru.mopeio', 'doblonsio', 'ru.doblonsio', 'deeeep-io', 'pl.deeeep-io', 'geometry-dash', 'tbacontest', 'fallout', 'rezero', 'hordesio', 'blocksio', 'orange-io', 'shadowofmordor', 'bloonsconception', 'team-of-cool-peeps', 'cohdev2', 'town-of-salem', 'mithermages', 'slitherio', 'agario', 'psychokid', 'tes-mods', 'cinder-spires', 'steven-universe', 'spookys-house-of-jump-scares', 'warmetal', 'onceuponatime', 'hillclimbracing', 'driftinio', 'kurofox', 'extreme-test', 'totmgsrocks-creatures-and-stuff', 'the-outstanding-remarkable-robotguy39', 'vstf', 'subnautica-concept'*/]; //window.talkName = 'Talk';//End TN*/

/* Cache Check */ window.cacheSkip = []; window.cacheSkipLimit = 1000; window.topLevelCat = '';//End CC*/

/* Skin Switch */ window.monoBookText = "Switch to Monobook"; window.oasisText = "Switch to Oasis"; window.mobileText = "Switch to Mercury";//End SS*/

/* RevealAnonIP */ window.RevealAnonIP = { permissions : ['user'] };//End RAIP*/

/* Mass Effect Configs */ batchDeleteDelay = 250; nukeDeleteReason = "Cleanup (Nuke Script)"; massRenameDelay = 500; massRenameSummary = 'Automatic Process'; massRedirectDelay = 500; massBlockDelay = 500; WHAMDelay = 1000; //End MEC*/

/////////////////////////////////////////////////////////////////////////// /*************************************************************************/ /******************************** Imports ********************************/ /*************************************************************************/ /////////////////////////////////////////////////////////////////////////// /* If Admin */ if (mw.config.get("wgUserGroups").indexOf('sysop') > -1) { importArticles({       type: 'script',        articles: [            'u:dev:MassCategorization/code.js',            'u:dev:MassRedirect/code.1.js',            'u:dev:MassProtect/code.js',            'u:dev:MassRename/code.js',            'u:dev:AnchoredRollback/code.js',            'u:dev:MassUserRights/code.js',            'u:dev:MassBlock/code.js',            'u:dev:MassRenameRevert/code.js',            'u:dev:MultipleFileDelete/code.js',            'u:dev:AutoEditPages/code.js',            'u:dev:RedirectManagement/code.js',            'u:dev:Nuke/code.js',            'u:dev:AjaxBatchDelete/code.js',            'u:dev:LastEdited/code.js',            'u:dev:PageRenameAuto-update/code.js',            'u:dev:AjaxDelete/code.js'        ]    }); }//End IA*/

/* If Content Mod */ if (mw.config.get("wgUserGroups").indexOf('content-moderator') > -1) { importArticles({       type: 'script',        articles: [            'u:dev:MassCategorization/code.js',            'u:dev:MassRedirect/code.1.js',            'u:dev:MassProtect/code.js',            'u:dev:MassRename/code.js',            'u:dev:AnchoredRollback/code.js',            'u:dev:MassRenameRevert/code.js',            'u:dev:MultipleFileDelete/code.js',            'u:dev:AutoEditPages/code.js',            'u:dev:RedirectManagement/code.js',            'u:dev:Nuke/code.js',            'u:dev:AjaxBatchDelete/code.js',            'u:dev:LastEdited/code.js',            'u:dev:PageRenameAuto-update/code.js',            'u:dev:AjaxDelete/code.js'        ]    }); }//End IfConMod*/

/* If Rollback */ if (mw.config.get("wgUserGroups").indexOf('rollback') > -1) { importArticles({       type: 'script',        articles: [            'u:dev:LastEdited/code.js',            'u:dev:AnchoredRollback/code.js'        ]    }); }//End IR*/

/* If Disc Mod */ if (mw.config.get("wgUserGroups").indexOf('threadmoderator') > -1) { importArticles({       type: 'script',        articles: [            'u:dev:LastEdited/code.js',            'u:dev:!mods/code.js'        ]    }); }//End IDM*/

/* If Chat Mod */ if (mw.config.get("wgUserGroups").indexOf('chatmoderator') > -1) { importArticles({       type: 'script',        articles: [            'u:dev:LastEdited/code.js',            'u:dev:!mods/code.js'        ]    }); }//End ICM*/

/* Universal Imports */ importArticles({   type: 'script',    articles: [        'u:kocka:VSTFReport/code.js',        'u:cohdev:User:Count_of_Howard/MUUW.coh',        'u:cohdev:User:Count_of_Howard/MG.lenny',        'u:dev:BlogLink/code.js',        'u:dev:ShowUserGroups.js',        'u:dev:FindAndReplace/code.js',        'u:dev:QuickToolsv2/code.js',        'u:dev:WallGreetingButton/code.js',        'u:dev:RevealAnonIP/usercode.js',        'u:dev:MarkBlocked.js',        'u:dev:BlankBlogBugfix/code.js',        'u:dev:YouTubeModal/code.js',        'u:dev:AutoEditDropdown/code.js',        'u:dev:SkinSwitchButton/code.js',        'u:dev:AjaxRedirect/code.js',        'u:dev:CacheCheck/code.js',        'u:dev:AllPagesHideRedirect/code.js',        'u:dev:UserTalkNotifications/code.js',        'u:dev:DiscussionsFeed.js',        'u:dev:PortableCSSPad/code.js',        'u:dev:AntiSoundcloud/code.js',        'u:dev:SearchSuggest/code.js', 'u:dev:ReferencePopups/code.js', 'u:dev:AjaxUndo/code.js', 'u:dev:RTCL.js', 'u:dev:BackToTopButton/code.js', 'u:dev:UserActivityTab/code.js', 'u:dev:Flags/code.js', 'u:dev:UnsafeScripts/code.js', 'u:dev:NullEditButton/code.js', 'u:dev:DisableCode/code.js', 'u:dev:WHAM/code.2.js', //'u:dev:GlobalChatJS.js' //'u:dev:MarkForDeletion/code.js', //'u:dev:ToggleSideBar/code.js' ] });//End UI*/