MediaWiki:Minerva.js: Difference between revisions
imported>Dawning (by SublimeText.Mediawiker) |
imported>Dawning (by SublimeText.Mediawiker) |
||
| Line 1: | Line 1: | ||
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function() { | |||
var api = new mw.Api(); | |||
// Fetch MediaWiki:Footer content | |||
api.get({ | |||
action: 'parse', | |||
page: 'MediaWiki:Footer', | |||
prop: 'wikitext', | |||
formatversion: 2 | |||
}).done(function(data) { | |||
if (data.parse && data.parse.wikitext) { | |||
var footerText = data.parse.wikitext; | |||
parseFooterLinks(footerText); | |||
} | |||
}); | |||
}); | |||
function parseFooterLinks(text) { | |||
var lines = text.split('\n'); | |||
var currentPortlet = null; | |||
lines.forEach(function(line) { | |||
line = line.trim(); | |||
// Skip empty lines and comments | |||
if (!line || line[0] === '#') return; | |||
// Section header: * SectionName | |||
if (line.match(/^\*\s*[^*]/)) { | |||
var sectionName = line.replace(/^\*\s*/, ''); | |||
currentPortlet = 'footer-' + sectionName.toLowerCase().replace(/\s+/g, '-'); | |||
// Create section container if needed | |||
if (!document.getElementById(currentPortlet)) { | |||
var section = document.createElement('div'); | |||
section.id = currentPortlet; | |||
section.className = 'footer-section'; | |||
var title = document.createElement('h4'); | |||
title.textContent = sectionName; | |||
section.appendChild(title); | |||
var list = document.createElement('ul'); | |||
list.className = 'footer-section-links'; | |||
section.appendChild(list); | |||
$('.post-content.footer-content').append(section); | |||
} | |||
} | |||
// Link item: ** target|text | |||
else if (line.match(/^\*\*/)) { | |||
var linkText = line.replace(/^\*\*\s*/, ''); | |||
var parts = linkText.split('|'); | |||
var target = parts[0].trim(); | |||
var text = parts.length > 1 ? parts[1].trim() : target; | |||
// Determine URL | |||
var url; | |||
if (target.match(/^https?:\/\//)) { | |||
url = target; | |||
} else if (target.indexOf('Special:') === 0) { | |||
url = mw.util.getUrl(target); | |||
} else { | |||
url = mw.util.getUrl(target); | |||
} | |||
if (currentPortlet) { | |||
mw.util.addPortletLink(currentPortlet, url, text); | |||
} | |||
} | |||
}); | |||
} | |||
Revision as of 06:38, 19 October 2025
mw.loader.using(['mediawiki.util', 'mediawiki.api'], function() {
var api = new mw.Api();
// Fetch MediaWiki:Footer content
api.get({
action: 'parse',
page: 'MediaWiki:Footer',
prop: 'wikitext',
formatversion: 2
}).done(function(data) {
if (data.parse && data.parse.wikitext) {
var footerText = data.parse.wikitext;
parseFooterLinks(footerText);
}
});
});
function parseFooterLinks(text) {
var lines = text.split('\n');
var currentPortlet = null;
lines.forEach(function(line) {
line = line.trim();
// Skip empty lines and comments
if (!line || line[0] === '#') return;
// Section header: * SectionName
if (line.match(/^\*\s*[^*]/)) {
var sectionName = line.replace(/^\*\s*/, '');
currentPortlet = 'footer-' + sectionName.toLowerCase().replace(/\s+/g, '-');
// Create section container if needed
if (!document.getElementById(currentPortlet)) {
var section = document.createElement('div');
section.id = currentPortlet;
section.className = 'footer-section';
var title = document.createElement('h4');
title.textContent = sectionName;
section.appendChild(title);
var list = document.createElement('ul');
list.className = 'footer-section-links';
section.appendChild(list);
$('.post-content.footer-content').append(section);
}
}
// Link item: ** target|text
else if (line.match(/^\*\*/)) {
var linkText = line.replace(/^\*\*\s*/, '');
var parts = linkText.split('|');
var target = parts[0].trim();
var text = parts.length > 1 ? parts[1].trim() : target;
// Determine URL
var url;
if (target.match(/^https?:\/\//)) {
url = target;
} else if (target.indexOf('Special:') === 0) {
url = mw.util.getUrl(target);
} else {
url = mw.util.getUrl(target);
}
if (currentPortlet) {
mw.util.addPortletLink(currentPortlet, url, text);
}
}
});
}