Jump to content

MediaWiki:Common.js: Difference between revisions

From Continuum Universes Wiki
Line 1: Line 1:
mw.hook('ext.popups').add(function() {
    $('.mwe-popups-extract .portable-infobox').each(function() {
        var $infobox = $(this);
        var $firstParagraph = $('.mwe-popups-extract p:first');
        // If there is a paragraph, move the infobox after it
        if ($firstParagraph.length) {
            $infobox.insertAfter($firstParagraph);
        } else {
            // If there's no paragraph, just hide the infobox
            $infobox.hide();
        }
    });
});
$(function() {
$(function() {
   fetch('/api.php?action=query&meta=siteinfo&siprop=statistics&format=json')
   fetch('/api.php?action=query&meta=siteinfo&siprop=statistics&format=json')
Line 28: Line 13:
       }
       }
     });
     });
});
$(function () {
  // Where to display
  var $spot = $('<div id="lore-spotlight"><h3>Random Lore Spotlight</h3><div class="content">Loading…</div></div>');
  $('#mw-content-text').prepend($spot);
  // Query API for random page in Lore category
  $.getJSON(mw.util.wikiScript('api'), {
    action: 'query',
    list: 'random',
    rnnamespace: 0,
    rnlimit: 1,
    rncategory: 'Lore',
    format: 'json'
  }).done(function (data) {
    var page = data.query.random[0];
    // Get full HTML of page
    $.get(mw.util.wikiScript('index'), {
      action: 'render',
      title: page.title
    }).done(function (html) {
      var $html = $('<div>').html(html);
      // Look for hidden spotlight text
      var hooks = $html.find('.lore-spotlight-text').map(function () {
        return $(this).text();
      }).get();
      if (hooks.length > 0) {
        // Pick one at random
        var hook = hooks[Math.floor(Math.random() * hooks.length)];
        $spot.find('.content').html(hook);
      } else {
        // Fallback if no hook
        $spot.find('.content').html(
          '<b><a href="/wiki/' + encodeURIComponent(page.title) + '">' + page.title + '</a></b>'
        );
      }
    });
  });
});
});

Revision as of 00:09, 17 August 2025

$(function() {
  fetch('/api.php?action=query&meta=siteinfo&siprop=statistics&format=json')
    .then(res => res.json())
    .then(data => {
      const current = data.query.statistics.articles;
      const goal = 500;
      const left = goal - current;
      const el = document.getElementById("article-countdown");
      if (el) {
        el.innerHTML = left > 0
          ? `🚧 Only <strong>${left}</strong> articles to go until 500!`
          : `🎯 We've reached 500 articles! Celebrate good times, c'mon!`;
      }
    });
});
$(function () {
  // Where to display
  var $spot = $('<div id="lore-spotlight"><h3>Random Lore Spotlight</h3><div class="content">Loading…</div></div>');
  $('#mw-content-text').prepend($spot);

  // Query API for random page in Lore category
  $.getJSON(mw.util.wikiScript('api'), {
    action: 'query',
    list: 'random',
    rnnamespace: 0,
    rnlimit: 1,
    rncategory: 'Lore',
    format: 'json'
  }).done(function (data) {
    var page = data.query.random[0];

    // Get full HTML of page
    $.get(mw.util.wikiScript('index'), {
      action: 'render',
      title: page.title
    }).done(function (html) {
      var $html = $('<div>').html(html);

      // Look for hidden spotlight text
      var hooks = $html.find('.lore-spotlight-text').map(function () {
        return $(this).text();
      }).get();

      if (hooks.length > 0) {
        // Pick one at random
        var hook = hooks[Math.floor(Math.random() * hooks.length)];
        $spot.find('.content').html(hook);
      } else {
        // Fallback if no hook
        $spot.find('.content').html(
          '<b><a href="/wiki/' + encodeURIComponent(page.title) + '">' + page.title + '</a></b>'
        );
      }
    });
  });
});