Přeskočit na obsah

Modul:Taxonbar

Tato stránka je zamčena
Z Wikipedie, otevřené encyklopedie


Tento modul obsahuje kód pro šablonu{{Taxonbar}}.Pro použití šablony Taxonbar vizte instrukce na stránceŠablona:Taxonbar/doc.

Dependence

Tento modul potřebuje pro svou správnou funkci následující moduly:

Konfigurace

Parametry a databáze jsou nastaveny skrzModul:Taxonbar/conf.

Příklady

Příklady můžete zadávat a modul testovat pomocí{{Taxonbar | from=QID}}.


Střevíčník pantoflíček(Cypripedium calceolus)


Kapraď samec(Dryopteris filix-mas)


Broskvoň obecná(Prunus persica)


Puma (rod)


Pes domácí(Canis lupus familiaris)


Orel bělohlavý(Haliaeetus leucocephalus)


Měsíčník svítivý(Mola mola)


Včela medonosná(Apis mellifera)


Roháč obecný(Lucanus cervus)


Muchomůrka červená(Amanita muscaria)


Tyrannosaurus rex


Viz též

  • Modul:Taxonbar/conf– konfigurační modul, ve kterém se se přidávají, odebírají či upravují odkazy na zdrojové databáze
  • gl:Módulo:Taxonbar– zdrojová verze tohoto modulu
  • en:Module:Taxonbar– jazyková verze modulu, která byla použita pro import na českou Wikipedii
require('Module:No globals')

localconf=require('Module:Taxonbar/conf')--configuration module
localTaxonItalics=require('Module:TaxonItalics')--use a function from Module:TaxonItalics to italicize a taxon name

--[[==========================================================================]]
--[[ Local functions ]]
--[[==========================================================================]]

localfunctionisNilOrEmpty(thing)
ifthing==nilorthing==''then
returntrue
end
returnnil
end

localfunctiongetIdFromWikidata(item,property)
localid=nil
ifproperty=='PWikispecies:$1'then
localsiteLinks=item.sitelinks
ifsiteLinksthen
localspeciesWiki=item.sitelinks.specieswiki
ifspeciesWikithen
id=speciesWiki.title
end
end
returnid
elseifitem.claims[property]==nilthen
returnid
end
for_,statementinpairs(item.claims[property])do
ifstatement.mainsnak.datavaluethen
id=statement.mainsnak.datavalue.value
break
end
end
returnid
end

localfunctiongetLink(property,val)
locallink,returnVal='',{}

returnVal.isError=false

ifmw.ustring.find(val,'//')then
link=val
else
iftype(property)=='number'andproperty>0then
localentityObject=mw.wikibase.getEntity('P'..property)
localdataType

ifentityObjectthendataType=entityObject.datatype
elsereturnVal.isError=trueend

ifdataType=='external-id'then
localformatterURL=nil
ifproperty==3746or--Wildflowers of Israel
property==3795or--Flora of Israel Online
property==5397--Tierstimmenarchiv
then
formatterURL=entityObject:getBestStatements('P1630')[2]--use 2nd formatterURL for English version
end
ifformatterURL==nilthenformatterURL=entityObject:getBestStatements('P1630')[1]end--default to [1]
ifformatterURLthen
ifformatterURL.mainsnak.datavalueandformatterURL.mainsnak.datavalue.valuethen--nil check for ABA
link=formatterURL.mainsnak.datavalue.value
end
end
elseifdataType=='url'then
localsubjectItem=entityObject:getBestStatements('P1629')[1]
ifsubjectItemthen
localofficialWebsite=mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
ifofficialWebsitethenlink=officialWebsite.mainsnak.datavalue.valueend
end
elseifdataType=='string'then
localformatterURL=entityObject:getBestStatements('P1630')[1]
ifformatterURLthen
link=formatterURL.mainsnak.datavalue.value
else
localsubjectItem=entityObject:getBestStatements('P1629')[1]
ifsubjectItemthen
localofficialWebsite=mw.wikibase.getEntity(subjectItem.mainsnak.datavalue.value.id):getBestStatements('P856')[1]
ifofficialWebsitethenlink=officialWebsite.mainsnak.datavalue.valueend
end
end
else
returnVal.isError=true
end
elseiftype(property)=='string'then
link=property
end

localvalurl=val
ifmw.ustring.find(link,'antweb.org')thenvalurl=mw.ustring.gsub(valurl,' ','%%20')end
iftype(property)=='number'then
--doublecheck language for Wildflowers of Israel ID
ifproperty==3746thenlink=mw.ustring.gsub(link,'/hebrew/','/english/')end
--format spaces in PfaF binomials, e.g. "Elaeagnus x ebbingei"
ifproperty==4301thenvalurl=mw.ustring.gsub(valurl,' ','+')end
--format spaces in FoAO2 binomials, e.g. "Scaevola basedowii"
ifproperty==6756thenvalurl=mw.ustring.gsub(valurl,' ','+')end
end
valurl=mw.ustring.gsub(valurl,'%%','%%%%')
link=mw.ustring.gsub(link,'$1',valurl)
end

link=mw.ustring.gsub(link,'^[Hh][Tt][Tt][Pp]([Ss]?)://','http%1://')-- fix wikidata URL
val=mw.ustring.match(val,'([^=/]*)/?$')-- get display name from end of URL
ifmw.ustring.find(link,'//')then
returnVal.text='['..link..' '..mw.text.encode(mw.uri.decode(val,'PATH'),'%[%]')..']'
elseiflink==''then
returnVal.text=val
else
returnVal.text='<span class= "external" >[['..link..'|'..val..']]</span>'
end
returnreturnVal
end

localfunctioncreateRow(id,label,rawValue,link,withUid)
iflinkthen
localoutStr='*<span style= "white-space:nowrap;" >'..label..' <span'
ifwithUidthenoutStr=outStr..' class= "uid" 'end
returnoutStr..'>'..link..'</span></span>\n'
else
return'* '..mw.text.tag('span',{class='error'},'The identifier '..id..' '..rawValue..' is not valid.')..'\n'
end
end

localfunctioncopyTable(inTable)
iftype(inTable)~='table'thenreturninTableend
localoutTable=setmetatable({},getmetatable(inTable))
forkey,valueinpairs(inTable)dooutTable[copyTable(key)]=copyTable(value)end
returnoutTable
end

localp={}

--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]

functionp.authorityControlTaxon(frame)
localresolveEntity=require('Module:ResolveEntityId')
localparentArgs=copyTable(frame:getParent().args)
localcurrentTitle=mw.title.getCurrentTitle()
localcurrentEntityId=mw.wikibase.getEntityIdForCurrentPage()

localstringArgs=false
localfromTitleCount,firstRow,rowCount=1,0,0
localoutString,errors='',''
localtFroms={}--non-sequential table of unique froms
localiFroms=0--integer size of tFroms, b/c Lua
localcategories={
'[[Kategorie:Údržba:Taxonbary bez parametru from]]',
'[[Kategorie:Údržba:Taxonbary neodpovídající Wikidatům]]',
'',-- [3] placeholder – [[Kategorie:Monitoring:Taxonbary využívající data z více manuálně zadaných Wikidata položek]]
'',-- [4] placeholder – [[Kategorie:Údržba:Taxonbary s neplatným parametrem from]]
'',-- [5] placeholder – [[Kategorie:Údržba:Taxonbary s manuálně zadanými identifikátory]]
'',-- [6] placeholder – [[Kategorie:Údržba:Taxonbary na stránkách bez odpovídající položky Wikidat]]
'',-- [7] placeholder – [[Kategorie:Údržba:Taxonbary bez identifikátorů v primární položce na Wikidatech]]
'',-- [8] placeholder – [[Kategorie:Údržba:Taxonbary bez identifikátorů v sekundární položce na Wikidatech]]
'',-- [9] placeholder – [[Kategorie:Údržba:Taxonbary s duplicitním parametrem from]]
'',--[10] placeholder – [[Kategorie:Údržba:Taxonbary s manuálním zadáním ID lišícím se od Wikidat]]
'',--[11] placeholder – [[Kategorie:Údržba:Taxonbary s manuálním zadáním ID odpovídajícím Wikidatům]]
'',--[12] placeholder – [[Kategorie:Údržba:Taxonbary na stránkách pravděpodobně nepojednávajících o taxonech]]
'',--[13] placeholder – [[Kategorie:Monitoring:Taxonbary s automaticky přidaným basionymem]]
'',--[14] placeholder – [[Kategorie:Monitoring:Taxonbary s automaticky přidanou originální kombinací]]
'',--[15] placeholder – [[Kategorie:Monitoring:Taxonbary s automaticky přidaným monotypickým rodem]]
'',--[16] placeholder – [[Kategorie:Monitoring:Taxonbary monotypických druhů s neuvedeným rodem]]
'',--[17] placeholder – [[Kategorie:Údržba:Taxonbary s neznámými parametry]]
'',--[18] placeholder – [[Kategorie:Monitoring:Taxonbary s 20–24 identifikátory]]
'',--[19] placeholder – [[Kategorie:Monitoring:Taxonbary s 25–29 identifikátory]]
'',--[20] placeholder – [[Kategorie:Monitoring:Taxonbary s 30–34 identifikátory]]
'',--[21] placeholder – [[Kategorie:Monitoring:Taxonbary s 35–39 identifikátory]]
'',--[22] placeholder – [[Kategorie:Monitoring:Taxonbary s 40+ identifikátory]]
'',--[23] placeholder – [[Kategorie:Údržba:Taxonbary s parametrem from2 odpovídajícím názvu článku & QID]]
'',--[24] placeholder – [[Kategorie:Údržba:Taxonbary s parametrem from2 odpovídajícím názvu článku]]
}
localacceptableInstanceOf_Strict={
['Q16521']='taxon',--strict
['Q310890']='monotypický taxon',--strict
['Q2568288']='ichnotaxon',--strict
['Q23038290']='fosilní taxon',--strict
['Q47487597']='monotypický fosilní taxon',--strict
['Q98961713']='vyhynulý taxon',--strict
}
localacceptableInstanceOf_All={
['Q16521']='taxon',--strict
['Q310890']='monotypický taxon',--strict
['Q2568288']='ichnotaxon',--strict
['Q23038290']='fosilní taxon',--strict
['Q47487597']='monotypický fosilní taxon',--strict
['Q98961713']='vyhynulý taxon',--strict
['Q42621']='hybrid',--lax
['Q235536']='incertae sedis',--lax
['Q713623']='klad',--lax
['Q848328']='sérotyp',--lax
['Q857968']='candidatus',--lax
['Q17487588']='unavailable combination',--lax
}

--Assess the page's relationship with Wikidata
localcurrentItem=nil
ifcurrentTitle.namespace==10then--i.e. Module:Taxonbar/sandbox, Template:Taxonbar/doc, etc.
ifresolveEntity._id(parentArgs['from'])then
currentItem=mw.wikibase.getEntity(parentArgs['from'])
end
ifcurrentItem==nilthen
ifresolveEntity._id(parentArgs['from1'])then
currentItem=mw.wikibase.getEntity(parentArgs['from1'])
end
end
elseifresolveEntity._id(currentEntityId)then
currentItem=mw.wikibase.getEntity(currentEntityId)
else--currentEntityId == nil/unresolvable
categories[6]='[[Kategorie:Údržba:Taxonbary na stránkách bez odpovídající položky Wikidat]]'
end
ifcurrentItemthen
categories[12]='[[Kategorie:Údržba:Taxonbary na stránkách pravděpodobně nepojednávajících o taxonech]]'--unset if acceptable found
for_,instanceOfStateinpairs(currentItem:getBestStatements('P31'))do--instance of
localinstanceOf=instanceOfState.mainsnak.datavalue.value.id
ifacceptableInstanceOf_All[instanceOf]then
categories[12]=''
break
end
end
end

--Cleanup args
fork,vinpairs(frame:getParent().args)do
iftype(k)=='string'then
--make args case insensitive
locallowerk=mw.ustring.lower(k)
ifisNilOrEmpty(parentArgs[lowerk])then
parentArgs[k]=nil
parentArgs[lowerk]=v
end
--remap abc to abc1
ifmw.ustring.find(lowerk,'%d$')==nilthen--if no number at end of param
ifisNilOrEmpty(parentArgs[lowerk..'1'])then
parentArgs[lowerk]=nil
lowerk=lowerk..'1'
parentArgs[lowerk]=v
end
end
ifvandv~=''then
--remap 'for' to 'title'
ifmw.ustring.sub(lowerk,1,3)=='for'then
localforTitle=mw.ustring.gsub(lowerk,'^for','title',1)
ifisNilOrEmpty(parentArgs[forTitle])then
parentArgs[lowerk]=nil
lowerk=forTitle
parentArgs[lowerk]=v
end
end
--find highest from or title param
ifmw.ustring.sub(lowerk,1,4)=='from'then
localfromNumber=tonumber(mw.ustring.sub(lowerk,5,-1))
iffromNumberandfromNumber>=fromTitleCountthenfromTitleCount=fromNumberend
--look for duplicate froms while we're here
ifmw.ustring.find(v,'^Q%d')then
iftFroms[v]then
categories[9]='[[Kategorie:Údržba:Taxonbary s duplicitním parametrem from]]'
tFroms[v]=tFroms[v]+1
else
tFroms[v]=1
iFroms=iFroms+1
end
ifiFroms==2then
categories[3]='[[Kategorie:Monitoring:Taxonbary využívající data z více manuálně zadaných Wikidata položek]]'
end
end
elseifmw.ustring.sub(lowerk,1,5)=='title'then
localtitleNumber=tonumber(mw.ustring.sub(lowerk,4,-1))
iftitleNumberandtitleNumber>=fromTitleCountthenfromTitleCount=titleNumberend
elseifmw.ustring.lower(v)~='no'then
stringArgs=true
categories[5]='[[Kategorie:Údržba:Taxonbary s manuálně zadanými identifikátory]]'
end
end
end
end

--Check for unknown parameters
--create knowns list
localacceptableArgs={from=true,}--master list of l/c acceptable args
for_,dinpairs(conf.databases)do
ifd[1]~='Wikidata'then--made obsolete by from
acceptableArgs[mw.ustring.lower(d[1])]=true
end
end
for_,ainpairs(conf.aliases)do
acceptableArgs[mw.ustring.lower(a[1])]=true
end
--create trimmed parents list
localbaseParentArgs={}--condensed list of l/c parent args w/o trailing #s
fork,vinpairs(parentArgs)do
iftype(k)=='string'then--ignore unnamed params, which have keys of type 'number'
locallowerk=mw.ustring.lower(k)
localbase=mw.ustring.gsub(lowerk,'[%d]*$','')
baseParentArgs[base]=true
end
end
--compare lists and spit out unknowns
localunknownParams={}
fork,vinpairs(baseParentArgs)do
ifacceptableArgs[k]==nilthen
categories[17]='[[Kategorie:Údržba:Taxonbary s neznámými parametry|'..k..']]'
unknownParams[#unknownParams+1]=k
end
end
--warn if unknown(s) present
if#unknownParams>0then
localplural='neznámé parametry'
localitthem='je'
if#unknownParams==1then
plural='neznámý parametr'
itthem='jej'
end
ifframe:preprocess('{{REVISIONID}}')==''then
errors=errors..'<div class= "hatnote" style= "color:red" >'..
'<strong> Varování:</strong> '..plural..' <strong>'..table.concat(unknownParams,', ')..'</strong>.<br />'..
'Prosíme opravte '..itthem..' nebo zvažte přidání na Wikidata.<br />'..
'Tato zpráva se objeví pouze v náhledu.</div>'
end
end

--Append basionym to arg list, if not already provided
ifcurrentItemthen
localcurrentBasState=currentItem:getBestStatements('P566')[1]--basionym
ifcurrentBasStatethen
localbasionymId=currentBasState.mainsnak.datavalue.value.id
ifbasionymIdandresolveEntity._id(basionymId)andtFroms[basionymId]==nilthen
--check that basionym is a strict instance of taxon
localbasionymItem=mw.wikibase.getEntity(basionymId)
ifbasionymItemthen
for_,instanceOfStateinpairs(basionymItem:getBestStatements('P31'))do--instance of
localinstanceOf=instanceOfState.mainsnak.datavalue.value.id
ifacceptableInstanceOf_Strict[instanceOf]then
--housekeeping
tFroms[basionymId]=1
iFroms=iFroms+1
fromTitleCount=fromTitleCount+1
--append basionym & track
parentArgs['from'..fromTitleCount]=basionymId
categories[13]='[[Kategorie:Monitoring:Taxonbary s automaticky přidaným basionymem]]'
break
endendendendendend

--Append original combination to arg list, if not already provided
ifcurrentItemthen
localcurrentOCState=currentItem:getBestStatements('P1403')[1]--original combination
ifcurrentOCStatethen
localorcoId=currentOCState.mainsnak.datavalue.value.id
iforcoIdandresolveEntity._id(orcoId)andtFroms[orcoId]==nilthen
--check that orco is a strict instance of taxon
localorcoItem=mw.wikibase.getEntity(orcoId)
iforcoItemthen
for_,instanceOfStateinpairs(orcoItem:getBestStatements('P31'))do--instance of
localinstanceOf=instanceOfState.mainsnak.datavalue.value.id
ifacceptableInstanceOf_Strict[instanceOf]then
--housekeeping
tFroms[orcoId]=1
iFroms=iFroms+1
fromTitleCount=fromTitleCount+1
--append orco & track
parentArgs['from'..fromTitleCount]=orcoId
categories[14]='[[Kategorie:Monitoring:Taxonbary s automaticky přidanou originální kombinací]]'
break
endendendendendend

--Append monotypic genus/species to arg list of monotypic species/genus, if not already provided
ifcurrentItemthen
for_,instanceOfStateinpairs(currentItem:getBestStatements('P31'))do--instance of
localtaxonRank=nil
localparentItem=nil
localparentTaxon=nil
localparentTaxonRank=nil
localparentMonoGenus=nil--holy grail/tbd
localinstanceOf=instanceOfState.mainsnak.datavalue.value.id
ifinstanceOfand(instanceOf=='Q310890'orinstanceOf=='Q47487597')then--monotypic/fossil taxon
localtaxonRankState=currentItem:getBestStatements('P105')[1]--taxon rank
iftaxonRankStatethentaxonRank=taxonRankState.mainsnak.datavalue.value.idend

iftaxonRankandtaxonRank=='Q7432'then--species
--is monotypic species; add genus
localparentTaxonState=currentItem:getBestStatements('P171')[1]--parent taxon
ifparentTaxonStatethenparentTaxon=parentTaxonState.mainsnak.datavalue.value.idend
--confirm parent taxon rank == genus & monotypic
ifparentTaxonandresolveEntity._id(parentTaxon)then
parentItem=mw.wikibase.getEntity(parentTaxon)
ifparentItemthen
localparentTaxonRankState=parentItem:getBestStatements('P105')[1]--taxon rank
ifparentTaxonRankStatethenparentTaxonRank=parentTaxonRankState.mainsnak.datavalue.value.idend
ifparentTaxonRankandparentTaxonRank=='Q34740'then--parent == genus
for_,parentInstanceOfStateinpairs(parentItem:getBestStatements('P31'))do--instance of
localparentInstanceOf=parentInstanceOfState.mainsnak.datavalue.value.id
ifparentInstanceOfand
(parentInstanceOf=='Q310890'orparentInstanceOf=='Q47487597')then--monotypic/fossil taxon
parentMonoGenus=parentTaxon--confirmed
break
end
end
ifparentMonoGenusandtFroms[parentMonoGenus]==nilthen
--housekeeping
tFroms[parentMonoGenus]=1
iFroms=iFroms+1
fromTitleCount=fromTitleCount+1
--append monotypic genus & track
parentArgs['from'..fromTitleCount]=parentMonoGenus
categories[15]='[[Kategorie:Monitoring:Taxonbary s automaticky přidaným monotypickým rodem]]'
break
end
end
end
end
ifparentMonoGenus==nilortFroms[parentMonoGenus]==nilthen
categories[16]='[[Kategorie:Monitoring:Taxonbary monotypických druhů s neuvedeným rodem]]'
break
end
elseiftaxonRankandtaxonRank=='Q34740'then--genus
--is monotypic genus; add species
--...
end

end
end
end--if currentItem

--Setup navbox
localnavboxParams={
name='Taxonbar',
bodyclass='hlist',
listclass='',
groupstyle='text-align: left;',
}

forf=1,fromTitleCount,1
do
localelements,title={},nil
--cleanup parameters
ifparentArgs['from'..f]==''thenparentArgs['from'..f]=nilend
ifparentArgs['title'..f]==''thenparentArgs['title'..f]=nilend
--remap aliases
for_,ainpairs(conf.aliases)do
localalias,name=mw.ustring.lower(a[1]),mw.ustring.lower(a[2])
ifparentArgs[alias..f]andparentArgs[name..f]==nilthen
parentArgs[name..f]=parentArgs[alias..f]
parentArgs[alias..f]=nil
end
end
--Fetch Wikidata item
localfrom=resolveEntity._id(parentArgs['from'..f])
localitem=mw.wikibase.getEntity(from)
locallabel=nil
iftype(item)=='table'then
localstatements=item:getBestStatements('P225')[1]--taxon name
ifstatementsthen
localdatavalue=statements.mainsnak.datavalue
ifdatavaluethen
label=datavalue.value
end
end
label=labeloritem:getLabel()
else
ifparentArgs['from'..f]then
categories[1]=''
categories[4]='[[Kategorie:Údržba:Taxonbary s neplatným parametrem from]]'
errors=errors..mw.text.tag('strong',{class='error'},'Chyba: "'..
parentArgs['from'..f]..' "není platný identifikátor položky Wikidat.<br />')
end
end
iflabelandlabel~=''then
title=mw.title.new(label)
end
iftitle==nilandparentArgs['title'..f]then
title=mw.title.new(parentArgs['title'..f])
end
iftitle==nilandf==1then
title=currentTitle
end

iftitlethen
ifisNilOrEmpty(parentArgs['wikidata'..f])and
(title.namespace==0)then
ifparentArgs['from'..f]then
parentArgs['wikidata'..f]=parentArgs['from'..f]
elseifitemthen
parentArgs['wikidata'..f]=item.id
end
end
iftitle.namespace==0orstringArgsthen--only in mainspace or if manual overrides exist
localsourceCount=0
for_,paramsinpairs(conf.databases)do
params[1]=mw.ustring.lower(params[1])
localpropId=params[3]
--Wikidata fallback if requested
if(itemanditem.claims)and
(type(propId)=='string'or(type(propId)=='number'andpropId>0))then
localwikidataId=getIdFromWikidata(item,'P'..propId)
localv=parentArgs[params[1]..f]
ifwikidataIdthen
ifisNilOrEmpty(v)then
parentArgs[params[1]..f]=wikidataId
else
ifvandv~='no'andv~=wikidataIdthen
categories[10]='[[Kategorie:Údržba:Taxonbary s manuálním zadáním ID lišícím se od Wikidat]]'
elseifvandv==wikidataIdthen
categories[11]='[[Kategorie:Údržba:Taxonbary s manuálním zadáním ID odpovídajícím Wikidatům]]'
end
end
end
end
localval=parentArgs[params[1]..f]
ifvalandval~=''andmw.ustring.lower(val)~='no'then
iftype(propId)=='number'then
ifpropId<0thenpropId=-propIdend--allow link
ifpropId>0then--link
table.insert(elements,createRow(params[1],params[2]..':',val,getLink(propId,val).text,true))
else--propId == 0; no link
table.insert(elements,createRow(params[1],params[2]..':',val,val,true))
end
else
table.insert(elements,createRow(params[1],params[2]..':',val,getLink(propId,val).text,true))
end
ifparams[1]~='wikidata'andparams[1]~='wikispecies'then
sourceCount=sourceCount+1
end
end
end

ifsourceCount>=40thencategories[22]='[[Kategorie:Monitoring:Taxonbary s 40+ identifikátory]]'
elseifsourceCount>=35thencategories[21]='[[Kategorie:Monitoring:Taxonbary s 35–39 identifikátory]]'--endashes
elseifsourceCount>=30thencategories[20]='[[Kategorie:Monitoring:Taxonbary s 30–34 identifikátory]]'
elseifsourceCount>=25thencategories[19]='[[Kategorie:Monitoring:Taxonbary s 25–29 identifikátory]]'
elseifsourceCount>=20thencategories[18]='[[Kategorie:Monitoring:Taxonbary s 20–24 identifikátory]]'
end

--Generate navbox title
ifsourceCount>0then
rowCount=rowCount+1
iffirstRow==0thenfirstRow=fend
--set title from wikidata if it doesn't exist
ifisNilOrEmpty(parentArgs['title'..f])then
parentArgs['noTitle'..f]=true
parentArgs['title'..f]=title.text
end
--if it exists now, set row heading to title
ifnotisNilOrEmpty(parentArgs['title'..f])then
navboxParams['group'..f]=TaxonItalics.italicizeTaxonName(parentArgs['title'..f],false)
else
navboxParams['group'..f]=''
end
navboxParams['list'..f]=table.concat(elements)
elseifcurrentEntityIdand(currentEntityId==parentArgs['from'..f]orfromTitleCount==1)then
categories[7]='[[Kategorie:Údržba:Taxonbary bez identifikátorů v primární položce na Wikidatech]]'
else
categories[8]='[[Kategorie:Údržba:Taxonbary bez identifikátorů v sekundární položce na Wikidatech]]'
end

--Categorize
ifnotisNilOrEmpty(parentArgs['from'..f])then
--blank "missing from" if 'from' exists
categories[1]=''
--blank "desynced" if 'from' matches current page
ifparentArgs['from'..f]==currentEntityIdthencategories[2]=''end
end
--cannot be "desynced" if no 'from' params
ifcategories[1]~=''thencategories[2]=''end
end
end
end--for f = 1, fromTitleCount, 1

ifrowCount>0then
localNavbox=require('Module:Navbox')
ifrowCount>1then
--remove duplicates and move page title to top
localrowIDs={}
forf=1,fromTitleCount,1
do
ifnotisNilOrEmpty(parentArgs['title'..f])then
ifrowIDs[parentArgs['wikidata'..f]]then--remove duplicate
navboxParams['group'..f]=nil
navboxParams['list'..f]=nil
else
rowIDs[parentArgs['wikidata'..f]]=true
--removed behavior forcing "WD-WP pagename match row" move to top, per [[Template talk:Taxonbar#Deprecated values from wikidata]]
-- if f > firstRow and (parentArgs['title'..f] == currentTitle.text or
-- parentArgs['wikidata'..f] == currentEntityId) then --move item linked to page to top
-- if navboxParams['group'..f] and
-- navboxParams['group'..f] ~= '' and
-- navboxParams['list'..f] and
-- navboxParams['list'..f] ~= '' then
-- local tempGroup, tempList = navboxParams['group'..f], navboxParams['list'..f]
-- navboxParams['group'..f], navboxParams['list'..f] = navboxParams['group'..firstRow], navboxParams['list'..firstRow]
-- navboxParams['group'..firstRow], navboxParams['list'..firstRow] = tempGroup, tempList
-- end
-- end
end
end
end
ifparentArgs['title'..2]andparentArgs['title'..2]==currentTitle.textthen
ifparentArgs['from'..2]==currentItem['id']then
categories[23]='[[Kategorie:Údržba:Taxonbary s parametrem from2 odpovídajícím názvu článku & QID]]'
else
categories[24]='[[Kategorie:Údržba:Taxonbary s parametrem from2 odpovídajícím názvu článku]]'
end
end
--adjust navbox for number of rows
navboxParams['title']='Identifikátory taxonu'
ifrowCount>=4then
navboxParams['navbar']='plain'
else
navboxParams['state']='off'
navboxParams['navbar']='off'
end
elseifparentArgs['noTitle'..firstRow]then
navboxParams['group'..firstRow]='Identifikátory taxonu'
else
navboxParams['group'..firstRow]='Identifikátory taxonu<br />'..navboxParams['group'..firstRow]
end

--return navbox
outString=Navbox._navbox(navboxParams)
end--if rowCount > 0

--Add categories
ifstring.sub(currentTitle.subpageText,1,9)=='testcases'thenparentArgs['demo']=trueend
ifnotisNilOrEmpty(parentArgs['demo'])then
outString=outString..mw.text.nowiki(table.concat(categories))..'<br />'
elseifcurrentTitle.namespace==0then
outString=outString..table.concat(categories)
end

returnoutString..errors
end

returnp