MediaWiki:Common.js

Da Wikiness.
Versione del 1 giu 2026 alle 11:37 di WikinessPro (discussione | contributi) (Aggiunta gallery dinamica immagini e loghi da PageImages)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5.



/* WIKINESS_DYNAMIC_GALLERY_START */
(function () {
  function buildGallery(targetId, categoryTitle, emptyText) {
    var target = document.getElementById(targetId);
    if (!target) {
      return;
    }

    target.innerHTML = '<div class="wikiness-gallery-loading">Caricamento immagini...</div>';

    var apiUrl =
      '/api.php?action=query' +
      '&generator=categorymembers' +
      '&gcmtitle=' + encodeURIComponent(categoryTitle) +
      '&gcmlimit=50' +
      '&gcmsort=sortkey' +
      '&gcmdir=ascending' +
      '&prop=pageimages|info' +
      '&piprop=thumbnail|name' +
      '&pithumbsize=140' +
      '&inprop=url' +
      '&format=json';

    fetch(apiUrl, { credentials: 'same-origin' })
      .then(function (response) {
        return response.json();
      })
      .then(function (data) {
        var pagesObj = data && data.query && data.query.pages ? data.query.pages : {};
        var pages = Object.keys(pagesObj).map(function (key) {
          return pagesObj[key];
        });

        pages.sort(function (a, b) {
          return String(a.title || '').localeCompare(String(b.title || ''), 'it');
        });

        var withImages = pages.filter(function (page) {
          return page.thumbnail && page.thumbnail.source && page.fullurl;
        }).slice(0, 10);

        if (!withImages.length) {
          target.innerHTML = '<div class="wikiness-gallery-empty">' + emptyText + '</div>';
          return;
        }

        var html = '<div class="wikiness-dynamic-gallery-grid">';

        withImages.forEach(function (page) {
          var title = page.title || '';
          var img = page.thumbnail.source;
          var url = page.fullurl;

          html += ''
            + '<a class="wikiness-dynamic-gallery-card" href="' + url + '">'
            + '<span class="wikiness-dynamic-gallery-thumb">'
            + '<img src="' + img + '" alt="' + title.replace(/"/g, '&quot;') + '" loading="lazy">'
            + '</span>'
            + '<span class="wikiness-dynamic-gallery-title">' + title + '</span>'
            + '</a>';
        });

        html += '</div>';
        target.innerHTML = html;
      })
      .catch(function () {
        target.innerHTML = '<div class="wikiness-gallery-empty">' + emptyText + '</div>';
      });
  }

  document.addEventListener('DOMContentLoaded', function () {
    buildGallery(
      'wikiness-gallery-professionisti',
      'Categoria:- Pagine con immagini',
      'Nessuna immagine disponibile.'
    );

    buildGallery(
      'wikiness-gallery-loghi',
      'Categoria:- Pagine con loghi',
      'Nessun logo disponibile.'
    );
  });
}());
/* WIKINESS_DYNAMIC_GALLERY_END */