Kamis, 01 Oktober 2026
19:48 WIB
TERKINI
Berita Komjen Suyudi Paparkan Visi 'Polisi Bersama Masyarakat' untuk Transformasi Polri Berita Jalan Mulus Komjen Suyudi: Komisi III DPR Setujui Pimpin Polri Berita DPR RI Resmi Lantik Komjen Suyudi Ario Seto sebagai Kapolri Baru Lampung Prakiraan Cuaca Lampung 1 Oktober 2026: Waspada Hujan Lebat dan Angin Kencang Ekonomi Dan Bisnis Harga Emas Antam 1 Oktober 2026 Turun, Cek Rincian Lengkapnya Sekarang Cuaca Waspada! 325 Titik Panas Terdeteksi di Lampung, Ancaman Karhutla Meningkat Regional Menko PMK Muhadjir Effendy Kunjungi Anjir Batola, Perkuat Sinergi Pembangunan Wilayah Editorial Macan Kemayoran Raih Poin Penuh di Kandang Laskar Antasari Bandar Lampung Buaya Coki Menjalani Adaptasi di Sumsel Usai Perjalanan Panjang dari Lampung Berita Puan Maharani Atur Pertemuan Susulan Megawati dan Prabowo: Nasi Goreng Menanti Berita Komjen Suyudi Paparkan Visi 'Polisi Bersama Masyarakat' untuk Transformasi Polri Berita Jalan Mulus Komjen Suyudi: Komisi III DPR Setujui Pimpin Polri Berita DPR RI Resmi Lantik Komjen Suyudi Ario Seto sebagai Kapolri Baru Lampung Prakiraan Cuaca Lampung 1 Oktober 2026: Waspada Hujan Lebat dan Angin Kencang Ekonomi Dan Bisnis Harga Emas Antam 1 Oktober 2026 Turun, Cek Rincian Lengkapnya Sekarang Cuaca Waspada! 325 Titik Panas Terdeteksi di Lampung, Ancaman Karhutla Meningkat Regional Menko PMK Muhadjir Effendy Kunjungi Anjir Batola, Perkuat Sinergi Pembangunan Wilayah Editorial Macan Kemayoran Raih Poin Penuh di Kandang Laskar Antasari Bandar Lampung Buaya Coki Menjalani Adaptasi di Sumsel Usai Perjalanan Panjang dari Lampung Berita Puan Maharani Atur Pertemuan Susulan Megawati dan Prabowo: Nasi Goreng Menanti

Modul:Taxonbar

Wikimedia module

Bagikan:
Dokumentasi modullihatsuntingriwayatsegarkan

Taxonbar (sunting bicara histori links # /subpages /doc /doc sunting /sbox /sbox diff /test) · Module:Taxonbar

WarningModul Lua ini digunakan pada 149.000+ halaman.
Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:Taxonbar, atau bak pasir modul Anda. Perubahan yang telah diuji kemudian dapat ditambahkan ke halaman ini dalam satu suntingan. Pertimbangkan untuk mendiskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya.
DiproteksiModul ini dilindungi. Modul ini sangat mencolok yang digunakan oleh banyak halaman, atau sangat sering disubstitusikan. Karena vandalisme atau kesalahan akan mempengaruhi banyak halaman, dan suntingan kecil dapat memberi beban besar pada server, modul ini dilindungi dari penyuntingan.
Halaman utama: Template:Taxonbar
Modul ini menggunakan satu properti Wikidata atau lebih; lihat § Taxon identifiers untuk penjelasannya.
Modul ini menggunakan Lua:
Halaman terkait

Modul ini berisi kode untuk {{Taxonbar}}. Untuk menggunakan Taxonbar, ikuti petunjuk di Templat:Taxonbar/doc.

KonfigurasiKonfigurasi

Parameter dan database diatur oleh Modul:Taxonbar/conf.

Kasus ujiKasus uji

Untuk kasus uji gunakan: {{Taxonbar | from=QID}}

Bersihkan tembolok server

Rhododendron maximum

Asclepias syriaca

Persik (Prunus persica)

Prunus persica

Puma (genus)

Anjing (Canis lupus familiaris)

Blue Bird Timur (Sialia sialis)

Lebah madu (Apis)

Lebah madu barat (Apis mellifera)

Kupu-kupu Clipper (Parthenos sylvia)

Trametes versicolor

Jamur kancing / portobello (Agaricus bisporus)


Lihat pulaLihat pula

Dokumentasi di atas ditransklusikan dari Modul:Taxonbar/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
require('strict')
localconf=require('Module:Taxonbar/conf')--configuration module
localTaxonItalics=require('Module:TaxonItalics')--use a function to conditionally italicize taxon names
--[[==========================================================================]]
--[[                             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
--[[ this code picks up deprecated values on wikidata; better to use getBestStatements
	for _, statement in pairs( item.claims[property] ) do
		if statement.mainsnak.datavalue then
			id = statement.mainsnak.datavalue.value
			break
		end
	end
	]]
localstatements=item:getBestStatements(property)[1]
ifstatementsand
statements.mainsnakand
statements.mainsnak.datavalueand
statements.mainsnak.datavalue.value
then
id=statements.mainsnak.datavalue.value
end
returnid
end
localfunctiongetLink(property,db,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
ifdb=='bow'then-- for birds of world which uses eBird identifier
link='https://birdsoftheworld.org/bow/species/$1'
elseifdb=='speciesfungorum'then-- SpeciesFungorum uses Index Fungorum identifier
link='https://www.speciesfungorum.org/Names/NamesRecord.asp?RecordID=$1'
elseifdb=='fossilworks'then
link='https://paleobiodb.org/classic/basicTaxonInfo?taxon_no=$1'
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
--local valurl = val
localvalurl=mw.uri.encode(val,'PATH')
valurl=string.gsub(valurl,'%%2F','/')--escape '/' (e.g. issue with P5354); see wikidata T128078 and https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/664820/3/lib/includes/PropertyInfoSnakUrlExpander.php
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,'%%20','+')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')
localwhitelist=require('Module:Taxonbar/whitelist').whitelist--to create acceptableInstanceOf_Strict & acceptableInstanceOf_All
localparentArgs=copyTable(frame:getParent().args)
localcurrentTitle=mw.title.getCurrentTitle()
localcurrentEntityId=mw.wikibase.getEntityIdForCurrentPage()
localstringArgs=false
localfromTitleCount,firstRow,rowCount=1,0,0
localoutString,errors='',''
localiFroms=0--integer size of tFroms, b/c Lua
localtFroms={}--non-sequential table of unique froms
localtCats={
'[[Kategori:Taxonbar tanpa parameter from]]',
'[[Kategori:Taxonbar tidak sinkron dengan Wikidata]]',
'',-- [3] placeholder for [[Category:Taxonbar pages requiring a Wikidata item]]
'',-- [4] placeholder for [[Category:Taxonbars on possible non-taxon pages]]
'',-- [5] placeholder for [[Category:Taxonbars with invalid from parameters]]
'',-- [6] placeholder for [[Category:Taxonbars with duplicate from parameters]]
'',-- [7] placeholder for [[Category:Taxonbars with from2 matching article title]]
'',-- [8] placeholder for [[Category:Taxonbars with from2 matching article title & QID]]
'',-- [9] placeholder for [[Category:Taxonbars with manual taxon IDs]]
'',--[10] placeholder for [[Category:Taxonbars with manual taxon IDs identical to Wikidata]]
'',--[11] placeholder for [[Category:Taxonbars with manual taxon IDs differing from Wikidata]]
'',--[12] placeholder for [[Category:Taxonbars with unknown parameters]]
'',--[13] placeholder for [[Category:Taxonbars with unnamed parameters]]
'',--[14] placeholder for [[Category:Taxonbars with multiple manual Wikidata items]]
'',--[15] placeholder for [[Category:Taxonbars with automatically added basionyms]]
'',--[16] placeholder for [[Category:Taxonbars with automatically added original combinations]]
'',--[17] placeholder for [[Category:Taxonbars with automatically added monotypic species]]
'',--[18] placeholder for [[Category:Taxonbars with automatically added monotypic genera]]
'',--[19] placeholder for [[Category:Taxonbars of monotypic species missing genera]]
'',--[20] placeholder for [[Category:Taxonbars of monotypic genera missing species]]
'',--[21] placeholder for [[Category:Taxonbars without primary Wikidata taxon IDs]]
'',--[22] placeholder for [[Category:Taxonbars without secondary Wikidata taxon IDs]]
'',--[23] placeholder for [[Category:Taxonbars with 20–24 taxon IDs]]
'',--[24] placeholder for [[Category:Taxonbars with 25–29 taxon IDs]]
'',--[25] placeholder for [[Category:Taxonbars with 30–34 taxon IDs]]
'',--[26] placeholder for [[Category:Taxonbars with 35–39 taxon IDs]]
'',--[27] placeholder for [[Category:Taxonbars with 40–44 taxon IDs]]
'',--[28] placeholder for [[Category:Taxonbars with 45+ taxon IDs]]
}
localacceptableInstanceOf_Strict=whitelist{args={'strict'}}
localacceptableInstanceOf_All=whitelist{args={'all'}}
--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
tCats[3]='[[Kategori:Halaman taxonbar yang membutuhkan item Wikidata]]'
end
ifcurrentItemthen
tCats[4]='[[Kategori:Taxonbar pada halaman yang kemungkinan non-takson]]'--unset if acceptable found
for_,instanceOfStateinpairs(currentItem:getBestStatements('P31'))do--instance of
localinstanceOf=instanceOfState.mainsnak.datavalue.value.id
ifacceptableInstanceOf_All[instanceOf]then
tCats[4]=''
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
tCats[6]='[[Kategori:Taxonbar dengan parameter from duplikat]]'
tFroms[v]=tFroms[v]+1
else
tFroms[v]=1
iFroms=iFroms+1
end
ifiFroms==2then
tCats[14]='[[Kategori:Taxonbar yang menggunakan banyak item Wikidata manual]]'
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'andmw.ustring.lower(v)~='yes'then
stringArgs=true
tCats[9]='[[Kategori:Taxonbar yang menggunakan ID takson manual]]'
end
end
end--if type(k) == 'string'
end--for
--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,_inpairs(parentArgs)do
iftype(k)=='string'then
locallowerk=mw.ustring.lower(k)
localbase=mw.ustring.gsub(lowerk,'[%d]*$','')
baseParentArgs[base]=true
elseiftype(k)=='number'then
tCats[13]='[[Kategori:Taxonbar dengan parameter tak bernama|'..k..']]'
end
end
--compare lists and spit out unknowns
localunknownParams={}
fork,_inpairs(baseParentArgs)do
ifacceptableArgs[k]==nilthen
tCats[12]='[[Kategori:Taxonbar dengan parameter tak dikenali|'..k..']]'
unknownParams[#unknownParams+1]=k
end
end
--warn if unknown(s) present
if#unknownParams>0then
localplural='s'
localitthem='them'
if#unknownParams==1then
plural=''
itthem='it'
end
errors=errors..require('Module:If preview')._warning({
mw.ustring.format(
'Parameter tidak dikenali: %s <code>%s</code>. Mohon koreksi %s atau pertimbangkan untuk menambahkan %s ke Wikidata.',
plural,
table.concat(unknownParams,'</code>, <code>'),
itthem,
itthem
)
})
end
--Append basionym to arg list, if not already provided
ifcurrentItemthen
localcurrentBasState=currentItem:getBestStatements('P566')[1]--basionym
ifcurrentBasStatethen
localdatavalue=currentBasState.mainsnak.datavalue
localbasionymId=datavalueanddatavalue.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
tCats[15]='[[Kategori:Taxonbar dengan basionim ditambahkan secara otomatis]]'
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
tCats[16]='[[Kategori:Taxonbar dengan kombinasi asli ditambahkan secara otomatis]]'
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
localchildItem=nil
localchildTaxon=nil
localchildTaxonRank=nil
localchildMonoSpecies=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
tCats[18]='[[Kategori:Taxonbar dengan genera monotipik ditambahkan secara otomatis]]'
break
endendendend
ifparentMonoGenus==nilortFroms[parentMonoGenus]==nilthen
tCats[19]='[[Kategori:Taxonbar spesies monotipik tanpa genera]]'
break
end
elseiftaxonRankandtaxonRank=='Q34740'then--genus
--is monotypic genus; add species
--(https://www.wikidata.org/wiki/Wikidata:Property_proposal/child_monotypic_taxon unnecessary thanks to P427!)
localchildTaxonState=currentItem:getBestStatements('P427')[1]--taxonomic type
ifchildTaxonStatethenchildTaxon=childTaxonState.mainsnak.datavalue.value.idend
--confirm child taxon rank == species & monotypic
ifchildTaxonandresolveEntity._id(childTaxon)then
childItem=mw.wikibase.getEntity(childTaxon)
ifchildItemthen
localchildTaxonRankState=childItem:getBestStatements('P105')[1]--taxon rank
ifchildTaxonRankStatethenchildTaxonRank=childTaxonRankState.mainsnak.datavalue.value.idend
ifchildTaxonRankandchildTaxonRank=='Q7432'then--child == species
for_,childInstanceOfStateinpairs(childItem:getBestStatements('P31'))do--instance of
localchildInstanceOf=childInstanceOfState.mainsnak.datavalue.value.id
ifchildInstanceOfand
(childInstanceOf=='Q310890'orchildInstanceOf=='Q47487597')then--monotypic/fossil taxon
childMonoSpecies=childTaxon--confirmed
break
end
end
ifchildMonoSpeciesandtFroms[childMonoSpecies]==nilthen
--housekeeping
tFroms[childMonoSpecies]=1
iFroms=iFroms+1
fromTitleCount=fromTitleCount+1
--append monotypic species & track
parentArgs['from'..fromTitleCount]=childMonoSpecies
tCats[17]='[[Kategori:Taxonbar dengan genera monotipik ditambahkan secara otomatis]]'
break
endendendend
ifchildMonoSpecies==nilortFroms[childMonoSpecies]==nilthen
tCats[20]='[[Kategori:Taxonbar dari genera monotipe tanpa spesies]]'
break
end
end--monotype searches
end--monotype handling
end--for
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
tCats[1]=''
tCats[5]='[[Kategori:Taxonbar dengan parameter from tidak sah]]'
errors=errors..mw.text.tag('strong',{class='error'},'Error: "'..
parentArgs['from'..f]..'" bukan ID entitas Wikidata yang sah.<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
tCats[11]='[[Kategori:Taxonbar dengan ID takson manual berbeda dengan Wikidata]]'
elseifvandv==wikidataIdthen
tCats[10]='[[Kategori:Taxonbar dengan ID takson manual sama dengan Wikidata]]'
end
end
end
end
if(itemanditem.claims)and
((type(propId)=='number'andpropId<0))then
localwikidataId=getIdFromWikidata(item,'P'..-propId)
--mw.addWarning ("propId=" .. tostring(propId) .. "; wikidata=" .. tostring(wikidataId))
localv=parentArgs[params[1]..f]
ifv=='yes'then
ifwikidataIdthen
parentArgs[params[1]..f]=wikidataId
else
parentArgs[params[1]..f]=nil-- don't want to use 'yes' as id
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,params[1],val).text,true))
ifparams[1]=='fossilworks'then-- fossilworks being use to link to PBDB
if(elements[#elements]==elements[#elements-1])then-- check if identical PBDB entry already set
--mw.addWarning("item has both Fossilworks and PBDB identifers:" .. val)
elements[#elements]=nil
end
end
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,params[1],val).text,true))
end
ifparams[1]~='wikidata'andparams[1]~='wikispecies'then
sourceCount=sourceCount+1
end
end
end--for
ifsourceCount>=45thentCats[28]='[[Kategori:Taxonbar dengan 45+ ID takson]]'
elseifsourceCount>=40thentCats[27]='[[Kategori:Taxonbar dengan 40–44 ID takson]]'--endashes
elseifsourceCount>=35thentCats[26]='[[Kategori:Taxonbar dengan 35–39 ID takson]]'
elseifsourceCount>=30thentCats[25]='[[Kategori:Taxonbar dengan 30–34 ID takson]]'
elseifsourceCount>=25thentCats[24]='[[Kategori:Taxonbar dengan 25–29 ID takson]]'
elseifsourceCount>=20thentCats[23]='[[Kategori:Taxonbar dengan 20–24 ID takson]]'
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
tCats[21]='[[Kategori:Taxonbar tanpa ID takson utama Wikidata]]'
else
tCats[22]='[[Kategori:Taxonbar tanpa ID takson Wikidata sekunder]]'
end
--Categorize
ifnotisNilOrEmpty(parentArgs['from'..f])then
tCats[1]=''--blank "missing from" if 'from' exists
ifparentArgs['from'..f]==currentEntityIdthen
tCats[2]=''--blank "desynced" if 'from' matches current page
end
end
iftCats[1]~=''then
tCats[2]=''--cannot be "desynced" if no 'from' params
end
end--if title.namespace == 0 or stringArgs
end--if title
end--for f = 1, fromTitleCount, 1
ifrowCount>0then
localNavbox=require('Module:Navbox')
ifrowCount>1then
--remove duplicates and don't bother moving 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
end
end
end
ifparentArgs['title'..2]andparentArgs['title'..2]==currentTitle.textthen
ifcurrentItemandparentArgs['from'..2]==currentItem['id']then
tCats[8]='[[Kategori:Taxonbar dengan from2 yang cocok dengan judul artikel & QID]]'
else
tCats[7]='[[Kategori:Taxonbar dengan from2 yang cocok dengan judul artikel]]'
end
end
--adjust navbox for number of rows
navboxParams['title']='[[Bantuan:Pengidentifikasi takson|Pengidentifikasi takson]]'
ifrowCount>=4then
navboxParams['navbar']='plain'
else
navboxParams['state']='off'
navboxParams['navbar']='off'
end
elseifparentArgs['noTitle'..firstRow]then--show title & taxon for 1-row taxonbars, per talk
navboxParams['title']='[[Bantuan:Pengidentifikasi takson|Pengidentifikasi takson]]'
navboxParams['state']='off'
navboxParams['navbar']='off'
else
navboxParams['group'..firstRow]='[[Bantuan:Pengidentifikasi takson|Pengidentifikasi takson]]<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(tCats))..'<br />'
elseifcurrentTitle.namespace==0then
outString=outString..table.concat(tCats)
end
returnoutString..errors
end
functionp.taxonbar(frame)returnp.authorityControlTaxon(frame:newChild{title=frame:getTitle()})end
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan