Aller au contenu

« MediaWiki:Common.js » : différence entre les versions

De AECFC
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 9 : Ligne 9 :


(function () {
(function () {
     function rebuildAecfcHeader() {
    'use strict';
        /*
 
        * Lien global d'origine de Vector :
     function configureAecfcLogo() {
        * logo + titre + sous-titre.
         const mainLink = document.querySelector('a.mw-logo');
        */
         const oldLogoLink = document.querySelector('a.mw-logo');


         if (!oldLogoLink) {
         if (!mainLink) {
             return;
             return;
         }
         }


         /*
         // Évite une seconde initialisation.
        * Empêche la création en double.
         if (mainLink.dataset.aecfcRouting === '1') {
        */
         if (document.querySelector('.aecfc-brand')) {
             return;
             return;
         }
         }
        mainLink.dataset.aecfcRouting = '1';


         /*
         /*
         * Récupère uniquement l'image du logo.
         * Supprime le titre et le sous-titre natifs,
        * mais conserve l'image du logo.
         */
         */
         const logoImage =
         const nativeText = mainLink.querySelector('.mw-logo-container');
            oldLogoLink.querySelector('img.mw-logo-icon') ||
            oldLogoLink.querySelector('img');


         if (!logoImage) {
         if (nativeText) {
             console.warn('Image du logo AECFC introuvable');
             nativeText.remove();
            return;
         }
         }


         /*
         /*
         * Nouveau conteneur général.
         * Création des deux textes affichés à droite du logo.
        * Ce sont volontairement des <span>, pas des liens imbriqués.
         */
         */
         const brand = document.createElement('div');
         const textBlock = document.createElement('span');
         brand.className = 'aecfc-brand';
         textBlock.className = 'aecfc-logo-texts';
 
        const accueilText = document.createElement('span');
        accueilText.className = 'aecfc-accueil-text';
        accueilText.textContent = 'Accueil';
        accueilText.title = 'Accueil du wiki';
 
        const devoirsText = document.createElement('span');
        devoirsText.className = 'aecfc-devoirs-text';
        devoirsText.textContent = 'Devoirs';
        devoirsText.title = 'Consulter les devoirs';
 
        textBlock.appendChild(accueilText);
        textBlock.appendChild(devoirsText);
        mainLink.appendChild(textBlock);


         /*
         /*
         * 1. Logo graphique → site public AECFC.
         * Le lien par défaut du bloc reste l'accueil du wiki.
         */
         */
         const logoLink = document.createElement('a');
         mainLink.href = 'https://wiki.aecfc.org/wiki/Accueil';
        logoLink.className = 'mw-logo aecfc-logo-link';
         mainLink.title = '';
        logoLink.href = 'https://aecfc.org/';
 
         logoLink.title = 'Site officiel de l’AECFC';
         const logoIcon = mainLink.querySelector('.mw-logo-icon');
         logoLink.setAttribute(
            'aria-label',
            'Accéder au site officiel de l’AECFC'
        );
        logoLink.appendChild(logoImage.cloneNode(true));


         /*
         if (logoIcon) {
        * Conteneur des deux liens du wiki.
            logoIcon.title = 'Site officiel de l’AECFC';
        */
         }
        const textLinks = document.createElement('div');
         textLinks.className = 'aecfc-text-links';


         /*
         /*
         * 2. Accueil → page Accueil du wiki.
         * Comme Vector utilise un seul lien parent,
        * on choisit la destination selon la zone cliquée.
         */
         */
         const accueilLink = document.createElement('a');
         mainLink.addEventListener(
        accueilLink.className = 'aecfc-accueil-link';
            'click',
        accueilLink.href = 'https://wiki.aecfc.org/wiki/Accueil';
            function (event) {
        accueilLink.textContent = 'Accueil';
                const target =
        accueilLink.title = 'Accueil du wiki';
                    event.target instanceof Element
                        ? event.target
                        : event.target.parentElement;


        /*
                if (!target) {
        * 3. Devoirs → page Devoirs du wiki.
                    return;
        */
                }
        const devoirsLink = document.createElement('a');
        devoirsLink.className = 'aecfc-devoirs-link';
        devoirsLink.href = 'https://wiki.aecfc.org/wiki/Devoirs';
        devoirsLink.textContent = 'Devoirs';
        devoirsLink.title = 'Consulter les devoirs';


        textLinks.appendChild(accueilLink);
                // Clic sur le logo graphique → site aecfc.org
        textLinks.appendChild(devoirsLink);
                if (target.closest('.mw-logo-icon')) {
                    event.preventDefault();
                    event.stopImmediatePropagation();
                    window.location.assign('https://aecfc.org/');
                    return;
                }


        brand.appendChild(logoLink);
                // Clic sur Devoirs → page Devoirs
        brand.appendChild(textLinks);
                if (target.closest('.aecfc-devoirs-text')) {
                    event.preventDefault();
                    event.stopImmediatePropagation();
                    window.location.assign(
                        'https://wiki.aecfc.org/wiki/Devoirs'
                    );
                    return;
                }


        /*
                /*
        * Supprime entièrement l'ancien lien global
                * Clic sur Accueil, ou sur le reste du bloc :
        * et le remplace par les trois liens indépendants.
                * le comportement normal du lien parent est conservé.
        */
                */
         oldLogoLink.replaceWith(brand);
            },
            true
         );
     }
     }


Ligne 98 : Ligne 114 :
         document.addEventListener(
         document.addEventListener(
             'DOMContentLoaded',
             'DOMContentLoaded',
             rebuildAecfcHeader,
             configureAecfcLogo,
             { once: true }
             { once: true }
         );
         );
     } else {
     } else {
         rebuildAecfcHeader();
         configureAecfcLogo();
     }
     }
})();
})();

Version du 2 juillet 2026 à 16:36

/* Tout JavaScript présent ici sera exécuté par tous les utilisateurs à chaque chargement de page. */

$(function () {
    $('a.mw-wiki-logo, a.mw-logo')
        .attr('href', 'Accueil')
        .attr('title', 'Retour a l'accueil');
});
*/

(function () {
    'use strict';

    function configureAecfcLogo() {
        const mainLink = document.querySelector('a.mw-logo');

        if (!mainLink) {
            return;
        }

        // Évite une seconde initialisation.
        if (mainLink.dataset.aecfcRouting === '1') {
            return;
        }

        mainLink.dataset.aecfcRouting = '1';

        /*
         * Supprime le titre et le sous-titre natifs,
         * mais conserve l'image du logo.
         */
        const nativeText = mainLink.querySelector('.mw-logo-container');

        if (nativeText) {
            nativeText.remove();
        }

        /*
         * Création des deux textes affichés à droite du logo.
         * Ce sont volontairement des <span>, pas des liens imbriqués.
         */
        const textBlock = document.createElement('span');
        textBlock.className = 'aecfc-logo-texts';

        const accueilText = document.createElement('span');
        accueilText.className = 'aecfc-accueil-text';
        accueilText.textContent = 'Accueil';
        accueilText.title = 'Accueil du wiki';

        const devoirsText = document.createElement('span');
        devoirsText.className = 'aecfc-devoirs-text';
        devoirsText.textContent = 'Devoirs';
        devoirsText.title = 'Consulter les devoirs';

        textBlock.appendChild(accueilText);
        textBlock.appendChild(devoirsText);
        mainLink.appendChild(textBlock);

        /*
         * Le lien par défaut du bloc reste l'accueil du wiki.
         */
        mainLink.href = 'https://wiki.aecfc.org/wiki/Accueil';
        mainLink.title = '';

        const logoIcon = mainLink.querySelector('.mw-logo-icon');

        if (logoIcon) {
            logoIcon.title = 'Site officiel de l’AECFC';
        }

        /*
         * Comme Vector utilise un seul lien parent,
         * on choisit la destination selon la zone cliquée.
         */
        mainLink.addEventListener(
            'click',
            function (event) {
                const target =
                    event.target instanceof Element
                        ? event.target
                        : event.target.parentElement;

                if (!target) {
                    return;
                }

                // Clic sur le logo graphique → site aecfc.org
                if (target.closest('.mw-logo-icon')) {
                    event.preventDefault();
                    event.stopImmediatePropagation();
                    window.location.assign('https://aecfc.org/');
                    return;
                }

                // Clic sur Devoirs → page Devoirs
                if (target.closest('.aecfc-devoirs-text')) {
                    event.preventDefault();
                    event.stopImmediatePropagation();
                    window.location.assign(
                        'https://wiki.aecfc.org/wiki/Devoirs'
                    );
                    return;
                }

                /*
                 * Clic sur Accueil, ou sur le reste du bloc :
                 * le comportement normal du lien parent est conservé.
                 */
            },
            true
        );
    }

    if (document.readyState === 'loading') {
        document.addEventListener(
            'DOMContentLoaded',
            configureAecfcLogo,
            { once: true }
        );
    } else {
        configureAecfcLogo();
    }
})();