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