MediaWiki:Common.js: Difference between revisions
Appearance
![]() Cdjensen94 (talk | contribs) |
![]() Cdjensen94 (talk | contribs) |
||
Line 15: | Line 15: | ||
}); | }); | ||
$(function () { | $(function () { | ||
// Where to display | |||
var $spot = $('<div id="lore-spotlight"><h3>Random Lore Spotlight</h3><div class="content">Loading…</div></div>'); | 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); | $('#mw-content-text').prepend($spot); | ||
// | // Get a random page in category Lore | ||
$.getJSON(mw.util.wikiScript('api'), { | $.getJSON(mw.util.wikiScript('api'), { | ||
action: 'query', | action: 'query', | ||
Line 32: | Line 33: | ||
var page = data.query.random[0]; | var page = data.query.random[0]; | ||
// Get | // Get the page source (wikitext) | ||
$.get(mw.util.wikiScript(' | $.get(mw.util.wikiScript('api'), { | ||
action: ' | action: 'parse', | ||
page: page.title, | |||
}).done(function ( | prop: 'wikitext', | ||
var | format: 'json' | ||
}).done(function (parsed) { | |||
var wikitext = parsed.parse.wikitext['*']; | |||
// | // Regex to find <spotlighthook>…</spotlighthook> | ||
var hooks = | var hooks = []; | ||
var regex = /<spotlighthook>(.*?)<\/spotlighthook>/g; | |||
} | var match; | ||
while ((match = regex.exec(wikitext)) !== null) { | |||
hooks.push(match[1]); | |||
} | |||
if (hooks.length > 0) { | if (hooks.length > 0) { | ||
var hook = hooks[Math.floor(Math.random() * hooks.length)]; | var hook = hooks[Math.floor(Math.random() * hooks.length)]; | ||
$spot.find('.content').html(hook); | $spot.find('.content').html(hook); | ||
} else { | } else { | ||
// | // fallback | ||
$spot.find('.content').html( | $spot.find('.content').html('<b><a href="/wiki/' + encodeURIComponent(page.title) + '">' + page.title + '</a></b>'); | ||
} | } | ||
}); | }); | ||
}); | }); | ||
}); | }); |