Модуль:External links
Тас көрүҥэ
Модуль используется в шаблоне {{Тас сигэлэр}}.
-- Localizable part
-- Please, note, that labels to various sites and cataloges are taken from Wikidata (i.e. Wikidata label)
local linksPrefix = ''
local project = 'Бикипиэдьийэ'
local categoryTemplateEmpty = project .. ':Халыып «Тас сигэлэр» кураанах'
local categoryWithWikimediaCommons = project .. ':Биики ыскылаакка сигэлээх ыстатыйалар'
local templateLink = 'Тас сигэлэр'
local group1Label = '[[' .. linksPrefix .. 'Социал ситим|Социальнай ситимнэрэ]]'
local group2Label = 'Айымньылар тиэкистэрэ'
local group3Label = 'Хаартыска, видео уонна аудио'
local group4Label = 'Тустаах ситим-сирдэр'
local group5Label = 'Тылдьыттар уонна энциклопедиялар'
local group6Label = '[[' .. linksPrefix .. 'Нормативнай хонтуруол|Нормативнай хонтуруол]]'
-- The language codes that should be always displayed even if they have normal rank and claim with another language and prefferered rank exists
local preferredLanguage = 'Q34299'; -- sakha
local templateColorName = 'өҥө';
-- Some projects have "named" colors, defined by templates
function colorByTitle( frame, colorTitle )
local templateName = 'Өҥө/' .. colorTitle;
local templateTitle = mw.title.makeTitle( 'Template', templateName );
if ( templateTitle == nil or not templateTitle.exists ) then
return false;
end
return frame:expandTemplate{ title = templateName };
end
local dictionaries = {
{ id = 'Q19217220', title = 'Березин', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q4086271', title = 'Библия', project = 'ruwikisource', projectCode = 's:' },
{ id = 'P1296', title = 'Улахан каталан', linkF = function ( id ) return 'http://www.enciclopedia.cat/enciclopèdies/gran-enciclopèdia-catalana/EC-GEC-' .. id .. '.xml' end },
{ id = 'P2924', title = 'Улахан нуучча', linkF = function ( id ) return 'http://bigenc.ru/text/' .. id; end, },
{ id = 'Q20078554', title = 'Улуу Советскай (1-кы изд.)', project = 'ruwikisource', projectCode = 's:' },
-- { id = 'Q17378135', title = 'Улуу Советскай ', },
{ id = 'Q4091878', title = 'Южаков улахан', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q602358', title = 'Брокгауз уонна Ефрон', project = 'ruwikisource', projectCode = 's:' },
{ id = 'P1648', title = 'Валлий биографик', linkF = function ( id ) return 'http://yba.llgc.org.uk/en/' .. id .. '.html' end, },
{ id = 'Q4114391', title = 'Сытин военнай', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q4173137', title = 'Брокгауз уонна Ефрон еврейскай', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q4091875', title = 'Кирилл уонна Мефодий', },
{ id = 'P1438', title = 'Кылгас еврейскай', linkF = function ( id ) return 'http://www.eleven.co.il/article/' .. id; end, },
{ id = 'Q4239850', title = 'Кылгас литературнай' },
{ id = 'Q2627728', title = 'Кругосвет' },
{ id = 'Q17329836', title = 'Ларусса', },
{ id = 'Q17290934', title = 'Лентапедия', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q4263804', title = 'Литературнай', },
{ id = 'Q19180675', title = 'БЕКЭТ', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q27680201', title = 'Рим музыкатын', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q19190511', title = 'Саҥа', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q2498180', title = 'Православнай', },
{ id = 'Q19211082', title = 'Праваславнай религиознай', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q30059240', title = 'Любкер тылдьытын', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q1960551', title = 'Нуучча биографическай', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q20078551', title = 'Техник (1-кы изд.)', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q1970746', title = 'В. Даль', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q4532135', title = 'Энциклопедическай тылдьыт', project = 'ruwikisource', projectCode = 's:' },
{ id = 'Q590208', title = 'Allgemeine Deutsche Biographie', project = 'dewikisource', projectCode = 's:de:' },
{ id = 'Q19077875', title = 'American Cycl. (1879)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q19037977', title = 'American Med. Biogr. (1920)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q12912667', title = 'Appletons\' (1887—1901)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q20096917', title = 'Британника (9-th)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q867541', title = 'Британника (11-th)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q15987490', title = 'Британника (12-th)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'P1417', title = 'Британника (онлайн)', linkF = function ( id ) return 'http://global.britannica.com/'.. id; end,},
{ id = 'Q302556', title = 'Catholic (1907—13)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q16011749', title = 'Dictionary of Music and Musicians', project = 'enwikisource', projectCode = 'wikisource:'},
{ id = 'Q15987216', title = 'Dictionary of National Biography', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q16014700', title = 'Dictionary of National Biography (1st suppl.)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'Q16014697', title = 'Dictionary of National Biography (2nd suppl.)', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'P1614', title = 'History of Parliament', linkF = function ( id ) return 'http://www.historyofparliamentonline.org/volume/' .. id; end, },
{ id = 'Q20961706', title = 'Infernal (6e éd.)', project = 'frwikisource', projectCode = 's:fr:' },
{ id = 'Q20089963', title = 'New International', project = 'enwikisource', projectCode = 'wikisource:' },
{ id = 'P1415', title = 'Оксфорд биографическай', linkF = function ( id ) return 'http://www.oxforddnb.com/index/' .. id; end, },
{ id = 'P3217', title = 'Швед биографическай', linkF = function ( id ) return 'https://sok.riksarkivet.se/sbl/Presentation.aspx?id=' .. id; end, },
{ id = 'P902', title = 'Швейцария устуоруйата', linkF = function ( id ) return 'http://www.hls-dhs-dss.ch/textes/f/F' .. id .. '.php'; end, },
{ id = 'P886', title = 'Швейцария устуоруйата (онлайн)', linkF = function ( id ) return 'http://www.e-lir.ch/e-LIR___Lexicon.' .. id .. '.450.0.html'; end, },
}
-- Feel free to correct labels and categories, or add/remove sources here
local dictionaryProperties = {
}
-- Non-localizable part (not need to localize )
local moduleNavbox = require('Module:Navbox')
local titleBasedLinks = { ['Q602358'] = true, ['Q17290934'] = true, ['Q1960551'] = true }
local p = {}
function link( url )
return url
end
function aniDBLink( id )
local pos,_ = id:find("/")
local type = id:sub(1,pos-1)
local number = id:sub(pos+1)
local urltype =''
if type == "anime" then
urltype = "a"
elseif type == "creator" then
urltype = "creator"
elseif type == "character" then
urltype = "char"
else
return ""
end
return "http://anidb.net/perl-bin/animedb.pl?show=" ..type .. "&" .. urltype .. "id=" .. number
end
function bavLink( id ) return 'http://viaf.org/processed/BAV%7C' .. id; end
function bibsysLink( id ) return 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&cql=bs.autid+%3D+' .. id .. '&feltselect=bs.autid'; end
function bncLink( id ) return 'http://cantic.bnc.cat/registres/CUCId/' .. id; end
function bneLink( id ) return 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=' .. id; end
function bnfLink( id ) return 'http://catalogue.bnf.fr/ark:/12148/cb' .. id; end
function boxofficemojoLink( id ) return 'http://www.boxofficemojo.com/movies/?id=' .. id .. '.htm'; end
function bpnLink( id ) return 'http://www.biografischportaal.nl/persoon/' .. id; end
function calisLink( id ) return 'http://opac.calis.edu.cn/aopac/ajsp/detail.jsp?actionfrom=1&actl=CAL++' .. id; end
function cbdbLink( id ) return 'http://db1.ihp.sinica.edu.tw/cbdbc/cbdbkmeng?~~AAA' .. id; end
function ciniiLink( id ) return 'http://ci.nii.ac.jp/author/' .. id; end
function conorLink( id ) return 'http://www.cobiss.si/scripts/cobiss?command=DISPLAY&base=CONOR&rid=' .. id; end
function chitalnyaRuLink( id ) return 'http://www.chitalnya.ru/users/' .. id .. '/'; end
function commonsWikimediaLink( id ) return ':commons:Category:' .. id; end
function egaxaLink( id ) return 'http://viaf.org/processed/EGAXA%7Cvtls' .. id; end
function fanLibRuLink( id )
local firstChar = mw.ustring.sub( id, 1, 1 );
return 'http://fan.lib.ru/' .. firstChar .. '/' .. id .. '/';
end
function flickrLink( id ) return 'https://www.flickr.com/' .. id; end
function findagraveLink( id ) return 'http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GRid=' .. id; end
function dnbLink( id ) return 'http://d-nb.info/' .. id; end
function gndLink( id ) return 'http://d-nb.info/gnd/' .. id; end
function ibdbPersonLink( id ) return 'http://www.ibdb.com/person.php?id=' .. id; end
function ibdbProductionLink( id ) return 'http://www.ibdb.com/production.php?id=' .. id; end
function ibdbShowLink( id ) return 'http://www.ibdb.com/show.php?id=' .. id; end
function ibdbVenueLink( id ) return 'http://www.ibdb.com/venue.php?id=' .. id; end
function isfdbAuthorLink( id ) return 'http://www.isfdb.org/cgi-bin/ea.cgi?' .. id; end
function isfdbPublicationLink( id ) return 'http://www.isfdb.org/cgi-bin/pl.cgi?' .. id; end
function isfdbSeriesLink( id ) return 'http://www.isfdb.org/cgi-bin/pe.cgi?' .. id; end
function isfdbPublisherLink( id ) return 'http://www.isfdb.org/cgi-bin/publisher.cgi?' .. id; end
function imslpLink( id ) return 'http://imslp.org/wiki/' .. string.gsub( id, ' ', '_' ); end
function imdbLink( id )
if string.match( id, '^ch' ) then
return 'http://www.imdb.com/character/' .. id;
end
if string.match( id, '^co' ) then
return 'http://www.imdb.com/company/' .. id;
end
if string.match( id, '^nm' ) then
return 'http://www.imdb.com/name/' .. id;
end
if string.match( id, '^tt' ) then
return 'http://www.imdb.com/title/' .. id;
end
return false
end
function isniLink( id )
id = id:gsub( '[ %-]', '' ):upper();
return 'http://isni-url.oclc.nl/isni/' .. id;
end
function lccnLink( id )
return 'http://id.loc.gov/authorities/' .. id;
end
function lastfmLink( id )
return 'http://www.lastfm.ru/music/' .. id;
end
function iccuLink( id )
id = id:gsub( '\\\\', '%5C' ):upper();
return 'http://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid=' .. id;
end
function lnbLink( id ) return 'http://viaf.org/processed/LNB%7CLNC10-' .. id; end
function merimeeLink( id ) return false end
function mixcloudLink( id ) return 'https://mixcloud.com/' .. id .. '/'; end
function musicBrainzArtistLink( id ) return 'https://musicbrainz.org/artist/' .. id; end
function musicBrainzReleazeGroupLink( id ) return 'https://musicbrainz.org/release-group/' .. id; end
function musicBrainzWorkLink( id ) return 'https://musicbrainz.org/work/' .. id; end
function nclLink( id ) return 'http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=' .. id; end
function ndlLink( id ) return 'http://id.ndl.go.jp/auth/ndlna/' .. id; end
function nlcLink( id ) return false end
function nliLink( id ) return 'http://a20.libnet.ac.il/F?func=find-b&REQUEST=' .. id .. '&find_code=SYS&local_base=NNL10'; end
function nkcLink( id ) return 'http://aut.nkp.cz/' .. id; end
function nlaLink( id ) return 'http://nla.gov.au/anbd.aut-an' .. id; end
function nlrLink( id ) return 'http://alephnew.bibnat.ro:8991/F?func=find-b&request=' .. id .. '000354872&find_code=SYS&adjacent=Y&local_base=NLR10' end
function nszlLink( id ) return 'http://viaf.org/processed/NSZL%7C' .. id; end
function nskLink( id ) return 'http://viaf.org/processed/NSK%7C' .. id; end
function ntaLink( id ) return 'http://opc4.kb.nl/PPN?PPN=' .. id; end
function nukatLink( id ) return 'http://viaf.org/processed/NUKAT%7C' .. id; end
function orcidLink( id )
id = id:gsub( '[ %-]', '' ):upper();
return 'http://orcid.org/' .. id; end
function declaratorLink( id ) return 'http://declarator.org/person/' .. id .. '/'; end
function gutenbergLink( id ) return 'http://www.gutenberg.org/ebooks/' .. id; end
function promodjLink( id ) return 'http://promodj.com/' .. id; end
function prozaRuLink( id ) return 'http://proza.ru/avtor/' .. id; end
function ptbnpLink( id ) return 'http://viaf.org/processed/PTBNP%7C' .. id; end
function rkdArtistsLink( id ) return 'http://www.rkd.nl/rkddb/dispatcher.aspx?action=search&database=ChoiceArtists&search=priref=' .. id; end
function rkdImagesLink( id ) return 'http://explore.rkd.nl/en/images/' .. id; end
function rodovidLink( id ) return 'http://ru.rodovid.org/wk/Person:' .. id; end
function rottentomatoesLink( id ) return 'http://www.rottentomatoes.com/' .. id; end
function rslLink( id ) return 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=' .. id; end
function rutubeLink( id )
if string.match( id, '^%d+$' ) then
return 'http://rutube.ru/video/persion/' .. id .. '/';
end
return 'http://' .. id .. '.rutube.ru/';
end
function samlibRuLink( id )
local firstChar = mw.ustring.sub( id, 1, 1 );
return 'http://samlib.ru/' .. firstChar .. '/' .. id .. '/';
end
function selibrLink( id ) return 'http://libris.kb.se/auth/' .. id; end
function stihiRuLink( id ) return 'http://stihi.ru/avtor/' .. id; end
function sudocLink( id ) return 'http://www.idref.fr/' .. id; end
function ulanLink( id ) return 'http://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id; end
function vimeoLink( id ) return 'https://vimeo.com/' .. id; end
function viafLink( id ) return 'http://viaf.org/viaf/' .. id; end
function youtubeLink( id ) return 'https://youtube.com/' .. id; end
function youtubeLinkLong( id ) return 'https://youtube.com/channel/' .. id; end
function renderLabel( params )
if type( params ) == 'string' then
return params;
end
local id = params[ 1 ];
local default = params[ 2 ];
if #params >= 3 then
local label = params[ 3 ];
local link = mw.wikibase.sitelink( id );
if ( link ~= nil ) then
return '[[' .. link .. '|' .. label .. ']]';
end
local title = mw.wikibase.label( id ) or default;
return '<span title="' .. title .. '" style="border-bottom: 1px dotted; cursor: help;">' .. label .. '</span>'
end
return mw.wikibase.label( id ) or default;
end
local socialNetworkProperties = {
{ { 'Q116933', 'ВКонтакте' }, 'P3185', function( id ) return 'https://vk.com/' .. id; end },
{ { 'Q4101720', 'В кругу друзей' }, 'Q4101720', function( id ) return 'http://' .. id .. '.vkrugudruzei.ru/'; end },
{ { 'Q219523', 'Җанлы Көндәлек' }, 'P3258', function( id ) return 'http://' .. id .. '.livejournal.com/'; end },
{ { 'Q219523', 'Җанлы Көндәлек' }, 'Q219523', function( id ) return 'http://' .. id .. '.livejournal.com/'; end },
{ { 'Q4299813', 'Мой круг' }, 'Q4299813', function( id ) return 'http://' .. id .. '.moikrug.ru/'; end },
{ { 'Q4299858', 'Мой мир' }, 'Q4299858', function( id ) return 'http://my.mail.ru/' .. id; end },
{ { 'Q1123836', 'Одноклассники' }, 'Q1123836', function( id ) return 'https://ok' .. '.ru/profile/' .. id; end },
{ { 'Q17195318', 'Спрашивай.Ру' }, 'Q17195318', function( id ) return 'http://sprashivai.ru/' .. id; end },
{ { 'Q171186', 'Blogger' }, 'Q171186', function( id ) return 'http://' .. id .. '.blogspot.com' end },
{ { 'Q4037665', 'Dudu' }, 'Q4037665', function( id ) return 'http://dudu.com/' .. id; end },
{ { 'Q355', 'Facebook' }, 'P2013', function( id ) return 'https://www.facebook.com/' .. id; end },
{ { 'Q356', 'Google+' }, 'P2847', function( id ) return 'https://plus.google.com/' .. id .. '/posts'; end },
{ { 'Q356', 'Google+' }, 'Q356', function( id ) return 'https://plus.google.com/' .. id .. '/posts'; end },
{ { 'Q4043051', 'LiveInternet' }, 'Q4043051', function( id ) return 'http://www.liveinternet.ru/users/' .. id; end },
{ { 'Q40629', 'MySpace' }, 'Q40629', function( id ) return 'https://myspace.com/' .. id; end },
{ { 'Q40629', 'MySpace' }, 'P3265', function( id ) return 'https://myspace.com/' .. id; end },
{ { 'Q17144398', 'QRoom' }, 'Q17144398', function( id ) return 'http://qroom.ru/' .. id; end },
{ { 'Q1002972', 'Spring.me' }, 'Q1002972', function( id ) return 'http://www.spring.me/' .. id; end },
{ { 'Q15616276', 'Telegram' }, 'P3789', function( id ) return 'https://t.me/' .. id; end },
{ { 'Q15616276', 'Telegram' }, 'Q15616276', function( id ) return 'https://t.me/' .. id; end },
{ { 'Q384060', 'Tumblr' }, 'Q384060', function( id ) return 'http://' .. id .. '.tumblr.com/'; end },
{ { 'Q918', 'Twitter' }, 'P2002', function( id ) return 'https://twitter.com/' .. id; end },
}
local textsProperties = {
{ { 'Q17254543', 'Изба-читальня' }, 'Q17254543', chitalnyaRuLink },
{ { 'Q17195344', '«Самиздат» журналы' }, 'Q17195344', samlibRuLink },
{ { 'Q22673', '«Гутенберг» проекты' }, 'P2034', gutenbergLink },
{ { 'Q4380129', 'Проза.ру' }, 'Q4380129', prozaRuLink },
{ { 'Q4442644', 'Стихи.ру' }, 'Q4442644', stihiRuLink },
{ { 'Q17300505', 'Lib.Ru/Фантастика' }, 'Q17300505', fanLibRuLink },
}
local labelAllocine = { 'Q31165', 'AlloCine' };
local labelAnimeNewsNetwork = { 'Q220509', 'Anime News Network' };
local labelDeezer = { 'Q602243', 'Deezer' };
local labelDiscogs = { 'Q504063', 'Discogs' };
local labelIBDb = { 'Q31964', 'Internet Broadway Database' };
local labelISFDb = { 'Q2629164', 'Internet Speculative Fiction Database' };
local labelMusicBrainz = { 'Q14005', 'MusicBrainz' };
local labelEncyclopaediaMetallum = { 'Q938726', 'Encyclopaedia Metallum' };
local labelYandexMusic = { 'Q4537983', 'Яндекс.Музыка' };
local labelYouTube = { 'Q866', 'YouTube' };
local contentHostingProperties = {
{ { 'Q565', 'Wikimedia Commons' }, 'P373', commonsWikimediaLink, categoryWithWikimediaCommons, true },
{ { 'Q545966', 'Bandcamp' }, 'P3283', function( id ) return 'https://' .. id .. '.bandcamp.com'; end },
{ labelDeezer, 'P2722', function( id ) return 'http://www.deezer.com/artist/' .. id; end, false },
{ labelDeezer, 'P2723', function( id ) return 'http://www.deezer.com/album/' .. id; end, false },
{ labelDeezer, 'P2724', function( id ) return 'http://www.deezer.com/track/' .. id; end, false },
{ { 'Q103204', 'Flickr' }, 'Q103204', flickrLink, false },
{ { 'Q209330', 'Instagram' }, 'P2003', function( id ) return 'http://instagram.com/' .. id; end, false },
{ { 'Q183718', 'Last.fm' }, 'P3192', lastfmLink, false },
{ { 'Q6883832', 'Mixcloud' }, 'Q6883832', mixcloudLink, false },
{ { 'Q2572292', 'Musopen' }, 'P2338', function( id ) return 'https://musopen.org/composer/' .. id .. '/'; end, false },
{ { 'Q17117201', 'PROMODJ' }, 'Q17117201', promodjLink, false },
{ { 'Q372827', 'Rutube' }, 'Q372827', rutubeLink, false },
{ { 'Q568769', 'SoundCloud' }, 'P3040', function( id ) return 'http://soundcloud.com/' .. id .. '/'; end, false },
{ { 'Q568769', 'SoundCloud' }, 'Q568769', function( id ) return 'http://soundcloud.com/' .. id .. '/'; end, false },
{ { 'Q156376', 'Vimeo' }, 'Q156376', vimeoLink, false },
{ labelYandexMusic, 'P1553', function( id ) return 'https://music.yandex.ru/artist/' .. id; end, false },
{ labelYandexMusic, 'P2819', function( id ) return 'https://music.yandex.ru/album/' .. id; end, false },
{ labelYouTube, 'P2397', youtubeLinkLong, false },
{ labelYouTube, 'Q866', youtubeLink, false },
}
local themeProfilesProperties = {
-- science and technic
{ { 'Q364', 'GitHub ' }, 'P2037', function( id ) return 'https://github.com/' .. id; end },
{ { 'Q494817', 'Google Scholar' }, 'P1960', function( id ) return 'https://scholar.google.com/citations?user=' .. id; end },
{ { 'Q829984', 'Mathematics Genealogy Project' }, 'P549', function( id ) return 'http://www.genealogy.ams.org/id.php?id=' .. id; end },
{ { 'Q1373513', 'Notable Names Database' }, 'P1263', function( id ) return 'http://nndb.com/people/' .. id; end },
{ { 'Q51044', 'ORCID' }, 'P496', orcidLink },
{ { 'Q7315186', 'ResearcherID' }, 'P1053', function( id ) return 'http://www.researcherid.com/rid/' .. id; end },
{ { 'Q371467', 'Scopus' }, 'P1153', function( id ) return 'http://www.scopus.com/authid/detail.url?authorId=' .. id; end },
{ { 'Q1061861', 'Structurae' }, 'P2418', function( id ) return 'http://structurae.de/personen/' .. id; end },
{ { 'Q18241050', 'zbMATH' }, 'P1556', function( id ) return 'https://www.zbmath.org/authors/?q=ai:' .. id; end },
{ { 'Q4330205', 'Math-Net.ru' }, 'P4252', function( id ) return 'http://www.mathnet.ru/rus/person' .. id; end },
{ { 'Q547473', 'MacTutor' }, 'P1563', function( id ) return 'http://www-groups.dcs.st-and.ac.uk/~history/Biographies/' .. id .. '.html'; end },
-- sports
{ { 'Q19587362', 'Driver Database' }, 'P3684', function( id ) return 'https://www.driverdb.com/drivers/' .. id .. '/'; end },
{ { 'Q253414', 'FIFA.com' }, 'P1469', function( id ) return 'http://www.fifa.com/fifa-tournaments/players-coaches/people=' .. id .. '/index.html'; end },
{ { 'Q17589204', 'FootballDatabase.eu ' }, 'P3537', function( id ) return 'http://www.footballdatabase.eu/football.joueurs.' .. id .. '.en.html'; end },
{ { 'Q42428763', 'FootballFacts.ru' }, 'P3660', function( id ) return 'http://footballfacts.ru/players/' .. id; end },
{ { 'Q27133853', 'MotoGP.com' }, 'P3928', function( id ) return 'http://www.motogp.com/en/riders/' .. id; end },
{ { 'Q18693731', 'National Football Teams.com' }, 'P2574', function( id ) return 'http://www.national-football-teams.com/player/' .. id .. '.html'; end },
{ { 'Q24286051', 'racing-reference' }, 'P3048', function( id ) return 'http://www.racing-reference.info/driver/' .. id; end },
{ { 'Q51482', 'Red Bull' }, 'P3883', function( id ) return 'http://www.redbull.com/en/athletes/' .. id; end },
{ { 'Q21705947', 'Soccerbase.com' }, 'P2193', function( id ) return 'http://www.soccerbase.com/players/player.sd?player_id=' .. id; end },
-- { { 'Q42309113', 'Scoresway' }, 'P3043', function( id ) return 'http://www.scoresway.com/?sport=soccer&page=person&id=' .. id; end },
{ { 'Q24192203', 'Soccerway' }, 'P2369', function( id ) return 'http://int.soccerway.com/players/-/' .. id .. '/' end },
{ { 'Q4049959', 'Sportbox.ru ' }, 'P4421', function( id ) return 'http://news.sportbox.ru/Vidy_sporta/' .. id; end },
{ { 'Q4049960', 'Sports.ru' }, 'P4408', function( id ) return 'https://www.sports.ru/tags/' .. id; end },
{ { 'Q18002875', 'Sports-Reference.com' }, 'P1447', function( id ) return 'http://www.sports-reference.com/olympics/athletes/' .. id .. '.html' end },
{ { 'Q2449070', 'Transfermarkt' }, 'P2446', function( id ) return 'https://www.transfermarkt.com/transfermarkt/profil/spieler/' .. id; end },
{ { 'Q20773699', 'worldfootball.net' }, 'P2020', function( id ) return 'http://www.worldfootball.net/player_summary/$1/' .. id .. '/' end },
{ { 'Q30276408', 'WorldSBK.com' }, 'P4076', function( id ) return 'http://www.worldsbk.com/en/rider/' .. id; end },
{ { 'Q42430278', 'РФПЛ' }, 'P4417', function( id ) return 'http://rfpl.org/players/' .. id; end },
{ { 'Q726183', 'Төркия футбол федерациясе' }, 'P2448', function( id ) return 'http://www.tff.org/Default.aspx?pageId=526&kisiID=' .. id; end },
{ { 'Q140486', 'Украина футбол федерациясе' }, 'P3662', function( id ) return 'http://www.ffu.org.ua/ukr/tournaments/prof/' .. id .. '/' end },
-- audio and video
{ { 'Q477809', 'AllMovie' }, 'P1562', function(id) return 'http://www.allmovie.com/movie/' .. id; end },
{ { 'Q477809', 'AllMovie' }, 'P2019', function(id) return 'http://www.allmovie.com/artist/' .. id; end },
{ { 'Q31181', 'AllMusic' }, 'P1728', function(id) return 'http://www.allmusic.com/artist/' .. id; end },
{ { 'Q31181', 'AllMusic' }, 'P1729', function(id) return 'http://www.allmusic.com/album/' .. id; end },
{ { 'Q31181', 'AllMusic' }, 'P1730', function(id) return 'http://www.allmusic.com/song/' .. id; end },
{ { 'Q31181', 'AllMusic' }, 'P1994', function(id) return 'http://www.allmusic.com/composition/' .. id; end },
{ labelAllocine, 'P1265', function(id) return 'http://www.allocine.fr/film/fichefilm_gen_cfilm=' .. id .. '.html'; end },
{ labelAllocine, 'P1266', function(id) return 'http://www.allocine.fr/personne/fichepersonne_gen_cpersonne=' .. id .. '.html'; end },
{ labelAllocine, 'P1267', function(id) return 'http://www.allocine.fr/series/ficheserie_gen_cserie=' .. id .. '.html'; end },
{ { 'P1688', 'AniDB' }, 'P1688', aniDBLink },
{ labelAnimeNewsNetwork, 'P1982', function(id) return 'http://www.animenewsnetwork.com/encyclopedia/people.php?id=' .. id; end },
{ labelAnimeNewsNetwork, 'P1983', function(id) return 'http://www.animenewsnetwork.com/encyclopedia/company.php?id=' .. id; end },
{ labelAnimeNewsNetwork, 'P1984', function(id) return 'http://www.animenewsnetwork.com/encyclopedia/manga.php?id=' .. id; end },
{ labelAnimeNewsNetwork, 'P1985', function(id) return 'http://www.animenewsnetwork.com/encyclopedia/anime.php?id=' .. id; end },
{ { 'Q223142', 'Box Office Mojo' }, 'P1237', boxofficemojoLink },
{ { 'Q3561957', 'ČSFD' }, 'P2529', function(id) return 'http://www.csfd.cz/film/' .. id; end },
{ { 'Q3561957', 'ČSFD' }, 'P2605', function(id) return 'http://www.csfd.cz/tvurce/' .. id; end },
{ labelDiscogs, 'P1953', function(id) return 'http://www.discogs.com/artist/' .. id; end },
{ labelDiscogs, 'P1954', function(id) return 'http://www.discogs.com/master/' .. id; end },
{ labelDiscogs, 'P1955', function(id) return 'http://www.discogs.com/label/' .. id; end },
{ labelDiscogs, 'P2206', function(id) return 'http://www.discogs.com/release/' .. id; end },
{ { 'Q2638147', 'FilmAffinity' }, 'P480', function(id) return 'http://www.filmaffinity.com/en/film' .. id .. '.html' end },
{ labelEncyclopaediaMetallum, 'P1952', function(id) return 'http://www.metal-archives.com/bands//' .. id; end },
{ labelEncyclopaediaMetallum, 'P1989', function(id) return 'http://www.metal-archives.com/artists//' .. id; end },
{ labelEncyclopaediaMetallum, 'P2721', function(id) return 'http://www.metal-archives.com/release.php?id=' .. id; end },
{ labelIBDb, 'P1217', ibdbVenueLink },
{ labelIBDb, 'P1218', ibdbProductionLink },
{ labelIBDb, 'P1219', ibdbShowLink },
{ labelIBDb, 'P1220', ibdbPersonLink },
{ { 'Q37312', 'Internet Movie Database' }, 'P345', imdbLink },
{ { 'Q523660', 'International Music Score Library Project' }, 'P839', imslpLink },
{ { 'Q150248', 'Metacritic' }, 'P1712', function( id ) return 'http://www.metacritic.com/' .. id; end },
{ labelMusicBrainz, 'P434', musicBrainzArtistLink },
{ labelMusicBrainz, 'P435', musicBrainzWorkLink },
{ labelMusicBrainz, 'P436', musicBrainzReleazeGroupLink },
{ { 'Q22673', 'Project Gutenberg' }, 'P1938', function(id) return 'http://www.gutenberg.org/ebooks/author/' .. id; end },
{ { 'Q105584', 'Rotten Tomatoes' }, 'P1258', rottentomatoesLink },
{ { 'Q4066284', 'Аниматор.ру' }, 'P1934', function(id) return 'http://www.animator.ru/db/?p=show_film&fid=' .. id; end },
{ { 'Q7713473', 'AFI' }, 'P3593', function(id) return 'https://catalog.afi.com/Catalog/moviedetails/' .. id; end },
-- literature
{ labelISFDb, 'P1233', isfdbAuthorLink },
{ labelISFDb, 'P1234', isfdbPublicationLink },
{ labelISFDb, 'P1235', isfdbSeriesLink },
{ labelISFDb, 'P1239', isfdbPublisherLink },
{ { 'Q17299517', 'RKDartists' }, 'P650', rkdArtistsLink },
{ { 'Q17299580', 'RKDimages' }, 'P350', rkdImagesLink },
{ { 'Q24694883', 'ECARTICO' }, 'P2915', function(id) return 'http://www.vondel.humanities.uva.nl/ecartico/persons/' .. id; end },
-- videogames
{ { 'Q51710607', 'Hall of Light' }, 'P4671', function( id ) return 'http://hol.abime.net/' ..id end },
{ { 'Q1741369', 'KLOV' }, 'P2858', function( id ) return 'http://www.arcade-museum.com/game_detail.php?game_id=' ..id end },
{ { 'Q48081791', 'Lemon 64' }, 'P4816', function( id ) return 'http://www.lemon64.com/?game_id=' ..id end },
{ { 'Q612975', 'MobyGames' }, 'P1933', function( id ) return 'https://www.mobygames.com/game/' ..id end },
{ { 'Q2698027', 'World of Spectrum' }, 'P4705', function( id ) return 'https://www.worldofspectrum.org/infoseekid.cgi?id=' ..id end },
-- common
{ { 'Q649227', 'Родовод' }, 'P1185', rodovidLink },
{ { 'Q20035614', 'Декларатор' }, 'P1883', declaratorLink },
{ { 'Q41226', 'Open Directory Project' }, 'P998', function ( id ) return 'http://curlie.org/' .. id; end },
{ { 'Q63056', 'Find a Grave' }, 'P535', findagraveLink },
}
local authorityControl = {
{ { 'Q213678', 'Bibliotheca Apostolica Vaticana', 'BAV' }, 'P1017', bavLink, },
{ { 'Q4584301', '', 'BIBSYS' }, 'P1015', bibsysLink, },
{ { 'Q1200925', 'Biblioteca de Catalunya', 'BNC' }, 'P1273', bncLink, },
{ { 'Q750403', 'Biblioteca Nacional de España', 'BNE' }, 'P950', bneLink, },
{ { 'Q193563', 'Bibliothèque nationale de France', 'BNF' }, 'P268', bnfLink, },
{ { 'Q1868372', 'Biografisch Portaal', 'BPN' }, 'P651', bpnLink, },
{ { 'Q9384291', '中国高等教育文献保障系统', 'CALIS' }, 'P270', calisLink, },
{ { 'Q17299677', 'China Biographical Database Project', 'CBDB' }, 'P497', cbdbLink, },
{ { 'Q10726338', 'Citation Information by NII', 'CiNii' }, 'P271', ciniiLink, },
{ { 'Q16744133', 'CONOR', 'CONOR' }, 'P1280', conorLink, },
{ { 'Q27302', 'Deutsche Nationalbibliothek', 'DNB' }, 'P1292', dnbLink, },
{ { 'Q501851', 'مكتبة الإسكندرية الجديدة', 'EGAXA' }, 'P1309', egaxaLink, },
{ { 'Q36578', 'Gemeinsame Normdatei', 'GND' }, 'P227', gndLink, },
{ { 'Q3803707', 'Istituto Centrale per il Catalogo Unico', 'ICCU' }, 'P396', iccuLink, },
{ { 'Q423048', 'International Standard Name Identifier', 'ISNI' }, 'P213', isniLink, },
{ { 'Q620946', 'Library of Congress Control Number', 'LCCN' }, 'P244', lccnLink, },
{ { 'Q1133733', 'Latvijas Nacionālā bibliotēka', 'LNB' }, 'P1368', lnbLink, },
{ { 'Q809830', 'Base Mérimée', 'Mérimée' }, 'P380', merimeeLink, },
{ { 'Q618340', '國家圖書館 (中華民國)', 'NCL' }, 'P1048', nclLink, },
{ { 'Q477675', '国立国会図書館', 'NDL' }, 'P349', ndlLink, },
{ { 'Q732353', '中国国家图书馆', 'NLC' }, 'P1213', nlcLink, },
-- NLI numbers seems unstable
{ { 'Q1967876', 'Národní knihovna České republiky', 'NKC' }, 'P691', nkcLink, },
{ { 'Q623578', 'National Library of Australia', 'NLA' }, 'P409', nlaLink, },
{ { 'Q1467610', 'Αναγνωριστικό Καθιερωμένων από τον Κατάλογο Καθιερωμένων Όρων της Εθνικής Βιβλιοθήκης της Ελλάδος', 'NLG' }, 'P3348', function(id) return 'http://nlg.okfn.gr/resource/authority/record' .. id; end, },
{ { 'Q622012', 'Biblioteca Națională a României', 'NLR' }, 'P1003', nlrLink, },
{ { 'Q631375', 'Nacionalna i sveučilišna knjižnica u Zagrebu', 'NSK' }, 'P1375', nskLink, },
{ { 'Q1526131', 'Koninklijke Bibliotheek', 'NTA' }, 'P1006', ntaLink, },
{ { 'Q1063819', 'Országos Széchényi Könyvtár', 'NSZL' }, 'P951', nszlLink, },
{ { 'Q11789729', 'Narodowy Uniwersalny Katalog Centralny', 'NUKAT' }, 'P1207', nukatLink, },
{ { 'Q245966', 'Biblioteca Nacional de Portugal', 'PTBNP' }, 'P1005', ptbnpLink, },
{ { 'Q1048694', 'Рәсәйнең дәүләт китапханәсе', 'РДК' }, 'P947', rslLink, },
{ { 'Q953058', 'Kungliga biblioteket', 'LIBRIS' }, 'P906', selibrLink, },
{ { 'Q2597810', 'Système universitaire de documentation', 'SUDOC' }, 'P269', sudocLink, },
{ { 'Q54919', 'Virtual International Authority File', 'VIAF' }, 'P214', viafLink, },
{ { 'Q2494649', 'Union List of Artist Names', 'ULAN' }, 'P245', ulanLink, },
}
function getQualifierSingleValue( statement, qualifierName )
if (statement ~= nil
and statement.qualifiers ~= nil
and statement.qualifiers[qualifierName] ~= nil) then
for qualifierIndex, qualifier in pairs( statement.qualifiers[qualifierName] ) do
if (qualifier.datavalue ~= nil
and qualifier.datavalue.type ~= nil
and qualifier.datavalue.value ~= nil) then
if ( qualifier.datavalue.type == "monolingualtext" ) then
return qualifier.datavalue.value.text;
end
if ( qualifier.datavalue.type == "string" ) then
return qualifier.datavalue.value;
end
if ( qualifier.datavalue.type == "wikibase-entityid" ) then
return qualifier.datavalue.value.id;
end
mw.log( 'Unknown qualifier type: ' .. qualifier.datavalue.type )
return qualifier.datavalue.value;
end
end
end
return nil;
end
function getQualifierValues( statement, qualifierName )
local result = {}
if (statement ~= nil
and statement.qualifiers ~= nil
and statement.qualifiers[qualifierName] ~= nil) then
local qualifiers = statement.qualifiers[qualifierName];
for _, qualifier in pairs( qualifiers ) do
if (qualifier.datavalue ~= nil
and qualifier.datavalue.type ~= nil
and qualifier.datavalue.value ~= nil) then
if ( qualifier.datavalue.type == "string" ) then
result[ #result + 1 ] = qualifier.datavalue.value;
elseif ( qualifier.datavalue.type == "wikibase-entityid" ) then
result[ #result + 1 ] = qualifier.datavalue.value.id;
else
mw.log( 'Unknown qualifier type: ' .. qualifier.datavalue.type );
result[ #result + 1 ] = qualifier.datavalue.value;
end
end
end
end
return result;
end
function collectLinks( configuration, elementId )
local moduleLanguages
if ( mw.title.makeTitle( 'Module', 'Languages' ).exists
and mw.title.makeTitle( 'Module', 'Languages/data' ).exists
and mw.title.makeTitle( 'Module', 'Wikidata/Language-codes' ).exists) then
moduleLanguages = require('Module:Languages');
else
moduleLanguages = false;
end
--Create rows
local elements = {}
local data = {}
local item = mw.wikibase.getEntity( elementId )
if item == nil or item.claims == nil then
return elements
end
if ( item.claims['P553'] ~= nil ) then
local claim = item.claims['P553']
for _, statement in pairs( claim ) do
if (statement ~= nil) then
-- profile ID
local rank = statement.rank or 'normal';
if ( rank ~= 'deprecated' ) then
local itemId = getQualifierSingleValue( statement, 'P554' );
if (itemId ~= nil) then
-- language
local languages = getQualifierValues( statement, 'P407' );
local resourceId = statement.mainsnak.datavalue.value.id;
if (data[resourceId] == nil) then
data[resourceId] = {};
end
table.insert( data[resourceId], { itemId = itemId, languages = languages, rank = rank} );
end
end
end
end
end
for _, params in pairs( configuration ) do
local resourceId = params[2]
local claim = item.claims[ resourceId ]
if ( claim ) then
for _, statement in pairs( claim ) do
local rank = statement.rank or 'normal';
if ( rank ~= 'deprecated' and statement.mainsnak.datavalue) then
local itemId = statement.mainsnak.datavalue.value;
local languages = getQualifierValues( statement, 'P407' );
if (data[resourceId] == nil) then
data[resourceId] = {};
end
table.insert( data[resourceId], { itemId = itemId, languages = languages, rank = rank} );
end
end
end
end
for resourceId, resourceDatas in pairs( data ) do
data[resourceId] = filterByRank( resourceDatas );
end
local hasNonOptionalLinks = false
for _, params in pairs( configuration ) do
local resourceLabel = renderLabel( params[1] );
local firstChar = mw.ustring.sub( resourceLabel, 1, 1 );
local separateDesign = firstChar == '[' or firstChar == '<';
local resourceId = params[2]
local optional = params[5] or false;
local resourceDatas = data[resourceId];
if resourceDatas ~= nil then
if ( not optional ) then
hasNonOptionalLinks = true
end
local html = '';
if ( separateDesign ) then
html = html .. resourceLabel .. ': ';
end
for index, resourceData in pairs(resourceDatas) do
local itemId = resourceData.itemId;
local languages = resourceData.languages;
local link = params[3] ( itemId );
local linkFirstChar;
local interwiki;
if ( link ) then
linkFirstChar = mw.ustring.sub( link, 1, 1 );
interwiki = linkFirstChar == ':'
end
if ( separateDesign ) then
if ( index ~= 1 ) then
html = html .. ', '
end
if ( link ) then
if ( interwiki ) then
html = html .. '[[' .. link .. '|' .. itemId .. ']]';
else
html = html .. '[' .. link .. ' ' .. itemId .. ']';
end
else
html = html .. itemId;
end
else
if ( index ~= 1 ) then
html = html .. ' · '
end
if ( link ) then
if ( interwiki ) then
html = html .. '[[' .. link .. '|' .. resourceLabel .. ']]';
else
html = html .. '[' .. link .. ' ' .. resourceLabel .. ']';
end
else
-- it should not happen
html = html .. resourceLabel .. ': ' .. itemId;
end
if ( moduleLanguages ) then
if ( languages ~= nil and #languages > 0 ) then
for langIndex, language in pairs(languages) do
html = html .. ' ' .. moduleLanguages.getRefHtml( language )
end
end
end
end
end
if ( #params >= 4 and params[4] ) then
html = html .. '[[Category:' .. params[4] .. ']]'
end
table.insert( elements, html )
end
end
if ( not hasNonOptionalLinks ) then
return {}
end
return elements
end
function collectDictionaryLinks( elementId )
--Create rows
local elements = {}
local item = mw.wikibase.getEntity( elementId );
if ( item == nil or item.claims == nil) then
return elements
end
local sourceToElementLinks = {};
local claim = item.claims['P1343']
if ( claim ) then
for _, statement in pairs( claim ) do
if (statement ~= nil) then
local rank = statement.rank or 'normal';
if ( rank ~= 'deprecated' ) then
local resourceId = statement.mainsnak.datavalue.value.id;
local languages = getQualifierValues( statement, 'P407' );
-- Wikisource link ?
local entityId = getQualifierSingleValue( statement, 'P805' ) or getQualifierSingleValue( statement, 'P248' );
if ( entityId ) then
if (sourceToElementLinks[resourceId] == nil) then
sourceToElementLinks[resourceId] = {};
end
table.insert( sourceToElementLinks[resourceId], { entityId = entityId, languages = languages, rank = rank } );
end
-- URL to encyclopedia
local url = getQualifierSingleValue( statement, 'P854' );
if ( url ~= nil ) then
if (sourceToElementLinks[resourceId] == nil) then
sourceToElementLinks[resourceId] = {};
end
table.insert( sourceToElementLinks[resourceId], { url = url, languages = languages, rank = rank } );
end
end
end
end
end
for _, description in pairs( dictionaries ) do
if ( description.linkF ) then
local claim = item.claims[ description.id ];
if ( claim ) then
for _, statement in pairs( claim ) do
local rank = statement.rank or 'normal';
if ( rank ~= 'deprecated' and statement.mainsnak.datavalue) then
local value = statement.mainsnak.datavalue.value;
local url = description.linkF( value );
local languages = getQualifierValues( statement, 'P407' );
if ( sourceToElementLinks[description.id] == nil) then
sourceToElementLinks[description.id] = {};
end
table.insert( sourceToElementLinks[description.id], { url = url, languages = languages, rank = rank} );
end
end
end
end
end
local html = '';
for _, description in pairs( dictionaries ) do
local links = sourceToElementLinks[ description.id ];
if ( links ) then
for _, link in pairs( links ) do
if ( link.url ) then
table.insert( elements, '[' .. link.url .. ' ' .. description.title .. ']' );
end
if ( link.entityId ) then
local entity = mw.wikibase.getEntity( link.entityId );
if ( entity and entity.sitelinks and entity.sitelinks[ description.project ] ) then
table.insert( elements, '[[' .. description.projectCode .. entity.sitelinks[ description.project ].title .. '|' .. description.title .. ']]' );
end
end
end
end
end
return elements
end
function contains( tableStructure, value )
if ( tableStructure == nil or value == nil) then
return true;
end
for index, line in pairs( tableStructure ) do
if ( line == value ) then
return true;
end
end
return false;
end
function filterByRank( resourceDatas )
-- itemId, languages. rank = rank
local hasPreffered = false;
for index, resourceData in pairs(resourceDatas) do
if ( resourceData.rank == 'preferred' ) then
hasPreffered = true;
end
end
if (not hasPreffered) then
return resourceDatas;
end
local result = {};
for index, resourceData in pairs(resourceDatas) do
if ( resourceData.rank == 'preferred' or contains(resourceData.languages, preferredLanguage) ) then
table.insert(result, resourceData);
end
end
return result;
end
function p.render( frame )
local colorArg = '';
local elementId = nil;
if ( frame ~= nil ) then
local parentArgs = frame:getParent().args
colorArg = parentArgs[templateColorName] or parentArgs['color'] or parentArgs[1] or '';
if parentArgs['d'] and parentArgs['d'] ~= '' then
elementId = string.upper( parentArgs['d'] );
end
if ( colorArg ~= '' ) then
local firstChar = mw.ustring.sub( colorArg, 1, 1 );
if ( firstChar ~= '#' ) then
local byTemplate = colorByTitle( frame, colorArg );
if ( byTemplate ) then
colorArg = byTemplate;
end
end
end
end
local navboxData = {
name = 'External links',
navboxclass = 'navbox ruwikiArticleExternalLinksTable',
bodyclass = 'hlist',
};
if colorArg and colorArg ~= '' then
navboxData.groupstyle = 'background: ' .. colorArg .. ';';
end
local rowIndex = 1;
local socialNetworksElements = collectLinks( socialNetworkProperties, elementId );
if ( #socialNetworksElements > 0 ) then
navboxData['group' .. rowIndex] = group1Label;
navboxData['list' .. rowIndex] = table.concat( socialNetworksElements , ' · ' );
rowIndex = rowIndex + 1;
end
local textsElements = collectLinks( textsProperties, elementId );
if ( #textsElements > 0 ) then
navboxData['group' .. rowIndex] = group2Label;
navboxData['list' .. rowIndex] = table.concat( textsElements , ' · ' );
rowIndex = rowIndex + 1;
end
local contentHostingElements = collectLinks( contentHostingProperties, elementId );
if ( #contentHostingElements > 0 ) then
navboxData['group' .. rowIndex] = group3Label;
navboxData['list' .. rowIndex] = table.concat( contentHostingElements , ' · ' );
rowIndex = rowIndex + 1;
end
local themeProfilesElements = collectLinks( themeProfilesProperties, elementId );
if ( #themeProfilesElements > 0 ) then
navboxData['group' .. rowIndex] = group4Label;
navboxData['list' .. rowIndex] = table.concat( themeProfilesElements , ' · ' );
rowIndex = rowIndex + 1;
end
local dictionaryElements = collectDictionaryLinks();
if ( #dictionaryElements > 0 ) then
navboxData['group' .. rowIndex] = group5Label;
navboxData['list' .. rowIndex] = table.concat( dictionaryElements , ' · ' );
rowIndex = rowIndex + 1;
end
local authorityControlElements = collectLinks( authorityControl, elementId );
if ( #authorityControlElements > 0 ) then
navboxData['group' .. rowIndex] = group6Label;
navboxData['list' .. rowIndex] = table.concat( authorityControlElements , ' · ' );
rowIndex = rowIndex + 1;
end
if ( rowIndex == 1 ) then
if ( mw.title.getCurrentTitle().namespace == 0 ) then
return '[[Category:' .. categoryTemplateEmpty .. ']]';
end
else
navboxData['group1'] = '<div style="padding: 0px 18px 0px 0px; width: 100%;"><div style="float: left;">' ..
frame:expandTemplate{ title = 'tnavbar-view', args = { templateLink } } ..
'</div> ' .. navboxData['group1'] .. '</div>';
end
local navbox = moduleNavbox._navbox( navboxData )
return navbox
end
function p.renderDocumentation()
local result = ''
result = result .. '|-\n';
result = result .. '! colspan=4 | ' .. group1Label .. '\n';
result = result .. '|-\n';
result = result .. renderDocumentationCategory( socialNetworkProperties );
result = result .. '|-\n';
result = result .. '! colspan=4 | ' .. group2Label .. '\n';
result = result .. '|-\n';
result = result .. renderDocumentationCategory( textsProperties );
result = result .. '|-\n';
result = result .. '! colspan=4 | ' .. group3Label .. '\n';
result = result .. '|-\n';
result = result .. renderDocumentationCategory( contentHostingProperties );
result = result .. '|-\n';
result = result .. '! colspan=4 | ' .. group4Label .. '\n';
result = result .. '|-\n';
result = result .. renderDocumentationCategory( themeProfilesProperties );
result = result .. '|-\n';
result = result .. '! colspan=4 | ' .. group5Label .. '\n';
result = result .. '|-\n';
--result = result .. renderDocumentationCategory( dictionaryProperties );
result = result .. '|-\n';
result = result .. '! colspan=4 | ' .. group6Label .. '\n';
result = result .. '|-\n';
result = result .. renderDocumentationCategory( authorityControl );
return result;
end
function renderDocumentationCategory( links )
local result = '';
for _, params in pairs( links ) do
local resourceLabel = renderLabel( params[ 1 ] );
local resourceId = params[ 2 ];
local category = params[ 4 ];
local optional;
if ( params[ 5 ] or false ) then
optional = 'TRUE';
else
optional = 'FALSE';
end
result = result .. '| ' .. resourceLabel .. '\n';
if string.match( resourceId, '^P' ) then
result = result .. '| [[:d:Property:' .. resourceId .. '|' .. resourceId .. ']]\n';
elseif string.match( resourceId, '^Q' ) then
result = result .. '| [[:d:' .. resourceId .. '' .. '|' .. resourceId .. ']]\n';
else
result = result .. '| \n';
end
if ( category ~= nil and category ~= false ) then
result = result .. '| [[:Category:' .. category .. '|' .. category .. ']]\n';
else
result = result .. '| \n';
end
result = result .. '| ' .. optional .. '\n';
result = result .. '|-\n';
end
return result;
end
return p