MediaWiki:Gadget-WikidataLink.js
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
- Opera: натисніть Ctrl-F5
if (mw.config.get('wgAction') == 'view') {
location.search.indexOf("printable=yes") == -1 && $(function ($) {
var translate = {
'en': {
notfound: "Wikidata item not found.",
intro: "Wikidata: ",
nolabel: "(No label)",
nodescription: "no description given",
aliases: "Aliases: ",
noaliases: "None"
},
'uk': {
notfound: "Тотожного елемента Вікіданих не знайдено [створити].",
intro: "Вікідані: ",
nolabel: "(без назви)",
nodescription: "без опису",
aliases: "Інші назви: ",
noaliases: "нема"
}
}
var namespace = mw.config.get('wgNamespaceNumber'),
lang = mw.config.get('wgPageContentLanguage'),
page = ( namespace -= ( namespace > 0 && namespace % 2 ) ) === 0 ? mw.config.get('wgTitle') : mw.config.get('wgFormattedNamespaces')[ namespace ] + ':' + mw.config.get('wgTitle');
namespace != 2 && $.ajax({
url: '//www.wikidata.org/w/api.php',
data: {
'format': 'json',
'action': 'wbgetentities',
'sites': mw.config.get('wgDBname'),
'titles': page,
'props': 'info|labels|descriptions|aliases',
'languages': lang
},
dataType: 'jsonp',
success: function (data) {
if (data.success) {
var $d = $("<div>").appendTo("#contentSub"),
m = translate[ lang ] || translate.en;
for (var i in data.entities) {
if (i == -1) {
$d.append($("<a>").attr("href", "//www.wikidata.org/wiki/Special:CreateItem?site="+mw.config.get("wgDBname")+"&page="+page).text( m.notfound ))
var api = new mw.Api();
api.get({
action: 'query',
titles: page,
prop: 'langlinks',
lllimit: 'max'
})
.done( function ( data ) {
var pg, ll, hasItem;
for (pg in data.query.pages)
if (!data.query.pages[pg].missing)
for (ll in data.query.pages[pg].langlinks){
lang = data.query.pages[pg].langlinks[ll].lang;
$.ajax({
url: '//www.wikidata.org/w/api.php',
data: {
'format': 'json',
'action': 'wbgetentities',
'sites': data.query.pages[pg].langlinks[ll].lang + 'wiki',
'titles': data.query.pages[pg].langlinks[ll]["*"],
'props': 'info|labels|descriptions|aliases',
'languages': lang
},
dataType: 'jsonp',
success: function (data){
if (!hasItem)
for (var i in data.entities)
if (i != -1){
hasItem = data.entities[i];
var i = 0, aliases = [];
try {
for (; i < item.aliases[lang].length; i++)
aliases.push(item.aliases[lang][i].value);
} catch (e) { }
$d.append($("<a>").attr("href", "//www.wikidata.org/wiki/" + hasItem.title).text(" Можливо, потрібний елемент: " + ( hasItem.labels ? hasItem.labels[lang] ? hasItem.labels[lang].value : "" : "") + " (" + hasItem.title + ")"),
$("<span>").text(", "),
$("<i>").text(hasItem.descriptions && hasItem.descriptions[lang] ? hasItem.descriptions[lang].value : m.nodescription),
$("<br>"),
$("<span>").text(m.aliases + (aliases.join(", ") || m.noaliases))
)
break;
}
}
});
}
})
.fail( function ( error ) {
alert( error );
});
} else {
var item = data.entities[i],
i = 0, aliases = [];
try {
for (; i < item.aliases[lang].length; i++) {
aliases.push(item.aliases[lang][i].value);
}
} catch (e) { }
$d.append($("<a>").attr("href", "//www.wikidata.org/wiki/" + item.title).text(m.intro + ( item.labels ? item.labels[lang].value : m.nolabel ) + " (" + item.title + ")"),$("<span>").text(", "),$("<i>").text(item.descriptions && item.descriptions[lang]? item.descriptions[lang].value : m.nodescription),$("<br>"),$("<span>").text(m.aliases + (aliases.join(", ") || m.noaliases)))
}
}
}
}
});
});
}// if 'view'