Sfosteriam (talk | contribs) (Adding common js to insert CSS class hooks for the categories a page belongs to.) |
Sfosteriam (talk | contribs) 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) |
+ | 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);
})();