|
|
| (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>');
| |
| }
| |
| });
| |
| });
| |
| }); | | }); |