m |
m |
||
| Line 206: | Line 206: | ||
toggleButton.text('show'); | toggleButton.text('show'); | ||
} | } | ||
| + | }); | ||
| + | }); | ||
| + | }); | ||
| + | "use strict"; | ||
| + | |||
| + | /* ----------------------------- */ | ||
| + | /* Collapsible Content Sections */ | ||
| + | /* Enables hide/collapse functionality for content sections */ | ||
| + | /* ----------------------------- */ | ||
| + | |||
| + | // Fonction pour ajouter le comportement pliable aux sections | ||
| + | $(document).ready(function() { | ||
| + | $('.collapsible-section').each(function() { | ||
| + | var section = $(this); | ||
| + | var header = section.find('.toggle-header'); | ||
| + | var content = section.find('.toggle-content'); | ||
| + | |||
| + | // Initialiser l'état en fonction de la classe 'collapsed' | ||
| + | if (section.hasClass('collapsed')) { | ||
| + | content.hide(); | ||
| + | } | ||
| + | |||
| + | // Ajouter l'événement de clic au titre | ||
| + | header.click(function() { | ||
| + | content.slideToggle(200); | ||
| + | section.toggleClass('collapsed'); | ||
}); | }); | ||
}); | }); | ||
}); | }); | ||
"use strict"; /* ----------------------------- */ /* General Browser Cache Bypass Instructions */ /* Instructions for refreshing the page cache for different browsers */ /* ----------------------------- */ //Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac) //Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac) //Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5 //Opera: Clear the cache in Tools → Preferences /* ----------------------------- */ /* Collapsible Tables Feature */ /* Enables collapsible tables for better organization and allows users to show or hide table contents */ /* ----------------------------- */ var autoCollapse = 2; var collapseCaption = 'hide'; var expandCaption = 'show'; /** * Function to collapse the table rows * @param {number} tableIndex */ function collapseTable(tableIndex) { var Button = document.getElementById('collapseButton' + tableIndex); var Table = document.getElementById('collapsibleTable' + tableIndex); if (!Table || !Button) { return false; } var Rows = Table.rows; if (Button.firstChild.data == collapseCaption) { for (var i = 1; i < Rows.length; i++) { Rows[i].style.display = 'none'; } Button.firstChild.data = expandCaption; } else { for (var i = 1; i < Rows.length; i++) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } } /** * Creates a click handler for table collapse/expand * @param {number} tableIndex */ function createClickHandler(tableIndex) { return function (e) { e.preventDefault(); collapseTable(tableIndex); }; } /** * Adds collapse buttons to all tables with the 'collapsible' class */ function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = {}; var Tables = document.getElementsByTagName('table'); for (var i = 0; i < Tables.length; i++) { if ($(Tables[i]).hasClass('collapsible')) { var HeaderRow = Tables[i].getElementsByTagName('tr')[0]; if (!HeaderRow) { continue; } var Header = HeaderRow.getElementsByTagName('th')[0]; if (!Header) { continue; } NavigationBoxes[tableIndex] = Tables[i]; Tables[i].setAttribute('id', 'collapsibleTable' + tableIndex); var Button = document.createElement('span'); var ButtonLink = document.createElement('a'); var ButtonText = document.createTextNode(collapseCaption); Button.style.styleFloat = 'right'; Button.style.cssFloat = 'right'; Button.style.fontWeight = 'normal'; Button.style.textAlign = 'right'; Button.style.width = '6em'; ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute('id', 'collapseButton' + tableIndex); $(ButtonLink).on('click', createClickHandler(tableIndex)); ButtonLink.appendChild(ButtonText); Button.appendChild(document.createTextNode('[')); Button.appendChild(ButtonLink); Button.appendChild(document.createTextNode(']')); Header.insertBefore(Button, Header.childNodes[0]); tableIndex++; } } // Collapse all tables if the conditions are met (autocollapse or collapsed class) for (var i = 0; i < tableIndex; i++) { if ($(NavigationBoxes[i]).hasClass('collapsed') || (tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass('autocollapse')) ) { collapseTable(i); } } } // Run the collapse button creation function on page load $(createCollapseButtons); /* ----------------------------- */ /* Custom Script for Highlighting Backticks */ /* Applies custom visual styles to text wrapped in backticks without altering the content */ /* ----------------------------- */ // This script waits for the document to fully load, and applies a visual style // to any text that is surrounded by backticks (` `), without altering the content. document.addEventListener('DOMContentLoaded', function () { // Check if we are in edit mode (to avoid changing the editor content) if (document.querySelector('#wpTextbox1') !== null) { return; // Do nothing in edit mode } /** * Function to highlight text between backticks by wrapping it in a span element * @param {string} text * @returns {string} */ function highlightBackticks(text) { const backtickRegex = /`([^`]+)`/g; // Matches text between backticks const styledText = text.replace(backtickRegex, function (match, p1) { return '<span class="backtick-style">' + p1 + '</span>'; }); return styledText; } /** * Traverse all text nodes and apply the backtick highlighting * @param {Node} node */ function traverseTextNodes(node) { if (node.nodeType === 3 && node.nodeValue.includes('`')) { // Only process text nodes const span = document.createElement('span'); span.innerHTML = highlightBackticks(node.nodeValue); node.parentNode.replaceChild(span, node); } else if (node.nodeType === 1 && node.childNodes) { // Traverse element children node.childNodes.forEach(traverseTextNodes); } } // Apply the changes to the entire body traverseTextNodes(document.body); }); console.log('Backtick script loaded'); /* ----------------------------- */ /* Force CSS Rules Dynamically */ /* Injects CSS with higher priority for overriding styles, especially the list indentations */ /* ----------------------------- */ // Using MediaWiki's loader to inject custom CSS with high priority mw.loader.using('mediawiki.util', function () { var css = '.mw-parser-output ul ul, .mw-parser-output ul ol, .mw-parser-output ol ul, .mw-parser-output ol ol {' + 'padding-left: 0 !important;' + 'margin-left: 0 !important;' + '}'; mw.util.addCSS(css); }); /* ----------------------------- */ /* Collapsible Content Sections */ /* Enables hide/collapse functionality for content sections */ /* ----------------------------- */ // Fonction pour ajouter des boutons de pliage aux sections de contenu $(document).ready(function() { $('.collapsible-section').each(function(index) { var section = $(this); // Créer le bouton de pliage var toggleButton = $('<button type="button" class="toggle-button">hide</button>'); // Insérer le bouton au début de la section section.prepend(toggleButton); // Cacher le contenu initialement si nécessaire if (section.hasClass('collapsed')) { section.find('.section-content').hide(); toggleButton.text('show'); } // Ajouter l'événement de clic pour le bouton toggleButton.on('click', function() { var content = section.find('.section-content'); content.toggle(); // Mettre à jour le texte du bouton if (content.is(':visible')) { toggleButton.text('hide'); } else { toggleButton.text('show'); } }); }); }); "use strict"; /* ----------------------------- */ /* Collapsible Content Sections */ /* Enables hide/collapse functionality for content sections */ /* ----------------------------- */ // Fonction pour ajouter le comportement pliable aux sections $(document).ready(function() { $('.collapsible-section').each(function() { var section = $(this); var header = section.find('.toggle-header'); var content = section.find('.toggle-content'); // Initialiser l'état en fonction de la classe 'collapsed' if (section.hasClass('collapsed')) { content.hide(); } // Ajouter l'événement de clic au titre header.click(function() { content.slideToggle(200); section.toggleClass('collapsed'); }); }); });