Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
(Adding common js to insert CSS class hooks for the categories a page belongs to.)
 
m (c)
Line 2: Line 2:
   
 
(function () {
 
(function () {
  +
console.log("Running common.js code");
 
function slugifyCategory(cat) {
 
function slugifyCategory(cat) {
 
// Turn category names into a safe CSS class suffix
 
// Turn category names into a safe CSS class suffix
Line 13: Line 14:
   
 
function addCategoryClasses() {
 
function addCategoryClasses() {
  +
console.log("Running addCategoryClasses from wikipage.content hook");
 
// MediaWiki provides categories in config on most page views
 
// MediaWiki provides categories in config on most page views
 
const cats = mw.config.get('wgCategories');
 
const cats = mw.config.get('wgCategories');
  +
console.log("addCategoryClasses, got categories:", cats);
   
 
if (!Array.isArray(cats) || !cats.length) return;
 
if (!Array.isArray(cats) || !cats.length) return;

Revision as of 20:26, 31 December 2025

/* Any JavaScript here will be loaded for all users on every page load. */

(function () {
  console.log("Running common.js code");
  function slugifyCategory(cat) {
    // Turn category names into a safe CSS class suffix
    return String(cat)
      .trim()
      .toLowerCase()
      .replace(/_/g, '-')
      .replace(/\s+/g, '-')
      .replace(/[^a-z0-9-]/g, '');
  }

  function addCategoryClasses() {
    console.log("Running addCategoryClasses from wikipage.content hook");
    // MediaWiki provides categories in config on most page views
    const cats = mw.config.get('wgCategories');
    console.log("addCategoryClasses, got categories:", cats);

    if (!Array.isArray(cats) || !cats.length) return;

    cats.forEach(function (cat) {
      var slug = slugifyCategory(cat);
      if (slug) document.body.classList.add('cat-' + slug);
    });
  }

  // Run on initial load and after partial page updates
  mw.hook('wikipage.content').add(addCategoryClasses);
})();