מדיה ויקי:Gadget-uls.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
$(function() {
function getrec() {
return (rec = rec || mw.uls.getFrequentLanguageList() || ['en', 'fr', 'es', 'de']);
}
var rec, api = new mw.Api(),
lang = mw.config.get('wgContentLanguage'),
type = mw.config.get('wgDBname').substr(lang.length),
userlang = mw.config.get('wgUserLanguage');
$('.ulshere').each(function() {
var id, cur = $(this);
$.getJSON('//www.wikidata.org/w/api.php?callback=?', {
action: 'wbgetentities',
format: 'json',
ids: (id = cur.data('id')),
props: 'sitelinks'
}).done(function(data) {
var bindings;
if (data.success && (bindings = Object.entries(data.entities[id].sitelinks)).length)
api.loadMessagesIfMissing(['vector-language-button-label', 'massmessage-invalid-lang'], {
//'vector-language-button-aria-label'], {
amlang: userlang
}).then(function() {
var size, a, keys, itemtable = {},
langmap = {};
bindings.map(function(item) {
var langcode, onelang, autonym;
if (item[0].endsWith(type) && (onelang = $.uls.data.isRedirect(langcode =
item[0].replace(type, '').replaceAll('_', '-')) || langcode) !==
(autonym = $.uls.data.getAutonym(onelang))) {
itemtable[onelang] = langcode + ':' + item[1].title;
langmap[onelang] = autonym;
}
});
if (langmap[lang]) {
delete langmap[lang];
if ((size = (keys = Object.keys(langmap)).length)) {
cur//.createtooltip(mw.msg('vector-language-button-aria-label', size), 1000, 'nw')
.prepend(a = $('<a>').addClass('uls-trigger')
.text(mw.msg('vector-language-button-label', size)))
.find('span').remove();
a.uls({
languages: langmap,
onSelect: function(language) {
var params = {
action: 'expandtemplates',
text: '{{fullurl:' + itemtable[language] + '}}',
prop: 'wikitext',
format: 'json'
};
api.get(params)
.done(function(data) {
window.open(data.expandtemplates.wikitext, '_ulswindow' + id);
});
},
onVisible: function() {
$('.tipsy').remove();
},
noResultsTemplate: function(query) {
return $('<div>', {
text: mw.msg('massmessage-invalid-lang', query),
dir: 'auto'
});
},
quickList: getrec().filter(function (x) {
return keys.includes(x);
}),
groupByRegion: true,
menuWidth: 'narrow'
});
}
}
else
cur.find('span').remove();
});
});
});
});