var addLink = function(list, label, site, page)
{
var url = '//';
if (site == 'wikidata') {
url += 'www.' + site;
}
else if (site == 'commons') {
url += site + '.wikimedia';
}
else {
url += 'ru.' + site;
}
url += '.org/wiki/' + page.replace(/ /g, '_');
var li = $('
');
li.append('' + label + '');
li.appendTo(list);
};
var addRelatedSites = function()
{
if (typeof(wgWikibaseItemId) === 'undefined' ||
wgAction !== 'view' ||
wgNamespaceNumber % 2
) {
return;
}
var p_lang = $('#p-lang');
if (!p_lang.length) {
return;
}
$.ajax({
url: '//www.wikidata.org/w/api.php',
data: {
'format': 'json',
'action': 'wbgetentities',
'props': 'sitelinks|claims',
'ids': wgWikibaseItemId
},
dataType: 'jsonp',
success: function (data) {
if (data.success) {
for (var i in data.entities) {
if (i == -1) {
return;
}
var p_rs = p_lang.clone().attr('id', 'p-relatedsites'),
p_rs_list = p_rs.find('ul').html('');
// Vector
if ($('body').hasClass('skin-vector')) {
p_rs.attr('aria-labelledby', 'p-relatedsites-label');
p_rs_list.attr('id', 'p-relatedsites-list');
p_rs.find('h3').attr('id', 'p-relatedsites-label');
p_rs.find('h3>a')
.attr({
'aria-controls': 'p-relatedsites-list',
'aria-expanded': 'true'
})
.text('В других проектах')
.click(function(e) {
e.preventDefault();
});
var p_lang_label = p_lang.find('h3');
if (p_lang_label.attr('tabindex')) {
var tabindex = parseInt(p_lang_label.attr('tabindex'), 10) + 1;
p_lang_label.attr('tabindex', tabindex);
}
}
// Monobook & Modern
else {
p_rs.find('h3').text('В других проектах');
}
var links = data.entities[i].sitelinks;
addLink(p_rs_list, 'Викиданные', 'wikidata', wgWikibaseItemId);
$('#t-wikibase').hide();
var claims = data.entities[i].claims;
if (claims && claims.P373 && claims.P373[0] &&
claims.P373[0].mainsnak.datavalue
) {
var cat_name = claims.P373[0].mainsnak.datavalue.value;
addLink(p_rs_list, 'Викисклад', 'commons', 'Category:' + cat_name);
}
for (var proj in links) {
if (proj == 'commonswiki') {
if (!p_rs_list.find('.interwiki-commons').length) {
addLink(p_rs_list, 'Викисклад', 'commons', links[proj].title);
}
}
else if (proj == 'ruwikisource') {
addLink(p_rs_list, 'Викитека', 'wikisource', links[proj].title);
}
else if (proj == 'ruwikivoyage') {
addLink(p_rs_list, 'Викигид', 'wikivoyage', links[proj].title);
}
else if (proj == 'ruwikiquote') {
addLink(p_rs_list, 'Викицитатник', 'wikiquote', links[proj].title);
}
}
if (p_rs_list.children().length) {
p_rs.insertBefore(p_lang);
}
}
}
}
});
};
window.jQuery(document).ready(addRelatedSites);