Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump.
This code will be executed when previewing this page.
This code will be executed when previewing this page.
Documentation for this user script can be added at User:Sam Sailor/common.js/tier1.
/* global SS, mw, $ */
/* MODULE NAVIGATION:
[Main loader: [[User:Sam_Sailor/common.js]]]
[Modules: [[User:Sam_Sailor/common.js/tier1.js|Always]] | [[User:Sam_Sailor/common.js/tier2.js|C/C/H/W]] |
[[User:Sam_Sailor/common.js/tier3.js|Work]] | [[User:Sam_Sailor/common.js/tier4.js|Exists]] |
[[User:Sam_Sailor/common.js/tier4_0.js|NS 0]] | [[User:Sam_Sailor/common.js/tier4_0_118.js|NS 0/118]] |
[[User:Sam_Sailor/common.js/tier4_118.js|NS 118]] | [[User:Sam_Sailor/common.js/tier4_118_2.js|NS 118/2]] |
[[User:Sam_Sailor/common.js/tier4_2_3.js|NS 2/3]] | [[User:Sam_Sailor/common.js/tier4_4.js|NS 4]] |
[[User:Sam_Sailor/common.js/tier4_4_odd.js|NS 4/ODD]] | [[User:Sam_Sailor/common.js/tier4_6_7.js|NS 6/7]] |
[[User:Sam_Sailor/common.js/tier4_10_11.js|NS 10/11]] | [[User:Sam_Sailor/common.js/tier4_14_15.js|NS 14/15]] |
[[User:Sam_Sailor/common.js/tier5.js|Special]]]
*/
/**
* ===============================================================
* TIER 1: Unconditional, load everywhere
* ===============================================================
*/
window.SCRIPT_CONFIG.push(
// Custom navigation links for Copyright Patrol, JWB, NPP, etc.
{
condition: SS.always,
dependencies: ['mediawiki.util', 'jquery'],
inlineCode: [
"$(function() {",
" mw.util.addPortletLink('p-navigation', '//tools.wmflabs.org/copypatrol/en', 'CP', 'n-copypatrol', 'Copyright patrol');",
" mw.util.addPortletLink('p-navigation', mw.util.getUrl('Wikipedia:AutoWikiBrowser/Script'), 'JWB', 'n-jwb', 'JWB');",
" mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:NewPages', {dir: 'prev', hidepatrolled: 1, hideredirs: 0}), 'NPP', 'n-npp', 'NPP');",
" mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:RandomInCategory/All_Wikipedia_articles_needing_copy_edit'), 'Random copy edit', 't-random-copyedit', 'View a random article needing copy editing');",
" var rd = mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:RandomInCategory/All_disambiguation_pages'), 'Random disambig', 'n-random-disambig', 'Load a random disambiguation page');",
" if (rd) rd.querySelector('a').classList.add('mw-disambig');",
" mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:RandomRedirect'), 'Random redirect', 'n-randomredirect', 'Load a random redirect');",
"});"
]
},
// [[User:Daniel_Quinlan/Scripts/Blame.js]]
{
page: 'User:Daniel_Quinlan/Scripts/Blame.js',
condition: SS.always,
dependencies: ['mediawiki.api', 'mediawiki.storage', 'mediawiki.user', 'mediawiki.util', 'mediawiki.DateFormatter', 'oojs-ui-core']
},
// [[User:Novem Linguae/Scripts/CopyTitle.js]] not needed, functionality included in [[m:User:Sam_Sailor/EasyLinks.js]] loaded in global.js
// [[User:GeneralNotability/cumarkips.js]]
{
page: 'User:GeneralNotability/cumarkips.js',
condition: SS.always,
dependencies: ['mediawiki.util']
},
// [[User:Amorymeltzer/crathighlighter.js]]
{
page: 'User:Amorymeltzer/crathighlighter.js',
condition: SS.OFF,
dependencies: ['mediawiki.util', 'mediawiki.Title', 'jquery']
},
// [[User:Jeeputer/defconIndicator.js]]
{
page: 'User:Jeeputer/defconIndicator.js',
condition: SS.OFF,
dependencies: ['mediawiki.util']
},
// [[User:Polygnotus/Scripts/ExternalLinkMonitor.js]]
{
page: 'User:Polygnotus/Scripts/ExternalLinkMonitor.js',
condition: SS.OFF,
dependencies: ['mediawiki.util', 'mediawiki.api']
},
// [[User:DannyS712/hide.js]]
{
page: 'User:DannyS712/hide.js',
condition: SS.always
},
// [[User:GeneralNotability/ip-ext-info.js]]
{
page: 'User:GeneralNotability/ip-ext-info.js',
condition: SS.always,
dependencies: ['mediawiki.util']
},
// [[User:Anomie/linkclassifier.js]]
{
page: 'User:Anomie/linkclassifier.js',
// Loads everywhere EXCEPT Special:UnusedCategories to avoid conflicts with the category script's internal loader.
condition: () => !SS.onSpecial('UnusedCategories')(),
inlineCode: [
"// Custom category for 'redirects with possibilities'",
"mw.hook('LinkClassifier').add(function(lc) {",
" lc.cats['redirect-with-possibilities'] = ['Category:Redirects with possibilities'].sort();",
"});",
"// Ensure the styles are loaded",
"importStylesheet('User:Anomie/linkclassifier.css');"
],
dependencies: ['mediawiki.util', 'mediawiki.user']
},
// [[User:Frostly/mark-rocked.js]]
{
page: 'User:Frostly/mark-rocked.js',
condition: SS.always,
dependencies: ['mediawiki.util', 'mediawiki.api']
},
// [[User:Mdaniels5757/markAdmins.js]] appends status letters (e.g., (A), (B)) to usernames of admins and other officials.
// 2026-03 note: This script loads a significant data file (~850k). Using [[User:Amorymeltzer/crathighlighter.js]] instead.
/// [[User:Enterprisey/offset-history-link.js]]
{
page: 'User:Enterprisey/offset-history-link.js',
condition: SS.always,
dependencies: ['mediawiki.api', 'mediawiki.util']
},
// [[User:Ahecht/Scripts/pageswap.js]]
{
page: 'User:Ahecht/Scripts/pageswap.js',
condition: SS.always,
dependencies: ['mediawiki.api', 'mediawiki.util', 'jquery']
},
// [[User:Jeeputer/PCBIndicator.js]]
{
page: 'User:Jeeputer/PCBIndicator.js',
condition: SS.OFF,
dependencies: ['mediawiki.util']
},
// [[User:BrandonXLF/PortletLinks.js]]
{
page: 'User:BrandonXLF/PortletLinks.js',
condition: SS.OFF,
dependencies: ['mediawiki.util', 'mediawiki.api', 'mediawiki.user']
},
// Inspired by [[User:Enterprisey/reload-with-safe-mode.js]] at [[Special:PermanentLink/929765444]]
// Reloads the current page in "Safe Mode" (safemode=1) to bypass all user scripts and gadgets.
{
condition: SS.always,
inlineCode: [
"mw.util.addPortletLink(",
" 'p-tb', ",
" mw.util.getUrl(SS.pageName, { safemode: '1' }), ",
" 'View in safe mode', ",
" 't-safe-mode', ",
" 'Reload this page without any user scripts or gadgets'",
");"
]
},
// [[User:Polygnotus/Scripts/RfCMonitor.js]] monitors added and removed [[Wikipedia:Requests for comment]]s.
{
page: 'User:Polygnotus/Scripts/RfCMonitor.js',
condition: SS.always,
dependencies: ['mediawiki.util', 'mediawiki.api', 'jquery']
},
// [[User:Novem_Linguae/Scripts/ShowAdminMessages.js]] shows messages targeted at extended confirmed users, admins, checkusers, template editors, etc., and highlights them yellow.
// Essentially a CSS stylesheet wrapped in a JavaScript call to mw.util.addCSS; added in [[User:Sam Sailor/common.css]].
// [[User:Evad37/ToDoLister.js]] adds a "to-do" list manager to the toolbar to track and manage tasks on a personal user subpage.
{
page: 'User:Evad37/ToDoLister.js',
// Load everywhere to allow adding any page (including Special pages) to the list and to manage the list on its subpage.
condition: SS.OFF,
inlineCode: [
"window.todo_portlet = 'p-cactions';",
"window.todo_subpage = 'UPtodo';",
"window.todo_addfirst = 'yes';",
"window.todo_viewnew = 'no';",
"window.todo_viewlabel = '→todo';",
"window.todo_addlabel = '+todo';"
],
dependencies: ['mediawiki.util', 'mediawiki.api', 'ext.gadget.libExtraUtil']
},
// [[User:DannyS712/Userspace.js]] adds a "Search own userspace" link to the sidebar.
{
page: 'User:DannyS712/Userspace.js',
condition: SS.always,
dependencies: ['mediawiki.util']
},
// [[User:Ponor/wAwB.js]], new 2026, builds on the idea of JWB and extends its functionality in several ways.
{
page: 'User:Ponor/wAwB.js',
condition: SS.always,
dependencies: ['mediawiki.util', 'jquery']
},
);