Jump to content

MediaWiki:Common.js: Difference between revisions

From Continuum Universes Wiki
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
$(function() {
mw.hook('wikipage.content').add(function () {
   fetch('/api.php?action=query&meta=siteinfo&siprop=statistics&format=json')
   const el = document.getElementById('article-countdown');
     .then(res => res.json())
  console.log('countdown hook fired; element is:', el);
     .then(data => {
 
       const current = data.query.statistics.articles;
  if (!el) return;
       const goal = 500;
  el.textContent = '✅ Countdown JS is running…';
 
  const apiUrl = mw.util.wikiScript('api') +
    '?action=query&meta=siteinfo&siprop=statistics&format=json&origin=*';
 
  fetch(apiUrl)
     .then(r => r.json())
     .then(d => {
       const current = d.query.statistics.articles;
       const goal = 1000;
       const left = goal - current;
       const left = goal - current;
      const el = document.getElementById("article-countdown");
 
       if (el) {
       el.innerHTML = left > 0
        el.innerHTML = left > 0
        ? `🚧 Only <strong>${left}</strong> articles to go until 1000!`
          ? `🚧 Only <strong>${left}</strong> articles to go until 500!`
        : `🎯 We've reached 1000 articles! Let's Go Boyz and Girlz!`;
          : `🎯 We've reached 500 articles! Celebrate good times, c'mon!`;
    })
       }
    .catch(err => {
      el.textContent = 'API request failed (see console).';
       console.error(err);
     });
     });
});
});
$(function () {
  // Where to display
  var $spot = $('<div id="lore-spotlight"><h3>Random Lore Spotlight</h3><div class="content">Loading…</div></div>');
 
  // Only show on Main Page (or wherever you want)
  if (mw.config.get('wgPageName') !== 'Main_Page') return;
  $('#mw-content-text').prepend($spot);


  // Get a random page in category Lore
  $.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 the page source (wikitext)
// MediaWiki:Common.js
    $.get(mw.util.wikiScript('api'), {
mw.hook('rcfilters.ui.initialized').add(function () {
      action: 'parse',
  document.documentElement.classList.add('rcfilters-ready');
      page: page.title,
      prop: 'wikitext',
      format: 'json'
    }).done(function (parsed) {
      var wikitext = parsed.parse.wikitext['*'];
 
      // Regex to find <spotlighthook>…</spotlighthook>
      var hooks = [];
      var regex = /<spotlighthook>(.*?)<\/spotlighthook>/g;
      var match;
      while ((match = regex.exec(wikitext)) !== null) {
        hooks.push(match[1]);
      }
 
      if (hooks.length > 0) {
        var hook = hooks[Math.floor(Math.random() * hooks.length)];
        $spot.find('.content').html(hook);
      } else {
        // fallback
        $spot.find('.content').html('<b><a href="/wiki/' + encodeURIComponent(page.title) + '">' + page.title + '</a></b>');
      }
    });
  });
});
});

Latest revision as of 22:35, 28 December 2025

mw.hook('wikipage.content').add(function () {
  const el = document.getElementById('article-countdown');
  console.log('countdown hook fired; element is:', el);

  if (!el) return;
  el.textContent = '✅ Countdown JS is running…';

  const apiUrl = mw.util.wikiScript('api') +
    '?action=query&meta=siteinfo&siprop=statistics&format=json&origin=*';

  fetch(apiUrl)
    .then(r => r.json())
    .then(d => {
      const current = d.query.statistics.articles;
      const goal = 1000;
      const left = goal - current;

      el.innerHTML = left > 0
        ? `🚧 Only <strong>${left}</strong> articles to go until 1000!`
        : `🎯 We've reached 1000 articles! Let's Go Boyz and Girlz!`;
    })
    .catch(err => {
      el.textContent = 'API request failed (see console).';
      console.error(err);
    });
});


// MediaWiki:Common.js
mw.hook('rcfilters.ui.initialized').add(function () {
  document.documentElement.classList.add('rcfilters-ready');
});