/* See [[User:Alex 21/script-categoriessort.js]], original script by [[User:Alex 21]]The main script page is [[User:Epicgenius/sortcategories.js]].*/mw.loader.using("mediawiki.util", function () {// Only run script if user is editing an articleif (!document.forms.editform || (mw.config.get("wgAction") !== "edit" && mw.config.get("wgAction") !== "submit")) {return;}$(function($) {/*if (config.mw.wgNamespaceNumber == 1 || //talk pageconfig.mw.wgArticleId === 0 || // Page doesn't exist) {return;} else ()*/mw.loader.using( ['mediawiki.util'] ).then( function () {var portletlink = mw.util.addPortletLink('p-tb', '#', 'Sort categories');$(portletlink).click( function(e) {e.preventDefault();// Get textbox valuevar wpTextbox1 = document.getElementById('wpTextbox1');var wpTextbox1_V = wpTextbox1.value;// Categories to checkvar category = "[[Category:";var categoryA = category+"A ";var categoryAn = category+"An ";var categoryThe = category+"The ";var categoryEnd = "]]"; // This might match to both categories and linksvar categoryEponymous = category+mw.config.get("wgTitle");var defaultSort = "{{DEFAULTSORT:";var stubTag = "-stub}}";var someTemplateEnd = "}}";// Get the text up to the start of the categories, and then all of the text with the categories.var categoriesStart = wpTextbox1_V.indexOf(category);var categoriesEnd = wpTextbox1_V.lastIndexOf(categoryEnd);var textBeforeCategories = wpTextbox1_V.substr(0, categoriesStart).trim();var textWithCategories = wpTextbox1_V.substr(categoriesStart,categoriesEnd-categoriesStart+2).trim();var textAfterCategories = wpTextbox1_V.substr(categoriesEnd+2).trim();// Categories should be on new lines, so split by new line, sort alphabetically with a few checks, then join again with new lines.// Checks: eponymous categories are listed first; categories are sorted without preceding "The"var splitCategories = textWithCategories.split("\n");splitCategories.sort(function(a, b) {if (a.substr(0, categoryEponymous.length) == categoryEponymous) return -1e8;if (b.substr(0, categoryEponymous.length) == categoryEponymous) return 1e8;if (a.substr(0, categoryThe.length) == categoryThe) a = a.replace(categoryThe, category);if (b.substr(0, categoryThe.length) == categoryThe) b = b.replace(categoryThe, category);if (a.substr(0, categoryA.length) == categoryA) a = a.replace(categoryA, category);if (b.substr(0, categoryA.length) == categoryA) b = b.replace(categoryA, category);if (a.substr(0, categoryAn.length) == categoryAn) a = a.replace(categoryAn, category);if (b.substr(0, categoryAn.length) == categoryAn) b = b.replace(categoryAn, category);return a.localeCompare(b);});textWithCategories = splitCategories.join("\n");if (wpTextbox1_V.indexOf(defaultSort) < 0) {textWithCategories = "\n"+textWithCategories;} else {textWithCategories = textWithCategories;}if (wpTextbox1_V.indexOf(stubTag) < 0) {textWithCategories = textWithCategories;} else {textWithCategories = textWithCategories+"\n\n\n";}// Merge pre-category text back with the sorted and joined category text, place back in textbok and add summary.wpTextbox1.value = textBeforeCategories+"\n"+textWithCategories+textAfterCategories;setoptions(minor = 'true');setreason('sorted categories alphabetically via [[User:Epicgenius/sortcategories|script]]', 'append');doaction('diff');});});});});
🔥 Top keywords: Main PageSpecial:SearchPage 3Wikipedia:Featured picturesHouse of the DragonUEFA Euro 2024Bryson DeChambeauJuneteenthInside Out 2Eid al-AdhaCleopatraDeaths in 2024Merrily We Roll Along (musical)Jonathan GroffJude Bellingham.xxx77th Tony AwardsBridgertonGary PlauchéKylian MbappéDaniel RadcliffeUEFA European Championship2024 ICC Men's T20 World CupUnit 731The Boys (TV series)Rory McIlroyN'Golo KantéUEFA Euro 2020YouTubeRomelu LukakuOpinion polling for the 2024 United Kingdom general electionThe Boys season 4Romania national football teamNicola CoughlanStereophonic (play)Gene WilderErin DarkeAntoine GriezmannProject 2025