MediaWiki:InterWikiTransclusion.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
if(!self.ws_messages) self.ws_messages = { };
function ws_msg(name) {
var m = self.ws_messages[name];
if(m) return m; else return name;
}
/* cross-domain transclusions through the API */
function get_url(lang, project) {
if (!project) project = 'wikisource';
if (lang == 'commons' || lang == 'species' || lang == 'meta') project = 'wikimedia';
if (lang == "old" || lang == "oldwikisource") {
return 'wikisource.org';
} else {
return lang + '.' + project + '.org';
}
}
function api_url(lang, project) {
return '//' + get_url(lang, project) + '/w/api.php';
}
/* transform all href from relative to absolute, so that they still point to the right place */
function absoluteLinks(text, lang, project) {
if (!text) return '';
return text
.replace(/href="\/wiki\//g, 'href="//' + get_url(lang, project) + '/wiki/')
.replace(/href="\/w\//g, 'href="//' + get_url(lang, project) + '/w/');
}
// iw_trans_callback() and iw_trans() allow cross-wiki transclusion from namespace:0
function iw_trans_callback(res){
var target = res.requestid.replace(/___.*/i, "");
var spans = jQuery('span.iwtrans');
for (var i = 0; i<spans.length; i++) {
var item = spans[i];
var m = item.title.split("|");
lang=m[0];
project = 'wikisource'; //default
if (m.length > 2) project = m[2];
if (item.title == target) {
$(item).html(absoluteLinks(res.parse.text['*'], lang, project));
}
}
}
function iw_trans() {
var spans = jQuery( 'span.iwtrans' ) ;
for(var i = 0; i<spans.length; i++) {
var item = spans[i];
var m = item.title.split("|");
lang = m[0];
title = m[1];
project = 'wikisource'; //default
if (m.length > 2) project = m[2];
var url = api_url(lang, project) + '?format=json&requestid=' + item.title + "___" + Math.random() + '&action=parse&text={{:'+title+'}}<references/>&callback=iw_trans_callback&title='+title;
mw.loader.load(url);
}
}
jQuery(document).ready(iw_trans);
// iw_pages_callback() and iw_pages() allow transclusions from namespace Page: to namespace Page:
function iw_pages_callback(res) {
var target = res.requestid.replace(/___.*/i, "");
var spans = jQuery('span');
for(var i = 0; i<spans.length; i++) {
var item = spans[i];
var m = item.title.split("|");
lang=m[0];
project = 'wikisource'; //default
var txt = absoluteLinks(res.parse.text['*'], lang, project);
/* fix for it.wikisource */
$txt = $('.SAL, .numeropagina', txt).remove().end();
if( ($(item).hasClass("iwpages") || $(item).hasClass("iwpage")) && item.title == target ) {
$(item).html($txt);
}
//remove the quality header from the imported page
$('.iwpage .prp-page-qualityheader').remove();
}
}
function iw_pages() {
var item, m,
count = 0,
spans = jQuery( 'span.iwpages' ) ;
for(var i = 0; i<spans.length; i++) {
item = spans[i];
m = item.title.split("|");
lang = m[0];
project = 'wikisource';
title = m[1];
from = m[2];
to = m[3];
fromsection = '';
tosection = '';
if (m.length > 4) fromsection = m[4];
if (m.length > 5) tosection = m[5];
url = api_url(lang) + '?format=json&requestid=' + item.title + "___" + Math.random() + '&action=parse&callback=iw_pages_callback&text=<pages index="'+title+'" from='+from+' to='+to+' fromsection='+fromsection+' tosection='+tosection+' /><references/>&title='+title;
mw.loader.load(url);
}
spans = jQuery( 'span.iwpage' ) ;
for(i = 0; i<spans.length; i++) {
item = spans[i];
m = item.title.split("|");
lang = m[0];
project = 'wikisource';
count = count + 1;
title = "Page:" + m[1];
if(m.length>2) section=m[2]; else section=false;
if(section) section_title='lst|'+title+'|'+section; else section_title = title;
url = api_url(lang) + '?format=json&requestid=' + item.title + "___" + Math.random() + '&action=parse&callback=iw_pages_callback&text={{'+section_title+'}}<references/>&title='+title;
mw.loader.load(url);
}
cs = document.getElementById("corr-info");
if(cs && count) {
if(count==1) {
cs.innerHTML += ' ' + ws_msg('iwtrans') + ' <a href="//' + get_url(lang) + '/w/index.php?title='+title+'">' + get_url(lang) + '</a>.';
} else {
cs.innerHTML += ws_msg('iwtrans2');
}
}
}
jQuery(document).ready(iw_pages);