User:Cheeseskates/global.js

// Direct JavaScript code. /* Note: When there is a code/etc.js page with the code, please put the page name into ImportArticles instead. ////////////////////////////////////////////////////////////////////////////////

/**/ ///————————————————————— Major Direct JavaScript code ———————————————————————/// /**/

/* -- -- */ ////////////////////////////////////////////////////////////////////////////////
 * * Name:       Global navbar modifications                                 |
 * * Author:     KockaAdmiralac <1405223@gmail.com>                          |
 * * Description: Modifies the global navbar to add useful buttons           |

window.globalLinks = { global: { "User"       : "Special:Mypage", "Talk"       : "Special:Mytalk", "Contribs"   : "Special:MyContributions", "Admins"     : "Special:ListAdmins", "Activity"   : "Special:RecentChanges?hidebots=0", "Maintenance" : "Special:Maintenance", "Torus"      : "Special:Torus", "Purge"      : "%page%?action=purge", "QQX"        : "%page%?uselang=qqx", "Raw"        : "%page%?action=raw", },   community: { "AL"         : "Special:AbuseLog", "NW"         : "Special:Newwikis", "Images"     : "Special:BlankPage/UncategorizedFileListing", "Global JS"  : "Special:Mypage/global.js", "Global CSS" : "Special:Mypage/global.css" },   undertale: { "AL"         : "Special:AbuseLog" } };

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

/* -- -- */ ////////////////////////////////////////////////////////////////////////////////
 * * Name:       Rollback                                                    |
 * * Author:     Ozank Cx                                                    |
 * * Description: Grants the ability to Rollback edits without the right.    |
 * * Changes: I changed some variable names, made the code neater, and       |
 * changed the Rollback summary to something vandals cannot benefit from.    |

mw.loader.using("mediawiki.api", function {    var self = {        init: function  {            if ($(".mw-rollback-link").length) {                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  { self.getRevisionIdAndContent($(this).attr("data-id")); $(this).parent.remove; });       },        getRevisionIdAndContent: function (term) {            var cb = new mw.Api;            cb.get({ action: "query", prop: "revisions", titles: term, rvprop: "user|ids", rvlimit: 500, cb: (new Date).getTime }).done(function (body) { if (!body.error) { var sks; var id; for (id in body.query.pages) { sks = body.query.pages[id].revisions; }                   var node = sks[0].user; var params; var revids; for (id in sks) { if (sks[id].user != node) { params = sks[id].user; revids = sks[id].revid; break; }                   }                    if (params) { cb.get({                           action: "query",                            prop: "revisions",                            rvprop: "content",                            revids: revids,                            cb: (new Date).getTime                        }).done(function (body) {                            if (!body.error) {                                var later = "";                                var page;                                for (page in body.query.pages) {                                    if (body.query.pages[page].revisions) {                                        later = body.query.pages[page].revisions[0]["*"];                                    }                                }                                self.performRollback(term, later, node, params);                            } else {                                (new BannerNotification("Unable to rollback (failed to get page content): " + body.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): " + body.error.code, "error")).show;                }            }).fail(function  {                (new BannerNotification("Unable to rollback: failed to get revisions!", "error")).show;            }); },       performRollback: function (value, key, dataAndEvents, startArray) { var that = new mw.Api; var codeSegments = " "; that.post({               action: "edit",                title: value,                text: key,                summary: codeSegments,                token: mw.user.tokens.values.editToken            }).done(function (replay) {                if (!replay.error) {                    (new BannerNotification("Rollback successful!", "confirm")).show;                } else {                    (new BannerNotification("Unable to rollback (failed to publish edit): " + replay.error.code, "error")).show;                }            }).fail(function  {                (new BannerNotification("Unable to rollback: failed to publish edit!", "error")).show;            }); }   };    self.init; });

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

/**/ ///————————————————————— Minor Direct JavaScript code ———————————————————————/// /**/

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

// Add a history button on diff pages if ($('strong:contains("Changes:")').length) { $("#WikiaPageHeader").find("p").children("a").after(' (history)'); }

// Prevent the editor from loading when opening a redlink page a = $('a[href$="?action=edit&redlink=1"]'); if (a.attr("href")) { a.attr("href", a.attr("href").replace("?action=edit&redlink=1", "")); }

//// // ——————————————————— End Direct Import JavaScript Code ———————————————————— // ////

// Script Configurations ////////////////////////////////////////////////////////////////////////////////

// AjaxRC: Used to Make imputted pages refresh in Ajax. window.ajaxRefresh = 1000; window.AjaxRCRefreshText = 'Auto-refresh'; window.AjaxRCRefreshHoverText = 'Automatically refresh the page'; window.ajaxPages = [

//// // ——————————————————— Temporary Watchlist (for vandals) ———————————————————— // //// //Add below when necessary.

/*———————————————————————————————————————————————————————————————————————————————— ———————————————————————————————————————————————————————————————————————————————— /* ////* English (en)                                       *//// "Special:WikiActivity", "Special:RecentChanges", "Special:Watchlist", "Special:AbuseLog", "Special:Log", "Special:Log/upload", "Special:Images", "Special:Videos","Special:Newwikis", "Report:Vandalism", "Report:Spam", "Report:User profile headers", "Report:Users and IPs needing checked",
 * // Interlanguage Wiki Pages //                           |
 * Note 1: The order is according to the Language Brigade Wiki.                    |
 * Note 2: The first language name is the English word. The second language        |
 * name is the language's word/original word. The two letters after are the        |
 * abbreviations for the second language names.                                    |
 * 1. Always add the language names in this order: English word -> Original ↓      |
 * -> Abbreviation (e.g. fr for french)                                            |
 * 2. Always add the page names in this order: WikiActivity -> RecentChanges -> Log |
 * Note 3: The Chinese and Romanian's WikiActivity are the same as the English     |
 * WikiActivity page, and the Brazilian Portuguese (including their Log page),     |
 * Catalan, Galician, and occitan's WikiActivity are the same as the Spanish       |
 * WikiActivity page. Because of this, They are not added to prevent duplication.  |
 * WikiActivity page, and the Brazilian Portuguese (including their Log page),     |
 * Catalan, Galician, and occitan's WikiActivity are the same as the Spanish       |
 * WikiActivity page. Because of this, They are not added to prevent duplication.  |

////* German (Deutsch) (de)                             *//// "Spezial:WikiActivity", "Spezial:Letzte_Änderungen", "Spezial:Logbuch",

////* Spanish (Español) (es)                            *//// "Especial:WikiActivity", "Especial:CambiosRecientes", "Especial:Registro",

////* Suomi (Finnish) (fi)                              *//// "Toiminnot:WikiActivity", "Toiminnot:Tuoreet_muutokset", "Toiminnot:Loki",

////* French (Français) (fr)                            *//// "Spécial:WikiActivity", "Spécial:Modifications_récentes", "Spécial:Journal",

////* Italian (Italiano) (it)                           *//// "Speciale:WikiActivity", "Speciale:UltimeModifiche", "Speciale:Registri",

////* Japanese (日本語) (ja)                            *//// "特別:WikiActivity", "特別:最近の更新", "特別:ログ",

////* Korean (한국어) (ko)                              *//// "특수기능:위키활동내역", "특수기능:최근바뀜", "특수기능:기록",

////* Nederlands (nl)                                   *//// "Speciaal:WikiActivity", "Speciaal:RecenteWijzigingen", "Speciaal:Logboeken",

////* Polish (Polski) (pl)                              *//// "Specjalna:Aktywność_na_wiki", "Specjalna:Ostatnie_zmiany", "Specjalna:Rejestr",

////* Brazilian Portuguese (Português do Brasil) (pt-br) *//// "Especial:Mudanças_recentes",

////* Russian (Русский) (ru)                            *//// "Служебная:WikiActivity", "Служебная:RecentChanges", "Служебная:Log",

////* Vietnamese (Tiếng Việt) (vi)                      *//// "Đặc_biệt:Hoạt_động_wiki", "Đặc_biệt:Thay_đổi_gần_đây", "Đặc_biệt:Nhật_trình",

////* Chinese (中文) (zh)                               *//// "Special:最近更改", "Special:日志",

////* Chinese (Taiwan) ( 中文(台灣) ) (zh-tw)           *//// "特殊:WikiActivity", "特殊:近期變動", "特殊:日誌",

////* Afrikaans (af)                                    *//// "Spesiaal:WikiActivity", "Spesiaal:Onlangse_wysigings", "Spesiaal:Logboek",

////* Arabic (العرب) (ar)                                *//// ////* Note: RecentChanges and Log pages have been swapped here due to textspace compatibility issues. *//// "خاص:WikiActivity", "خاص:أحدث_التغييرات", "خاص:سجل",

////* Belorussian (Беларуская) (be)                     *//// "Адмысловае:WikiActivity", "Адмысловае:RecentChanges", "Адмысловае:Log",

////* Bulgarian (Български) (bg)                        *//// "Специални:WikiActivity", "Специални:Последни_промени", "Специални:Дневници",

////* Catalan (Català) (ca)                             *//// "Especial:Canvis_recents", "Especial:Registre",

////* Greek (Ελληνικά) (el)                             *//// "Ειδικό:WikiActivity", "Ειδικό:ΠρόσφατεςΑλλαγές", "Ειδικό:Μητρώο",

////* Estonia (Eesti) (et)                              *//// "Eri:WikiActivity", "Eri:Viimased_muudatused", "Eri:Logid",

////* Farsi (فارسی) (fa)                                 *//// ////* Note: RecentChanges and Log pages have been swapped here due to textspace compatibility issues. *//// "ویژه:WikiActivity", "ویژه:تغییرات_اخیر", "ویژه:سیاهه‌ها",

////* Galician (Galego) (gl)                            *//// "Especial:Cambios_recentes", "Especial:Rexistros",

////* Hungarian (Magyar) (hu)                           *//// "Speciális:WikiActivity", "Speciális:Friss_változtatások", "Speciális:Rendszernaplók",

////* Indonesian (Bahasa Indonesia) (id) *//// "Istimewa:WikiActivity", "Istimewa:Perubahan_terbaru", "Istimewa:Catatan",

////* Limburg (Limburgs in Dutch) (li)                  *//// ////* Note: Wikiactivity is the same as the Nederlands' WikiActivity page, so it is not included. *//// "Speciaal:Lètste_verangeringe", "Speciaal:Logbeuk",

////* Lithuanian (Lietuvių) (lt)                        *//// "Specialus:WikiActivity", "Specialus:Naujausi_keitimai", "Specialus:Sąrašas",

////* Norwegian Bokmål ( ‪Norsk (bokmål) ‬) (no)          *//// "Spesial:WikiActivity", "Spesial:Siste_endringer", "Spesial:Logg",

////* Occitan (oc)                                      *//// "Especial:Darrièrs_cambiaments", "Especial:Jornal",

////* Romanian (Română) (ro)                            *//// "Special:Schimbări_recente", "Special:Jurnal",

////* Serbian / serbian (Српски / Srpski) (sr)          *//// "Посебно:WikiActivity", "Посебно:СкорашњеИзмене", "Посебно:Извештај",

////* Ukrainian (Українська) (uk)                       *//// "Спеціальна:WikiActivity", "Спеціальна:RecentChanges", "Спеціальна:Log",

///////////* End Language page section *///////////

//// // —————————————————————————— End AjaxRC Section ———————————————————————————— // ////

];

// AjaxBlock Configuration window.AjaxBlock = { blockReasons: { "Misbehaving. (appeal)"                                      : "Misbehaving", "Disruption. (appeal)"                                       : "Disruption", "spamming. (appeal)"                  : "Spamming", "trolling. (appeal)"            : "Trolling", "Banditry. (appeal)"                  : "Banditry", "Shocking content. (appeal)"       : "Shocking Content", "Sockpuppeting. (appeal)" : "Sockpuppet", "Cross-wiki drama. (appeal)"                                 : "Cross-Wiki Drama", "Cross-wiki Vandal/troll." : "Cross-Wiki Vandal/Troll", "Vandal/spam bot." : "Vandal/Spam Bot", "Violating Wikia's ToU." : "ToU Violation", },   check: { creation : true,  /* Blocked users cannot create new accounts                       */ talk     : false, /* Blocked user can access their talkpage                         */ autoBlock : true, /* The IPs within the blocked IP range are blocked automatically  */ override : true,  /* This block overwrites other blocks placed prior                */ } };

// AjaxDelete Configuration window.AjaxDelete = { deleteReasons: { "w:Help:Vandalism": "Vandalism", "w:Help:Spam": "Spam", "Marked for speedy deletion": "Speedy", "Empty page": "Empty", "Author's request": "Author request", "Irrelevant to ": "Irrelevant", "Failed to comply with the manual of style for over 6 months": "MoS" },   imageDeleteReasons: { "Offensive": "Offensive", "inappropriate": "inappropriate", "Harassment": "Harassment", "Housekeeping/Unused": "Unused", "Copyright infringement": "Copyright", "Author's request": "Author request" },   autoCheckWatch: false, noUndelete: true };

// CacheCheck Configuration /* Add between the brackets the pages this script does not activate on. */ window.cacheSkip = [];

/* The number of links it will check and cross out before going no futher. Note: 1E3 = 1,000 links. */ window.cacheSkipLimit = 1E3;

/* I'm not entirely sure what this does, so I left it blank. */ window.topLevelCat = "";

// Fast Delete Configuration var fdButtons = [];            /* Delete Summaries */                          /* Button Labels */ fdButtons[fdButtons.length] = {"summary" : "spam",            "label" : "S"     }; fdButtons[fdButtons.length] = {"summary" : "vandalism",  "label" : "V"     }; fdButtons[fdButtons.length] = {"summary" : "Housekeeping",                    "label" : "HK"    }; fdButtons[fdButtons.length] = {"summary" : "Cleanup",                         "label" : "C"     }; fdButtons[fdButtons.length] = {"summary" : "Unused",                          "label" : "U"     }; fdButtons[fdButtons.length] = {"summary" : "Unofficial/Not-Needed/Irrelevant", "label" : "UNI"  }; fdButtons[fdButtons.length] = {"summary" : "Other reason",                    "label" : "Other" };

//RailWAM Configuration window.railWAM = { // This creates the WAM Log page under my user namespace. logPage:"User:Cheeseskates/WAM Log" };

// WHAM Configuration /** WHAM bots me by default */ WHAMBotMe = true;

/** Default reason */ WHAMBotReason = "Official Cleanup Business";

/** Ticks equaling 0.1 seconds. 1,000 ticks = 1 second */ WHAMDelay = 100;

/**/ ///————————————————— JavaScript wrapped in ImportArticles ———————————————————/// /**/ $(function {   importArticles({ type: "script", articles: [ "u:dev:MediaWiki:AjaxBatchDelete/code.2.js", "u:dev:MediaWiki:AjaxBatchUndelete.js", "u:dev:MediaWiki:AjaxBlock/code.js", "u:dev:MediaWiki:AjaxDelete/code.js", "u:dev:MediaWiki:AjaxPatrol/code.js", "u:dev:MediaWiki:AjaxRC/code.js", "u:dev:MediaWiki:AjaxRename/code.js", "u:dev:MediaWiki:AjaxThreadUnfollow/code.js", "u:dev:MediaWiki:AntiUnicruft/code.js", "u:dev:MediaWiki:ArchiveTool/code.js", "u:dev:MediaWiki:AutoEditPages/code.js", "u:dev:MediaWiki:CacheCheck/code.js", "u:dev:MediaWiki:CatFilter/code.js", "u:dev:MediaWiki:CategoryRenameAuto-update/code.js", "u:dev:MediaWiki:ContribsLink/code.js", "u:dev:MediaWiki:DifferentSkinEditor/code.js", "u:dev:MediaWiki:DiscussionsFeed.js", "u:dev:MediaWiki:DisplayTimer/code.js", "u:dev:MediaWiki:DupImageList/code.js", "u:dev:MediaWiki:EditIntroButton/code.js", "u:dev:MediaWiki:EntityConvert/code.js", "u:dev:MediaWiki:FastDelete/code.js", "u:dev:MediaWiki:FastOldImageDelete/code.js", "u:dev:MediaWiki:FileUsageAuto-update/code.js", "u:dev:MediaWiki:FindAndReplace/code.js", "u:dev:MediaWiki:FloatingTableHeader/Code.js", "u:dev:MediaWiki:FloatingToc/code.js", "u:dev:MediaWiki:GlobalEditcount/code.js", "u:dev:MediaWiki:HeaderLinks/code.js", "u:dev:MediaWiki:LastEdited/code.js", "u:dev:MediaWiki:ListFiles/code.js", "u:dev:MediaWiki:MarkBlocked.js", "u:dev:MediaWiki:MarkForDeletion/code.js", "u:dev:MediaWiki:MassBlock/code.js", "u:dev:MediaWiki:MassCategorization/code.js", "u:dev:MediaWiki:MassNullEdit/code.js", "u:dev:MediaWiki:MassProtect/code.js", "u:dev:MediaWiki:MassRename/code.js", "u:dev:MediaWiki:MassRenameRevert/code.js", "u:dev:MediaWiki:MassUserRights/code.js", "u:dev:MediaWiki:MessageBlock/code.js", "u:dev:MediaWiki:MisspelledPage/code.js", 'u:dev:MediaWiki:MonobookHighlight.js', "u:dev:MediaWiki:NullEditButton/code.js", "u:dev:MediaWiki:OldFilePages/code.js", "u:dev:MediaWiki:PageRenameAuto-update/code.js", "u:dev:MediaWiki:PortableCSSPad/code.js", "u:dev:MediaWiki:ProtectedHighlight/code.js", "u:dev:MediaWiki:QuickDiff/code.js", "u:dev:MediaWiki:Quick Management/code.js", "u:dev:MediaWiki:QuickThreads/code.js", "u:dev:MediaWiki:QuickToolsv2/code.js", "u:dev:MediaWiki:RailWAM/code.js", "u:dev:MediaWiki:ReaderMode/code.js", "u:dev:MediaWiki:ReplyAndClose/code.js", "u:dev:MediaWiki:RevealAnonIP/code.js", "u:dev:MediaWiki:ThreadIndicator/code.js", "u:dev:MediaWiki:Thread Inspection/code.js", "u:dev:MediaWiki:UnsafeScripts/code.js", "u:dev:MediaWiki:View Source/code.js", "u:dev:MediaWiki:YouTubeModal/code.js", "u:admintools:MediaWiki:Common.js/ajaxRollback.js", "u:admintools:MediaWiki:Common.js/extraRollbacks.js", "u:admintools:MediaWiki:Common.js/iprange.js", "u:admintools:MediaWiki:Common.js/Maintenance.js", "u:josephhawk:User:Josephyr/categorycleanup.js", "u:josephhawk:User:Josephyr/filecleanup.js", "u:josephhawk:User:Josephyr/linksweeper.js", "u:josephhawk:User:Josephyr/redirects.js", "u:josephhawk:User:Josephyr/tc.js", "u:kocka:MediaWiki:AjaxCommentDelete/code.js", "u:kocka:MediaWiki:AjaxThreadDelete/code.js", "u:kocka:MediaWiki:MessageWallActions/code.js", "u:kocka:MediaWiki:RedirectMessageWall/code.js", "u:kocka:User:KockaAdmiralac/GlobalNavModifications.javascript", "u:kocka:User:KockaAdmiralac/PatrolAll.javascript", "u:kocka:User:KockaAdmiralac/TorusAutoFullscreen.javascript", "u:monchbox:MediaWiki:Torus.js", "u:starmanw:MediaWiki:MultiUpload/code.js", "u:starmanw:MediaWiki:QuickLogs/code.js", "u:starmanw:User:Dorumin/WHAM", ]   }); });