|
|
| Line 1: |
Line 1: |
| − | "use strict";
| |
| | | | |
| − | /* ----------------------------- */
| |
| − | /* Fonctionnalité de Pliage pour les Templates Hide */
| |
| − | /* ----------------------------- */
| |
| − |
| |
| − | $(document).ready(function() {
| |
| − | // Sélectionner tous les boutons de pliage
| |
| − | $('.hide-toggle-button').each(function() {
| |
| − | var button = $(this);
| |
| − | var content = button.next('.hide-toggle-content');
| |
| − |
| |
| − | // Gérer le clic sur le bouton
| |
| − | button.click(function() {
| |
| − | content.slideToggle(200, function() {
| |
| − | // Changer le texte du bouton en fonction de l'état
| |
| − | if (content.is(':visible')) {
| |
| − | button.text('[Collapse]');
| |
| − | } else {
| |
| − | button.text('[Expand]');
| |
| − | }
| |
| − | });
| |
| − | });
| |
| − | });
| |
| − | });
| |
| − |
| |
| − | /* ----------------------------- */
| |
| − | /* 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');
| |
| − | });
| |
| − | });
| |
| − | });
| |