MediaWiki:Gadget-interwiki.js
Jump to navigation
Jump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// Update from https://intuition.toolforge.org/wpAvailableLanguages.js.php - Last update: Wed, 28 Jun 2023 19:53:02 +0000
window.wpAvailableLanguages={"aa":"Qafár af","ab":"аԥсшәа","abs":"bahasa ambon","ace":"Acèh","acm":"عراقي","ady":"адыгабзэ","ady-cyrl":"адыгабзэ","aeb":"تونسي \/ Tûnsî","aeb-arab":"تونسي","aeb-latn":"Tûnsî","af":"Afrikaans","agq":"Aghem","ak":"Akan","aln":"Gegë","als":"Alemannisch","alt":"алтай тил","am":"አማርኛ","ami":"Pangcah","an":"aragonés","ang":"Ænglisc","ann":"Obolo","anp":"अंगिका","ar":"العربية","arc":"ܐܪܡܝܐ","arn":"mapudungun","arq":"جازايرية","ary":"الدارجة","arz":"مصرى","as":"অসমীয়া","ase":"American sign language","ast":"asturianu","atj":"Atikamekw","av":"авар","avk":"Kotava","awa":"अवधी","ay":"Aymar aru","az":"azərbaycanca","azb":"تۆرکجه","ba":"башҡортса","bag":"Tuki","ban":"Basa Bali","ban-bali":"ᬩᬲᬩᬮᬶ","bar":"Boarisch","bas":"Basaa","bat-smg":"žemaitėška","bax":"Bamum","bbc":"Batak Toba","bbc-latn":"Batak Toba","bbj":"Ghomála'","bcc":"جهلسری بلوچی","bci":"wawle","bcl":"Bikol Central","be":"беларуская","be-tarask":"беларуская (тарашкевіца)","be-x-old":"беларуская (тарашкевіца)","bew":"Betawi","bfd":"Bafut","bg":"български","bgn":"روچ کپتین بلوچی","bh":"भोजपुरी","bho":"भोजपुरी","bi":"Bislama","bjn":"Banjar","bkc":"Baka","bkh":"Bakoko","bkm":"Kom","blk":"ပအိုဝ်ႏဘာႏသာႏ","bm":"bamanankan","bn":"বাংলা","bo":"བོད་ཡིག","bpy":"বিষ্ণুপ্রিয়া মণিপুরী","bqi":"بختیاری","bqz":"Mka'a","br":"brezhoneg","brh":"Bráhuí","bs":"bosanski","btm":"Batak Mandailing","bto":"Iriga Bicolano","bug":"ᨅᨔ ᨕᨘᨁᨗ","bxr":"буряад","byv":"Medumba","ca":"català","cak":"Kaqchikel","cbk-zam":"Chavacano de Zamboanga","cdo":"閩東語 \/ Mìng-dĕ̤ng-ngṳ̄","ce":"нохчийн","ceb":"Cebuano","ch":"Chamoru","cho":"Chahta anumpa","chr":"ᏣᎳᎩ","chy":"Tsetsêhestâhese","ckb":"کوردی","cnh":"Hakha Chin","co":"corsu","cps":"Capiceño","cr":"Nēhiyawēwin \/ ᓀᐦᐃᔭᐍᐏᐣ","crh":"qırımtatarca","crh-cyrl":"къырымтатарджа (Кирилл)","crh-latn":"qırımtatarca (Latin)","crh-ro":"tatarşa","cs":"čeština","csb":"kaszëbsczi","cu":"словѣньскъ \/ ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ","cv":"чӑвашла","cy":"Cymraeg","da":"dansk","dag":"dagbanli","de":"Deutsch","de-at":"Österreichisches Deutsch","de-ch":"Schweizer Hochdeutsch","de-formal":"Deutsch (Sie-Form)","dga":"Dagaare","din":"Thuɔŋjäŋ","diq":"Zazaki","dsb":"dolnoserbski","dtp":"Dusun Bundu-liwan","dty":"डोटेली","dua":"Duala","dv":"ދިވެހިބަސް","dz":"ཇོང་ཁ","ee":"eʋegbe","egl":"Emiliàn","el":"Ελληνικά","eml":"emiliàn e rumagnòl","en":"English","en-ca":"Canadian English","en-gb":"British English","en-us":"American English","eo":"Esperanto","es":"español","es-419":"español de América Latina","es-formal":"español (formal)","et":"eesti","eto":"Eton","etu":"Ejagham","eu":"euskara","ewo":"Ewondo","ext":"estremeñu","fa":"فارسی","fat":"mfantse","ff":"Fulfulde","fi":"suomi","fit":"meänkieli","fiu-vro":"võro","fj":"Na Vosa Vakaviti","fkv":"kvääni","fmp":"Fe'fe'","fo":"føroyskt","fon":"fɔ̀ngbè","fr":"français","frc":"français cadien","frp":"arpetan","frr":"Nordfriisk","fur":"furlan","fy":"Frysk","ga":"Gaeilge","gaa":"Ga","gag":"Gagauz","gan":"贛語","gan-hans":"赣语(简体)","gan-hant":"贛語(繁體)","gcr":"kriyòl gwiyannen","gd":"Gàidhlig","gl":"galego","gld":"на̄ни","glk":"گیلکی","gn":"Avañe'ẽ","gom":"गोंयची कोंकणी \/ Gõychi Konknni","gom-deva":"गोंयची कोंकणी","gom-latn":"Gõychi Konknni","gor":"Bahasa Hulontalo","got":"\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a","gpe":"Ghanaian Pidgin","grc":"Ἀρχαία ἑλληνικὴ","gsw":"Alemannisch","gu":"ગુજરાતી","guc":"wayuunaiki","gur":"farefare","guw":"gungbe","gv":"Gaelg","gya":"Gbaya","ha":"Hausa","hak":"客家語\/Hak-kâ-ngî","haw":"Hawaiʻi","he":"עברית","hi":"हिन्दी","hif":"Fiji Hindi","hif-latn":"Fiji Hindi","hil":"Ilonggo","hno":"ہندکو","ho":"Hiri Motu","hr":"hrvatski","hrx":"Hunsrik","hsb":"hornjoserbsce","hsn":"湘语","ht":"Kreyòl ayisyen","hu":"magyar","hu-formal":"magyar (formal)","hy":"հայերեն","hyw":"Արեւմտահայերէն","hz":"Otsiherero","ia":"interlingua","id":"Bahasa Indonesia","ie":"Interlingue","ig":"Igbo","igl":"Igala","ii":"ꆇꉙ","ik":"Iñupiatun","ike-cans":"ᐃᓄᒃᑎᑐᑦ","ike-latn":"inuktitut","ilo":"Ilokano","inh":"гӀалгӀай","io":"Ido","is":"íslenska","isu":"Isu","it":"italiano","iu":"ᐃᓄᒃᑎᑐᑦ \/ inuktitut","ja":"日本語","jam":"Patois","jbo":"la .lojban.","jut":"jysk","jv":"Jawa","ka":"ქართული","kaa":"Qaraqalpaqsha","kab":"Taqbaylit","kbd":"адыгэбзэ","kbd-cyrl":"адыгэбзэ","kbp":"Kabɩyɛ","kcg":"Tyap","kea":"kabuverdianu","ker":"Kera","kg":"Kongo","khw":"کھوار","ki":"Gĩkũyũ","kiu":"Kırmancki","kj":"Kwanyama","kjh":"хакас","kjp":"ဖၠုံလိက်","kk":"қазақша","kk-arab":"قازاقشا (تٴوتە)","kk-cn":"قازاقشا (جۇنگو)","kk-cyrl":"қазақша (кирил)","kk-kz":"қазақша (Қазақстан)","kk-latn":"qazaqşa (latın)","kk-tr":"qazaqşa (Türkïya)","kl":"kalaallisut","km":"ភាសាខ្មែរ","kn":"ಕನ್ನಡ","ko":"한국어","ko-kp":"조선말","koi":"перем коми","kr":"kanuri","krc":"къарачай-малкъар","kri":"Krio","krj":"Kinaray-a","krl":"karjal","ks":"कॉशुर \/ کٲشُر","ks-arab":"کٲشُر","ks-deva":"कॉशुर","ksf":"Bafia","ksh":"Ripoarisch","ksw":"စှီၤ","ku":"kurdî","ku-arab":"كوردي (عەرەبی)","ku-latn":"kurdî (latînî)","kum":"къумукъ","kus":"Kʋsaal","kv":"коми","kw":"kernowek","ky":"кыргызча","la":"Latina","lad":"Ladino","lb":"Lëtzebuergesch","lbe":"лакку","lem":"Nomaande","lez":"лезги","lfn":"Lingua Franca Nova","lg":"Luganda","li":"Limburgs","lij":"Ligure","liv":"Līvõ kēļ","lki":"لەکی","lld":"Ladin","lmo":"lombard","ln":"lingála","lns":"Lamnso'","lo":"ລາວ","loz":"Silozi","lrc":"لۊری شومالی","lt":"lietuvių","ltg":"latgaļu","lus":"Mizo ţawng","luz":"لئری دوٙمینی","lv":"latviešu","lzh":"文言","lzz":"Lazuri","mad":"Madhurâ","mag":"मगही","mai":"मैथिली","map-bms":"Basa Banyumasan","mcn":"vùn màsànà","mcp":"Maka","mdf":"мокшень","mg":"Malagasy","mh":"Ebon","mhr":"олык марий","mi":"Māori","min":"Minangkabau","mk":"македонски","ml":"മലയാളം","mn":"монгол","mni":"ꯃꯤꯇꯩ ꯂꯣꯟ","mnw":"ဘာသာ မန်","mo":"молдовеняскэ","mos":"moore","mr":"मराठी","mrh":"Mara","mrj":"кырык мары","ms":"Bahasa Melayu","ms-arab":"بهاس ملايو","mt":"Malti","mua":"Mundang","mus":"Mvskoke","mwl":"Mirandés","my":"မြန်မာဘာသာ","myv":"эрзянь","mzn":"مازِرونی","na":"Dorerin Naoero","nah":"Nāhuatl","nan":"Bân-lâm-gú","nan-hani":"閩南語","nap":"Napulitano","nb":"norsk bokmål","nds":"Plattdüütsch","nds-nl":"Nedersaksies","ne":"नेपाली","new":"नेपाल भाषा","ng":"Oshiwambo","nge":"Ngémba","nia":"Li Niha","niu":"Niuē","nl":"Nederlands","nl-informal":"Nederlands (informeel)","nla":"Ngombala","nmg":"Kwasio","nmz":"nawdm","nn":"norsk nynorsk","nnh":"Ngiemboon","nnz":"Nda'nda'","no":"norsk","nod":"ᨣᩤᩴᨾᩮᩬᩥᨦ","nog":"ногайша","nov":"Novial","nqo":"ߒߞߏ","nrm":"Nouormand","nso":"Sesotho sa Leboa","nv":"Diné bizaad","ny":"Chi-Chewa","nyn":"runyankore","nys":"Nyunga","oc":"occitan","ojb":"Ojibwemowin","olo":"livvinkarjala","om":"Oromoo","or":"ଓଡ଼ିଆ","os":"ирон","osa-latn":"Wažáže íe","ota":"لسان عثمانى","pa":"ਪੰਜਾਬੀ","pag":"Pangasinan","pam":"Kapampangan","pap":"Papiamentu","pap-aw":"Papiamento","pcd":"Picard","pcm":"Naijá","pdc":"Deitsch","pdt":"Plautdietsch","pfl":"Pälzisch","pi":"पालि","pih":"Norfuk \/ Pitkern","pl":"polski","pms":"Piemontèis","pnb":"پنجابی","pnt":"Ποντιακά","prg":"prūsiskan","ps":"پښتو","pt":"português","pt-br":"português do Brasil","pwn":"pinayuanan","qu":"Runa Simi","quc":"Qatzijob\\ʼal","qug":"Runa shimi","rgn":"Rumagnôl","rif":"Tarifit","rki":"ရခိုင်","rm":"rumantsch","rmc":"romaňi čhib","rmf":"kaalengo tšimb","rmy":"romani čhib","rn":"ikirundi","ro":"română","roa-rup":"armãneashti","roa-tara":"tarandíne","rsk":"руски","ru":"русский","rue":"русиньскый","rup":"armãneashti","ruq":"Vlăheşte","ruq-cyrl":"Влахесте","ruq-latn":"Vlăheşte","rw":"Ikinyarwanda","rwr":"मारवाड़ी","ryu":"沖縄口","sa":"संस्कृतम्","sah":"саха тыла","sat":"ᱥᱟᱱᱛᱟᱲᱤ","sc":"sardu","scn":"sicilianu","sco":"Scots","sd":"سنڌي","sdc":"Sassaresu","sdh":"کوردی خوارگ","se":"davvisámegiella","se-fi":"davvisámegiella (Suoma bealde)","se-no":"davvisámegiella (Norgga bealde)","se-se":"davvisámegiella (Ruoŧa bealde)","sei":"Cmique Itom","ses":"Koyraboro Senni","sg":"Sängö","sgs":"žemaitėška","sh":"srpskohrvatski \/ српскохрватски","sh-cyrl":"српскохрватски (ћирилица)","sh-latn":"srpskohrvatski (latinica)","shi":"Taclḥit","shi-latn":"Taclḥit","shi-tfng":"ⵜⴰⵛⵍⵃⵉⵜ","shn":"ၽႃႇသႃႇတႆး ","shy":"tacawit","shy-latn":"tacawit","si":"සිංහල","simple":"Simple English","sjd":"кӣллт са̄мь кӣлл","sje":"bidumsámegiella","sju":"ubmejesámiengiälla","sk":"slovenčina","skr":"سرائیکی","skr-arab":"سرائیکی","sl":"slovenščina","sli":"Schläsch","sm":"Gagana Samoa","sma":"åarjelsaemien","smj":"julevsámegiella","smn":"anarâškielâ","sms":"nuõrttsääʹmǩiõll","sn":"chiShona","so":"Soomaaliga","sq":"shqip","sr":"српски \/ srpski","sr-ec":"српски (ћирилица)","sr-el":"srpski (latinica)","srn":"Sranantongo","sro":"sardu campidanesu","srq":"mbia cheë","ss":"SiSwati","st":"Sesotho","stq":"Seeltersk","sty":"себертатар","su":"Sunda","sv":"svenska","sw":"Kiswahili","syl":"ꠍꠤꠟꠐꠤ","szl":"ślůnski","szy":"Sakizaya","ta":"தமிழ்","tay":"Tayal","tcy":"ತುಳು","tdd":"ᥖᥭᥰᥖᥬᥳᥑᥨᥒᥰ","te":"తెలుగు","tet":"tetun","tg":"тоҷикӣ","tg-cyrl":"тоҷикӣ","tg-latn":"tojikī","th":"ไทย","ti":"ትግርኛ","tk":"Türkmençe","tl":"Tagalog","tly":"tolışi","tly-cyrl":"толыши","tn":"Setswana","to":"lea faka-Tonga","tok":"toki pona","tpi":"Tok Pisin","tr":"Türkçe","tru":"Ṫuroyo","trv":"Seediq","ts":"Xitsonga","tt":"татарча \/ tatarça","tt-cyrl":"татарча","tt-latn":"tatarça","tum":"chiTumbuka","tvu":"Tunen","tw":"Twi","ty":"reo tahiti","tyv":"тыва дыл","tzm":"ⵜⴰⵎⴰⵣⵉⵖⵜ","udm":"удмурт","ug":"ئۇيغۇرچە \/ Uyghurche","ug-arab":"ئۇيغۇرچە","ug-latn":"Uyghurche","uk":"українська","ur":"اردو","uz":"oʻzbekcha \/ ўзбекча","uz-cyrl":"ўзбекча","uz-latn":"oʻzbekcha","ve":"Tshivenda","vec":"vèneto","vep":"vepsän kel’","vi":"Tiếng Việt","vls":"West-Vlams","vmf":"Mainfränkisch","vmw":"emakhuwa","vo":"Volapük","vot":"Vaďďa","vro":"võro","vut":"Vute","wa":"walon","wal":"wolaytta","war":"Winaray","wes":"Pidgin (Cameroon)","wls":"Fakaʻuvea","wo":"Wolof","wuu":"吴语","wuu-hans":"吴语(简体)","wuu-hant":"吳語(正體)","wya":"Wyandot","xal":"хальмг","xh":"isiXhosa","xmf":"მარგალური","xsy":"saisiyat","yas":"Nugunu","yat":"Yambeta","yav":"Yangben","ybb":"Yemba","yi":"ייִדיש","yo":"Yorùbá","yrl":"Nhẽẽgatú","yue":"粵語","yue-hans":"粵语(简体)","yue-hant":"粵語(繁體)","za":"Vahcuengh","zea":"Zeêuws","zgh":"ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ","zh":"中文","zh-classical":"文言","zh-cn":"中文(中国大陆)","zh-hans":"中文(简体)","zh-hant":"中文(繁體)","zh-hk":"中文(香港)","zh-min-nan":"Bân-lâm-gú","zh-mo":"中文(澳門)","zh-my":"中文(马来西亚)","zh-sg":"中文(新加坡)","zh-tw":"中文(臺灣)","zh-yue":"粵語","zu":"isiZulu"};
// <nowiki>
// Show Wikipedia interwiki links from Wikidata ID
// Use with [[d:Q1]]
// </nowiki>
( function() {
// Suggested languages
var suggestedLangs = [
'en',
'bg',
'be',
'be-tarask', 'be-x-old',
'bs',
'cs',
'csb',
'cu',
'dsb',
'hr',
'hsb',
'mk',
'pl',
'ru',
'rue',
'sh',
'sk',
'sl',
'sr',
'szl',
'uk'
];
// Ignore global Wikimedia wikis
var ignoredWikis = [
'commonswiki',
'incubatorwiki',
'mediawikiwiki',
'metawiki',
'sourceswiki',
'specieswiki',
'wikidatawiki',
'wikimaniawiki',
'outreachwiki'
];
// Should match [[MediaWiki:Interlanguage-link-d]]
var wdLinkLabel = 'Element Vikidanyh';
// Response caching time in seconds (1 hour)
var cachingTime = 60 * 60;
// Re-used variables
var id;
var isMinerva = mw.config.get( 'skin' ) === 'minerva';
var isVector2022 = mw.config.get( 'skin' ) === 'vector-2022';
var langOverlay;
var $wdItem;
var $listItem;
// Link counts
var linkCount = 0;
var regularLinkCount = 0;
// Internal script data
var iwData = {
useBadges: true,
listSelector: '#p-lang ul',
wdItemPlacement: '#t-info',
wdGadgetId: '#t-wikibase',
wdSelector: '.interwiki-d'
}
// Change some variables in Minerva
if ( isMinerva ) {
Object.assign( iwData, {
useBadges: false,
showAll: true,
listSelector: '.all-languages',
wdItemPlacement: '.suggested-languages li:last-child',
wdSelector: '.all-languages li',
// Minerva-specific options
suggestedListSelector: '.suggested-languages',
autonymSelector: '.autonym',
titleSelector: '.title'
} );
}
// Change some variables in Vector 2022
if ( isVector2022 ) {
function vector2022AfterRender() {
mw.loader.using( 'mediawiki.api' ).then( function() {
new mw.Api().loadMessagesIfMissing( [
'vector-language-button-label',
'vector-language-button-aria-label'
] ).then( function() {
$( '#p-lang-btn' )
.removeClass( [ 'mw-portlet-empty', 'oo-ui-pendingElement-pending' ] )
.addClass( [ 'mw-portlet', 'mw-portlet-lang' ] );
$( '#p-lang-btn-checkbox' ).attr( 'aria-label', mw.message(
'vector-language-button-aria-label',
mw.language.convertNumber( linkCount ) ).text()
);
$( '#p-lang-btn-label .vector-menu-heading-label' ).text( mw.message(
'vector-language-button-label',
mw.language.convertNumber( linkCount ) ).text()
);
} );
} );
}
var $vectorLangList = $( '#p-lang-btn .vector-menu-content-list' );
$vectorLangList.before( $vectorLangList.clone().empty() );
Object.assign( iwData, {
showAll: true,
suggestedListSelector: '#p-lang-btn .vector-menu-content-list:first-child',
listSelector: '#p-lang-btn .vector-menu-content-list:last-child',
afterRender: vector2022AfterRender
} );
}
/**
* @returns Wikidata item ID.
*/
function getWdItem() {
$wdItem = $( iwData.wdSelector );
var $link = $wdItem.find( 'a' );
var newId = null;
if ( $link.length ) {
newId = $link.attr( 'href' ).match( /Q(\d+)$/g );
}
return ( newId ? newId[ 0 ] : null );
}
/**
* @param name Wiki database name.
* @returns Language code.
*/
function getLangCode( name ) {
return name.substring( 0, name.length - 4 ).replace( /_/g, '-' );
}
/**
* Check if the code is suggested.
*
* @param code Language code.
* @returns True if suggested / false if not.
*/
function isSuggested( code ) {
return suggestedLangs.indexOf( code ) > -1;
}
/**
* Render toggle button if not present
*
* @param $list HTML element where the button will work.
*/
function renderToggleButton( $list ) {
if ( $( '.ext-gadget-interwiki-trigger' ).length ) return;
var $button = $( '<button>' ).addClass( 'mw-ui-button ext-gadget-interwiki-trigger' );
$button.text( 'Ješče ' + regularLinkCount );
$button.on( 'click', function( e ) {
$list.find( 'li:hidden' ).show();
$( this ).remove();
} );
$list.after( $button );
}
/**
* Get interwiki list item.
*
* @param code Language code for the site.
* @param data Site data.
* @returns jQuery list item.
*/
function getListItem( code, data ) {
var name = wpAvailableLanguages[ code ];
if ( !name ) {
console.warn( 'ext.gadget.interwiki: no name for ' + code + ' found. Gadget probably has to be updated.' );
}
var $item = $listItem.clone();
$item.addClass( 'interwiki-' + code );
linkCount++;
if ( !isSuggested( code ) ) {
if ( !iwData.showAll ) $item.hide();
regularLinkCount++;
}
// Add all badges
if ( iwData.useBadges && data.badges.length ) {
$item.addClass( 'badge-' + data.badges.join( ' badge-' ) );
}
// Modify cloned link
var $link = $item.find( 'a' );
$link.addClass( code )
.attr( 'href', data.url )
.attr( 'lang', code )
.attr( 'hreflang', code );
var linkTitle = data.title + ' — ' + name;
if ( name && name.length > 0 ) {
name = name.charAt( 0 ).toUpperCase() + name.slice( 1 );
}
if ( iwData.autonymSelector && iwData.titleSelector ) {
$link.find( iwData.autonymSelector ).text( name );
$link.find( iwData.titleSelector ).text( data.title );
} else {
$link.attr( 'title', linkTitle ).text( name );
}
return $item;
}
/**
* Render a list of language links
*
* @param data Array with site link data.
*/
function renderIwList( data ) {
linkCount = 0;
regularLinkCount = 0;
// Clean up Wikidata link
var $wdItemLink = $wdItem.find( 'a' );
$wdItemLink
.removeAttr( 'lang' ).removeAttr( 'hreflang' )
.removeClass( 'd' );
$wdItem.removeClass( 'interwiki-d' );
$listItem = $wdItem.clone();
// Render the list
var $langList = $( iwData.listSelector );
var lastInserted = null;
for ( var i = 0; i < data.length; i++ ) {
var item = data[ i ];
var code = getLangCode( item.site );
var notInserted = true;
var listItem = getListItem( code, item );
// Choose a list to insert if needed
var $list = $langList;
if ( iwData.suggestedListSelector && isSuggested( code ) ) {
if ( iwData.suggestedListSelector === iwData.listSelector ) {
if ( lastInserted !== null ) {
$list.find( '.interwiki-' + lastInserted ).after( listItem );
} else {
$list.prepend( listItem );
}
lastInserted = code;
notInserted = false;
} else {
$list = $( iwData.suggestedListSelector );
}
}
if ( notInserted ) $list.append( listItem );
}
// Add label if missing
var $labelTarget = $wdItemLink;
if ( iwData.autonymSelector ) {
$labelTarget = $wdItemLink.find( iwData.autonymSelector );
}
if ( $labelTarget.text() === '' ) {
$labelTarget.text( wdLinkLabel );
}
// Move or update link to Wikidata
var $wdExistingItem = $( iwData.wdGadgetId );
if ( $wdExistingItem.length ) {
$wdExistingItem.html( $wdItem.html() );
$wdItem.remove();
} else {
$wdItem.removeAttr( 'class' ).attr( 'id', 't-wikibase' );
$wdItem.insertAfter( iwData.wdItemPlacement );
}
if ( iwData.afterRender ) iwData.afterRender();
// Show hidden links if there are few of them
if ( iwData.showAll ) return;
if ( regularLinkCount <= 2 || linkCount <= 11 ) {
$langList.find( 'li:hidden' ).show();
return;
}
renderToggleButton( $langList );
}
/**
* Filter data from non-Wikipedias and sort it.
*
* @param data Request response.
* @returns Filtered array with site link data.
*/
function filterData( data ) {
return Object.keys( data )
.filter( function( key ) {
return ignoredWikis.indexOf( key ) === -1
&& key.substr( -4 ) === 'wiki'
} )
.sort( function( a, b ) {
// Wikidata response is sorted wrong
return getLangCode( a ) > getLangCode( b );
} )
.map( function( key ) {
var result = data[ key ] || {};
result.lang = getLangCode( key );
result.autonym = wpAvailableLanguages[ getLangCode( key ) ] || '';
result.langname = result.autonym;
return result;
} );
}
/**
* Request interwiki links for current item.
*
* @returns jQuery promise with the data.
*/
function requestIwLinks() {
id = getWdItem();
if ( id === null ) return;
return $.get( {
url: 'https://www.wikidata.org/w/api.php',
data: {
format: 'json',
action: 'wbgetentities',
origin: '*',
ids: id,
props: 'sitelinks/urls',
utf8: true,
maxage: cachingTime,
smaxage: cachingTime
}
} ).done( function( response ) {
var data;
if ( response ) {
response = response.entities;
var keys = Object.keys( response );
data = response[ keys[ 0 ] ].sitelinks;
}
if ( data ) {
data = filterData( data );
renderIwList( data );
// Minerva search support
if ( langOverlay ) {
langOverlay.options.languages = data;
}
}
} );
}
/**
* Custom Minerva setup.
*/
function setupOnMinerva( overlay ) {
langOverlay = overlay;
var $langListHeader = null;
// Callback
iwData.afterRender = function() {
langOverlay.$languageItems = langOverlay.$el.find( 'a' );
if ( !$langListHeader ) {
return;
}
$langListHeader.text(
$langListHeader.text() + '(' + regularLinkCount + ')'
);
}
// Add suggested languages section
$langListHeader = $( langOverlay.$subheaders[ 0 ] );
var $suggestedList = $( langOverlay.$el ).find( iwData.listSelector ).clone();
$suggestedList.removeClass( 'all-languages' )
.addClass( 'suggested-languages' )
.empty();
var $suggestedListHeading = $langListHeader.clone();
$suggestedListHeading.text( langOverlay.options.suggestedLanguagesHeader );
$langListHeader.before( $suggestedList );
$suggestedList.before( $suggestedListHeading );
langOverlay.$siteLinksList = langOverlay.$el.find( '.site-link-list' );
langOverlay.$subheaders = langOverlay.$el.find( 'h3' );
// Remove link number
$langListHeader.text( $langListHeader.text().replace( /\(\d+\)$/, '' ) );
$( requestIwLinks );
}
// Fire events
if ( isMinerva ) {
mw.hook( 'mobileFrontend.languageSearcher.onOpen' ).add( function( overlay ) {
setupOnMinerva( overlay );
} );
} else {
mw.hook( 'wikipage.content' ).add( requestIwLinks );
}
}() );