MediaWiki:Gadget-AlphabetNavigation.js

Материал из Викисловаря

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
var processed = [];
function showBefore (word, category, h1) {
	$.get("/w/api.php", {
		action:'query',
		list:'categorymembers',
		format:'json',
		cmtitle:'Категория:' + category,
		cmprop:'ids|title',
		cmnamespace:0,
		cmtype:'page',
		cmlimit:3,
		cmsort:'sortkey',
		cmdir:'desc',
		cmstartsortkeyprefix:word + '<>'
	}, function (data) {
		title = data['query']['categorymembers'][1]['title'];
		if(title == mw.config.get('wgTitle')) title = data['query']['categorymembers'][2]['title'];
		if(data['query']['categorymembers'][0]) Handle('Before',title,h1);
		else $("#navi" + h1.toString() + " .previous").html(mw.config.get('wgTitle'));
	});
}
function showAfter (word, category, h1) {
	$.get("/w/api.php", {
		action:'query',
		list:'categorymembers',
		format:'json',
		cmtitle:'Категория:' + category,
		cmprop:'ids|title',
		cmnamespace:0,
		cmtype:'page',
		cmlimit:3,
		cmsort:'sortkey',
		cmdir:'asc',
		cmstartsortkeyprefix:word
	}, function(data){
		if(data['query']['categorymembers'][1]) { 
			if(data['query']['categorymembers'][1]['title'] != mw.config.get('wgTitle')) Handle('After',data['query']['categorymembers'][1]['title'],h1);
			else Handle('After',data['query']['categorymembers'][2]['title'],h1);
		}
	});
}
function protoSlavic(word, category, h1) {
	$.get("/w/api.php", {
		action:'query',
		list:'categorymembers',
		format:'json',
		cmtitle:'Категория:' + category,
		cmprop:'ids|title',
		cmnamespace:0,
		cmtype:'page',
		cmlimit:90,
		cmstartsortkeyprefix:word
	}, function(data){
		t = [];
		for ( var i in data['query']['categorymembers'] ) {
		  t.push(data['query']['categorymembers'][i]['title']);
		}
		Handle('Before', t[t.indexOf(mw.config.get('wgTitle')) - 1], h1);
		Handle('After', t[t.indexOf(mw.config.get('wgTitle')) + 1], h1);
	});
}
function set_pos () {
	pos = $("#tabstable caption .mw-editsection.editlangsection").position();
	$('[id*="navi"]').css(pos);
	$('[id*="navi"]').css({right:'10%',left:''});
}
function Handle(p, w, h1){
	if(p == "Before"){
			if ( w !== undefined ) {
				$("#navi" + h1.toString() + " .previous")[0].innerHTML = '<a href="//ru.wiktionary.org/wiki/'+w+'">'+w+'</a> ← '+mw.config.get('wgTitle');
			} else {
				$("#navi" + h1.toString() + " .previous")[0].innerHTML = mw.config.get('wgTitle');
			}
		}
	if(p == "After" && w !== undefined ){
		$("#navi" + h1.toString()+ " .next")[0].innerHTML = ' → <a href="//ru.wiktionary.org/wiki/'+w+'">'+w+'</a>';
	}
	if ( tl_using === true ) set_pos();
}

if ( mw.config.get( 'wgAction' ) === 'view' && mw.config.get( 'wgNamespaceNumber' ) === 0 )
	lang_tabs = $("h1 .mw-headline");
	tl_using = false;
	if( lang_tabs.length < 1 ) { 
		lang_tabs = $(".selectedTab a,.unselectedTab a");
		tl_using = true;
	}
	for(var i in lang_tabs){
		h1 = i;
		lang = lang_tabs[h1].innerHTML;
		try {
			language = (lang != 'Словио' ? (lang.match(/[уеаоиюыё]й$/g) ? lang + ' язык' : lang) : 'Словио (кириллица)');
		} catch (e) { break; }
		if(lang !== undefined && processed.indexOf(lang) == -1){
			navi_table_st='<font id="navi'+h1+'" size="5" style="float: right;"><font class="previous"><img height="40" src="//upload.wikimedia.org/wikipedia/commons/b/b4/Loading_Animation.gif"></font><font class="next"></font></font>';
			navi_table_al='<font id="navi'+h1+'" style="float: right; font-weight: normal; color:black;font-size: 12px; position: absolute; top: 19.70001px; right: 8.4%;" class="editlangsection"><font class="previous"></font><font class="next"></font></font>';
			if (!tl_using) lang_tabs[h1].innerHTML += navi_table_st;
			else {
				try {
					$('#' + lang + 'container h3')[0].innerHTML = navi_table_al + $('#' + lang + 'container h3')[0].innerHTML;
				} catch (e) {}
			}
			if ( language != 'Праславянский язык') {
				showBefore(mw.config.get('wgTitle'),language, h1);
				showAfter(mw.config.get('wgTitle'),language, h1);
			} else protoSlavic(mw.config.get('wgTitle'),language, h1);
			processed.push(lang);
		}
	}
}