미디어위키:InterWikiTransclusion.js

위키문헌 ― 우리 모두의 도서관.

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: 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 */

// translate from a number scheme to a [0-9] scheme
function translate_number(number_str, dest_lang) {
   if (dest_lang === null)
        return number_str;

   var src_lang = mw.config.get('wgPageContentLanguage');
   if (src_lang == 'bn' && dest_lang != 'bn') {
       number_str = number_str
           .replace(/০/g,'0')
           .replace(/১/g,'1')
           .replace(/২/g,'2')
           .replace(/৩/g,'3')
           .replace(/৪/g,'4')
           .replace(/৫/g,'5')
           .replace(/৬/g,'6')
           .replace(/৭/g,'7')
           .replace(/৮/g,'8')
           .replace(/৯/g,'9');
   } else if (src_lang != 'bn' && dest_lang == 'bn') {
       number_str = number_str
           .replace(/0/g, '০')
           .replace(/1/g, '১')
           .replace(/2/g, '২')
           .replace(/3/g, '৩')
           .replace(/4/g, '৪')
           .replace(/5/g, '৫')
           .replace(/6/g, '৬')
           .replace(/7/g, '৭')
           .replace(/8/g, '৮')
           .replace(/9/g, '৯');
   }

   // if needed add more translation here.

   return number_str;
}

// title should be a Page: namespace title i.e. in the form page_name/xxx where xxx is a page number
// either in [0-9] form or an alternate number scheme, page_name should not contain any /
function translate_title(title, dest_lang)
{
   page_name = title.split("/");
   return page_name[0] + "/" + translate_number(page_name[1], dest_lang);
}

function get_url(lang, project) {
	if (!project) project = 'wikisource';
	if (lang == 'commons' || lang == 'species' || lang == 'meta') project = 'wikimedia';

	if (lang == "mul" || 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/');
}

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];
		//default
		project = 'wikisource';
		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];
		//default
		project = 'wikisource';
		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);

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];
		//default
		project = 'wikisource';

		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() {
	/* if(mw.config.get('wgCanonicalNamespace') != page_ns_prefixes[mw.config.get('wgContentLanguage')]) return; */
	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 = translate_number(m[2], null);
		to = translate_number(m[3], null);
		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:"+translate_title(m[1], lang);
		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>' + ws_msg('iwtransko');
		} else {
			cs.innerHTML += ws_msg('iwtrans2');
		}
	}
}

jQuery(document).ready(iw_pages);