Участник:Lingüista/navigation.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
/*
Скрипт для навигации по алфавиту для различных языков.
Автор : [[User:Lingvist200]]
*/
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 == wgTitle) title = data['query']['categorymembers'][2]['title'];
if(data['query']['categorymembers'][0]) Handle('Before',title,h1);
else $("#navi" + h1.toString() + " .previous").html(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'] != 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(wgTitle) - 1], h1);
Handle('After', t[t.indexOf(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> ← '+wgTitle;
} else {
$("#navi" + h1.toString() + " .previous")[0].innerHTML = 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(wgAction == "view" && 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(wgTitle,language, h1);
showAfter(wgTitle,language, h1);
} else protoSlavic(wgTitle,language, h1);
processed.push(lang);
}
}
// Красивая ссылка на Википедию
mms = '.metadata.mbox-small tbody tr td a.image[href*=Wikipedia]';
if ( $(mms).length > 0 && $('font#navi0')[0].style.position == 'absolute' ) {
$(mms).parents(4)[3].style.display = 'none';
set_pos();
wpaa = $(mms).parent().parent().find('.mbox-text a');
wp_art = wpaa[wpaa.length - 1].href.replace(/(http|https):/,'');
img_src = '//upload.wikimedia.org/wikipedia/commons/thumb/6/63/Wikipedia-logo.png/24px-Wikipedia-logo.png';
$('font[id*="navi"]').prepend('<a href="'+wp_art+'" class="image">\
<img src="'+img_src+'" style="position:absolute;right:101%;bottom:-30%;"></a>');
}
setInterval(function () {
set_pos();
}, 50);
}