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

Kims (discussion | contributions)
Aucun résumé des modifications
Kims (discussion | contributions)
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
/* Tout JavaScript ici sera chargé pour chaque page visitée par n’importe quel utilisateur. */
/* ═══ Barre inter-sites Fallout Génération (Wiki actif) ═══ */
 
/* ════════════════════════════════════════════════════════════════════════
* BARRE INTER-SITES « Forum · Wiki · Carte » — MEDIAWIKI (Archives de Vault-Tec)
* À coller dans MediaWiki:Common.js (droit « interface-admin »/editinterface).
* Le style est dans MediaWiki:Common.css (voir xbar-mediawiki-Common.css).
*
* MediaWiki n'a pas de zone « avant le header » : on injecte donc la barre en
* tête de <body> via JS (insertAdjacentHTML 'afterbegin'). « Wiki » est l'item
* ACTIF. Le compteur Discord (widget public) est chargé en asynchrone et mis
* en cache 5 min ; s'il ne répond pas, la barre vit sans lui.
* ════════════════════════════════════════════════════════════════════════ */
(function () {
(function () {
     'use strict';
     'use strict';
     function mount() {
     function mount() {
         if (document.getElementById('xbar')) return;     // idempotent
         if (document.getElementById('xbar')) return;
         var svg = '<svg viewBox="0 0 127.14 96.36" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
         var svg = '<svg viewBox="0 0 127.14 96.36" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
             + '<path fill="currentColor" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></svg>';
             + '<path fill="currentColor" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></svg>';
Ligne 36 : Ligne 25 :
         document.body.insertAdjacentHTML('afterbegin', html);
         document.body.insertAdjacentHTML('afterbegin', html);


        // Compteur de connectés : widget public Discord, mis en cache 5 min.
         var a = document.querySelector('#xbar .xb-discord');
         var a = document.querySelector('#xbar .xb-discord');
         if (!a || !a.dataset.guild) return;
         if (!a || !a.dataset.guild) return;
Ligne 55 : Ligne 43 :
             .catch(function () {});
             .catch(function () {});
     }
     }
     if (document.body) { mount(); }
     if (document.body) { mount(); } else { document.addEventListener('DOMContentLoaded', mount); }
    else { document.addEventListener('DOMContentLoaded', mount); }
})();
})();



Version du 9 juillet 2026 à 22:41

/* ═══ Barre inter-sites Fallout Génération (Wiki actif) ═══ */
(function () {
    'use strict';
    function mount() {
        if (document.getElementById('xbar')) return;
        var svg = '<svg viewBox="0 0 127.14 96.36" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">'
            + '<path fill="currentColor" d="M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z"/></svg>';
        var html = [
            '<nav id="xbar" class="xbar" aria-label="Sites de la communauté Fallout Génération">',
            '<span class="xb-brand"><span class="xb-name">FALLOUT GÉNÉRATION</span></span>',
            '<a href="https://fallout-generation.com/" target="_blank" rel="noopener">Forum</a>',
            '<span class="xb-sep">·</span>',
            '<a href="https://fallout-wiki.com/" class="actif">',
            '<span class="xb-long">Wiki — Archives de Vault-Tec</span><span class="xb-short">Wiki</span></a>',
            '<span class="xb-sep">·</span>',
            '<a href="https://fallout-maps.com/" target="_blank" rel="noopener">',
            '<span class="xb-long">Carte interactive</span><span class="xb-short">Carte</span></a>',
            '<a class="xb-discord" href="https://discord.gg/2wFBScdhdH" target="_blank" rel="noopener"',
            ' data-guild="181800470082355200" title="Rejoindre le Discord">',
            svg,
            '<span class="xb-join">Rejoindre</span>',
            '<span class="xb-count" hidden><b></b><span class="xb-long"> en ligne</span> <span class="xb-dot"></span></span>',
            '</a></nav>'
        ].join('');
        document.body.insertAdjacentHTML('afterbegin', html);

        var a = document.querySelector('#xbar .xb-discord');
        if (!a || !a.dataset.guild) return;
        var K = 'fgDiscordCount_' + a.dataset.guild, TTL = 300000;
        function show(n) { var c = a.querySelector('.xb-count'); c.querySelector('b').textContent = n; c.hidden = false; }
        try {
            var o = JSON.parse(localStorage.getItem(K) || 'null');
            if (o && typeof o.n === 'number' && (Date.now() - o.t) < TTL) { show(o.n); return; }
        } catch (e) {}
        fetch('https://discord.com/api/guilds/' + a.dataset.guild + '/widget.json')
            .then(function (r) { return r.ok ? r.json() : null; })
            .then(function (j) {
                if (j && typeof j.presence_count === 'number') {
                    show(j.presence_count);
                    try { localStorage.setItem(K, JSON.stringify({ n: j.presence_count, t: Date.now() })); } catch (e) {}
                }
            })
            .catch(function () {});
    }
    if (document.body) { mount(); } else { document.addEventListener('DOMContentLoaded', mount); }
})();

/* ######################################################################## */
/* ### IMAGEMAPEDIT                                                     ### */
/* ### ---------------------------------------------------------------- ### */
/* ### Description: permet de connaître les coordonnées d'une image.    ### */
/* ###              utile pour imagemap                                 ### */
/* ######################################################################## */

if (mw.config.get('wgNamespaceNumber')==6 && mw.config.get('wgAction')=='view') {
	mw.loader.load('//tools.wmflabs.org/imagemapedit/ime.js');
}
/* Tout code JavaScript placé ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Vector */

// Ajout d'une icone devant les liens interlangues.
$(function() {

    // Icône pour EN
    $('li.interwiki-en > .interlanguage-link-target')
        .prepend('<img style="margin-right:5px;" src="https://images.fallout.wiki/3/37/Wiki.webp" width="25" height="25">');

    // Icône pour DE
    $('li.interwiki-de > .interlanguage-link-target')
        .prepend('<img style="margin-right:5px;" src="https://vaultpedia.de/images/b/b7/Fallout-Wiki_Icon.png" width="25" height="25">');

});