Modul:Ill-wd
Ca și {{Ill}}, acest format completează o legătură roșie cu un marcaj suplimentar ce trimite utilizatorul într-un loc unde poate primi informații temporar până la completarea legăturii roșii la Wikipedia în română. Dacă {{Ill}} trimite neapărat către alt Wiki, acest modul trimite la un item de Wikidata corespunzător, de unde cititorul poate extrage unele informații elementare sau unde poate găsi articole de Wiki în alte ediții ale Wikipediei sau pe alte proiecte ale Fundației Wikimedia. Are trei funcții pentru apeluri în diverse moduri, toate însă oferă aceeași funcționalitate.
Primește trei parametri:
- id-ul itemului de Wikidata către care se face linkul (obligatoriu); dacă lipsește, se folosește itemul curent, dar conceptul își pierde sensul deoarece nu servește la nimic un link către aceeași pagină;
- numele articolului la Wikipedia în română (opțional); se folosește pentru a trimite cititorul la alt titlu decât cel afișat; implicit, se folosește labelul itemului de la Wikidata corespunzător limbii române;
- eticheta linkului, dacă ea diferă de labelul în română al itemului de la Wikidata.
Se apelează într-unul din trei moduri:
- prin invocare directă a funcției fromFrame, fie prin {{#invoke:Ill-wd|fromFrame|...}}, fie prin intermediul formatului {{Ill-wd}}, căruia i se dau cei trei parametri;
- prin apel din alt modul cu argumentele puse într-un table în ordine;
- prin apel din alt modul cu argumentele pasate direct, în ordine.
local getArgs = require('Modul:Arguments').getArgs
local wikidata = require('Modul:Wikidata')
local StringUtils = require('Modul:StringUtils')
local plainText = require('Modul:Plain text')._main
local p = {}
p.fromArgs = function(wdId, wdLabel, wdArticleName, capitalize)
local out = ''
if mw.wikibase.sitelink(wdId) then
if wdLabel then
out = wikidata.findLinkToItemWithLabel(wdId, wdLabel)
else
local label = mw.wikibase.label(StringUtils._prependIfMissing({tostring(wdId), 'Q'}))
if label and capitalize then label = StringUtils._capitalize({ label }) end
out = label and wikidata.findLinkToItemWithLabel(wdId, label) or wikidata.findLinkToItem(wdId, capitalize, false, false)
end
else
wdLabel = wdLabel or mw.wikibase.label(wdId) or wdArticleName or wikidata.findLabel(wdId)
if wdLabel and capitalize then wdLabel = StringUtils._capitalize({ wdLabel }) end
if not wdArticleName then
local wdLangLabel, wdLangName = mw.wikibase.getLabelWithLang(wdId)
if wdLangName == 'ro' then wdArticleName = wdLangLabel end
end
wdArticleName = plainText(wdArticleName or wdLabel)
if not wdArticleName then
return wikidata.findLinkToItem(wdId, capitalize, false, false)
end
out = out .. '[[:' .. wdArticleName
if wdArticleName ~= wdLabel then
out = out .. '|' .. (wdLabel or wdArticleName)
end
out = out .. ']]'
local wikidataLinkSpan = mw.html.create('span'):attr('title', wdArticleName .. ' la Wikidata'):wikitext('d')
local supTag = mw.html.create('sup'):tag('small'):wikitext(mw.ustring.char(0x2060), '([[:d:', wdId, '|', tostring(wikidataLinkSpan), ']])'):allDone()
out = out .. tostring(supTag)
end
return out
end
p.fromArray = function(array)
local wdId = StringUtils.prependIfMissing({array[1] or wikidata.getEntityId(), 'Q'})
local inLabel = array[3]
local labelLang = 'ro'
if not inLabel then
wdLabel, labelLang = mw.wikibase.getLabelWithLang(wdId)
end
local wdArticleName = array[2] or wdLabel
if not wdLabel or labelLang ~= 'ro' then
wdLabel = wdArticleName or wdLabel or wikidata.findLabel(wdId, 'ro')
end
local capitalize = array['capitalize']
return p.fromArgs(wdId, inLabel or wdLabel, wdArticleName, capitalize ~= nil)
end
p.fromFrame = function(frame)
local args = getArgs(frame)
return p.fromArray(args)
end
return p