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.)
 
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 16: Line 16:
 
const cats = mw.config.get('wgCategories');
 
const cats = mw.config.get('wgCategories');
   
if (!Array.isArray(cats) || !cats.length) return;
+
if (!Array.isArray(cats) || !cats.length) {
  +
console.log("addCategoryClasses, no categories found");
  +
}
   
 
cats.forEach(function (cat) {
 
cats.forEach(function (cat) {

Latest revision as of 20:29, 31 December 2025

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

(function () {
  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() {
    // MediaWiki provides categories in config on most page views
    const cats = mw.config.get('wgCategories');

    if (!Array.isArray(cats) || !cats.length) {
      console.log("addCategoryClasses, no categories found");
    }

    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);
})();