Aller au contenu

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

De AECFC
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 8 : Ligne 8 :
*/
*/


mw.loader.using('mediawiki.util').then(function () {
(function () {
    function rebuildAecfcHeader() {
        /*
        * Lien global d'origine de Vector :
        * logo + titre + sous-titre.
        */
        const oldLogoLink = document.querySelector('a.mw-logo');


    function configureAecfcHeader() {
        if (!oldLogoLink) {
         const logoLink = document.querySelector('a.mw-logo');
            return;
         }


         if (!logoLink) {
        /*
        * Empêche la création en double.
        */
         if (document.querySelector('.aecfc-brand')) {
             return;
             return;
         }
         }


         /*
         /*
         * Supprime un éventuel ancien bloc personnalisé.
         * Récupère uniquement l'image du logo.
         */
         */
         document.querySelectorAll('.aecfc-header-links').forEach(function (element) {
         const logoImage =
             element.remove();
            oldLogoLink.querySelector('img.mw-logo-icon') ||
         });
            oldLogoLink.querySelector('img');
 
        if (!logoImage) {
             console.warn('Image du logo AECFC introuvable');
            return;
         }


         /*
         /*
         * Le lien du logo ne doit contenir que l'image.
         * Nouveau conteneur général.
        * On supprime le wordmark, le sous-titre natif
        * et tout ancien texte ajouté dans ce lien.
         */
         */
         Array.from(logoLink.children).forEach(function (child) {
         const brand = document.createElement('div');
            if (!child.classList.contains('mw-logo-icon')) {
        brand.className = 'aecfc-brand';
                child.remove();
            }
        });


         /*
         /*
         * Le logo graphique ouvre le site public.
         * 1. Logo graphique site public AECFC.
         */
         */
        const logoLink = document.createElement('a');
        logoLink.className = 'mw-logo aecfc-logo-link';
         logoLink.href = 'https://aecfc.org/';
         logoLink.href = 'https://aecfc.org/';
         logoLink.title = 'Site officiel de l’AECFC';
         logoLink.title = 'Site officiel de l’AECFC';
Ligne 44 : Ligne 56 :
             'Accéder au site officiel de l’AECFC'
             'Accéder au site officiel de l’AECFC'
         );
         );
        logoLink.appendChild(logoImage.cloneNode(true));


         /*
         /*
         * Nouveau bloc indépendant pour Accueil et Devoirs.
         * Conteneur des deux liens du wiki.
         */
         */
         const linksBlock = document.createElement('div');
         const textLinks = document.createElement('div');
         linksBlock.className = 'aecfc-header-links';
         textLinks.className = 'aecfc-text-links';


        /*
        * 2. Accueil → page Accueil du wiki.
        */
         const accueilLink = document.createElement('a');
         const accueilLink = document.createElement('a');
         accueilLink.className = 'aecfc-header-home';
         accueilLink.className = 'aecfc-accueil-link';
         accueilLink.href = mw.util.getUrl('Accueil');
         accueilLink.href = 'https://wiki.aecfc.org/wiki/Accueil';
         accueilLink.textContent = 'Accueil';
         accueilLink.textContent = 'Accueil';
         accueilLink.title = 'Accueil du wiki';
         accueilLink.title = 'Accueil du wiki';


        /*
        * 3. Devoirs → page Devoirs du wiki.
        */
         const devoirsLink = document.createElement('a');
         const devoirsLink = document.createElement('a');
         devoirsLink.className = 'aecfc-header-homework';
         devoirsLink.className = 'aecfc-devoirs-link';
         devoirsLink.href = mw.util.getUrl('Devoirs');
         devoirsLink.href = 'https://wiki.aecfc.org/wiki/Devoirs';
         devoirsLink.textContent = 'Devoirs';
         devoirsLink.textContent = 'Devoirs';
         devoirsLink.title = 'Consulter les devoirs';
         devoirsLink.title = 'Consulter les devoirs';


         linksBlock.appendChild(accueilLink);
         textLinks.appendChild(accueilLink);
         linksBlock.appendChild(devoirsLink);
         textLinks.appendChild(devoirsLink);
 
        brand.appendChild(logoLink);
        brand.appendChild(textLinks);


         /*
         /*
         * Le bloc est placé après le lien du logo,
         * Supprime entièrement l'ancien lien global
         * donc il n'est pas contenu dans le même <a>.
         * et le remplace par les trois liens indépendants.
         */
         */
         logoLink.insertAdjacentElement('afterend', linksBlock);
         oldLogoLink.replaceWith(brand);
     }
     }


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

Version du 2 juillet 2026 à 16:24

/* 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 () {
    function rebuildAecfcHeader() {
        /*
         * Lien global d'origine de Vector :
         * logo + titre + sous-titre.
         */
        const oldLogoLink = document.querySelector('a.mw-logo');

        if (!oldLogoLink) {
            return;
        }

        /*
         * Empêche la création en double.
         */
        if (document.querySelector('.aecfc-brand')) {
            return;
        }

        /*
         * Récupère uniquement l'image du logo.
         */
        const logoImage =
            oldLogoLink.querySelector('img.mw-logo-icon') ||
            oldLogoLink.querySelector('img');

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

        /*
         * Nouveau conteneur général.
         */
        const brand = document.createElement('div');
        brand.className = 'aecfc-brand';

        /*
         * 1. Logo graphique → site public AECFC.
         */
        const logoLink = document.createElement('a');
        logoLink.className = 'mw-logo aecfc-logo-link';
        logoLink.href = 'https://aecfc.org/';
        logoLink.title = 'Site officiel de l’AECFC';
        logoLink.setAttribute(
            'aria-label',
            'Accéder au site officiel de l’AECFC'
        );
        logoLink.appendChild(logoImage.cloneNode(true));

        /*
         * Conteneur des deux liens du wiki.
         */
        const textLinks = document.createElement('div');
        textLinks.className = 'aecfc-text-links';

        /*
         * 2. Accueil → page Accueil du wiki.
         */
        const accueilLink = document.createElement('a');
        accueilLink.className = 'aecfc-accueil-link';
        accueilLink.href = 'https://wiki.aecfc.org/wiki/Accueil';
        accueilLink.textContent = 'Accueil';
        accueilLink.title = 'Accueil du wiki';

        /*
         * 3. Devoirs → page Devoirs du wiki.
         */
        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);
        textLinks.appendChild(devoirsLink);

        brand.appendChild(logoLink);
        brand.appendChild(textLinks);

        /*
         * Supprime entièrement l'ancien lien global
         * et le remplace par les trois liens indépendants.
         */
        oldLogoLink.replaceWith(brand);
    }

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