Senin, 28 September 2026
05:03 WIB
TERKINI
Bola Lampard Gemilang dengan Coventry: Dari Championship ke Liga Primer, Dipuji Rekan Edukasi Moreno Sidharta: Otodidak Raih Medali Emas Olimpiade Matematika Internasional Bola Mantan Bintang Spanyol Dorong Haaland ke Barcelona: Cocok Gaya Main Flick Lampung Maulid Arbain Lampung Sembilan Tahun: Penguatan Akhlak dan SDM Jadi Prioritas Humaniora Ribuan Warga Hadiri Penutupan Maulid Arbain Lampung 2026: Perkuat Akhlak dan Anti Narkoba Cuaca Ratusan Titik Panas Terdeteksi di Lampung: Way Kanan Paling Banyak Disorot Bandar Lampung BMKG Ungkap Penyebab Kemarau Panjang di Lampung: El Nino Kuat dan Hujan Lokal Bandar Lampung Mantan Gubernur Lampung Disidang Korupsi PI 10 Persen, Begini Respons Uniknya Account Satu Akun, Berbagai Akses: Kemudahan Login Terpadu KG Media ID Bandar Lampung Semangat Anak Sawah: Harumkan Nama Lampung di Kancah Nasional Tanpa Dukungan Pemda Bola Lampard Gemilang dengan Coventry: Dari Championship ke Liga Primer, Dipuji Rekan Edukasi Moreno Sidharta: Otodidak Raih Medali Emas Olimpiade Matematika Internasional Bola Mantan Bintang Spanyol Dorong Haaland ke Barcelona: Cocok Gaya Main Flick Lampung Maulid Arbain Lampung Sembilan Tahun: Penguatan Akhlak dan SDM Jadi Prioritas Humaniora Ribuan Warga Hadiri Penutupan Maulid Arbain Lampung 2026: Perkuat Akhlak dan Anti Narkoba Cuaca Ratusan Titik Panas Terdeteksi di Lampung: Way Kanan Paling Banyak Disorot Bandar Lampung BMKG Ungkap Penyebab Kemarau Panjang di Lampung: El Nino Kuat dan Hujan Lokal Bandar Lampung Mantan Gubernur Lampung Disidang Korupsi PI 10 Persen, Begini Respons Uniknya Account Satu Akun, Berbagai Akses: Kemudahan Login Terpadu KG Media ID Bandar Lampung Semangat Anak Sawah: Harumkan Nama Lampung di Kancah Nasional Tanpa Dukungan Pemda

Modul:Commons link

Wikimedia module

Dokumentasi modullihatsuntingriwayatsegarkan
Siap digunakanModul ini dinilai siap digunakan secara umum. Modul ini sudah matang dan diperkirakan bebas dari bug dan siap digunakan pada tempat yang tepat di manapun. Modul ini siap disinggung di halaman-halaman bantuan dan sumber informasi Wikipedia lainnya sebagai pilihan untuk dipelajari para pengguna baru. Untuk mengurangi beban server dan output yang tidak diharapkan, modul ini harus diperlengkapi dengan halaman bak pasir dan kasus uji daripada harus melakukan suntingan coba-dan-salah berulang-ulang.
WarningModul Lua ini digunakan pada sekitar 169.000 halaman.
Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:Commons link, 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.
Modul ini menggunakan Lua:

Untuk menguji bak pasir, lihat atau buat di Modul:Commons link/bak pasir/kasus uji.

PenggunanPenggunan

{{#invoke:Commons link|getGallery}}

Menggunakan Wikidata untuk menemukan galeri Commons yang sesuai dengan artikel. Jika tidak dapat menemukan galeri di Wikidata, diatur secara default untuk mencari PAGENAME di Commons.

{{#invoke:Commons link|getGallery|title|linktext=text}}

Tautan ke galeri Commons di title. Secara opsional, gunakan text sebagai teks tautan yang ditampilkan.

{{#invoke:Commons link|getGallery|search=string|linktext=text}}

Tautan ke pencarian Commons untuk string. Secara opsional, gunakan text sebagai teks tautan yang ditampilkan.

{{#invoke:Commons link|getCategory|fallback=string|linktext=text}}

Gunakan wikidata terlebih dahulu, kemudian jika gagal, gunakan pencarian Commons untuk string. Secara opsional, gunakan text sebagai teks tautan yang ditampilkan.

{{#invoke:Commons link|getCategory}}

Gunakan wikidata untuk menemukan kategori Commons yang sesuai dengan artikel ini. Jika tidak dapat menemukan kategori di wikidata, default untuk mencari Kategori:PAGENAME di Commons.

{{#invoke:Commons link|getCategory|title|linktext=text}}

Tautkan ke kategori Commons di Category:title. Secara opsional, gunakan text sebagai teks tautan yang ditampilkan.

{{#invoke:Commons link|getCategory|search=string|linktext=text}}

Tautan ke pencarian Commons untuk Category:string. Secara opsional, gunakan text sebagai teks tautan yang ditampilkan.

{{#invoke:Commons link|getCategory|fallback=string|linktext=text}}

Gunakan wikidata terlebih dahulu, kemudian jika gagal, gunakan pencarian Commons untuk Category:string. Secara opsional, gunakan text sebagai teks tautan yang ditampilkan.

{{#invoke:Commons link|getGalleryOrCategory}}

Gunakan wikidata untuk menemukan tautan tunggal "terbaik" di Commons:coba galeri terlebih dahulu, kemudian kategori. Argumen lain seperti di atas.

{{#invoke:Commons link|getGalleryAndCategory}}

Lua untuk mengimplementasikan {{commons and category}}: mengembalikan galeri Commons, kategori Commons, atau keduanya (jika keduanya ditemukan)

{{#invoke:Commons link|getGalleryAndCategory|GalleryName|CategoryName}}

Baik GalleryName atau CategoryName atau keduanya dapat diberikan, akan menggantikan pencarian wikidata

{{#invoke:Commons link|bold=1|italic=1|nowrap=1|lcfirst=1}}

Format tautan pertama dapat ditentukan (kombinasi huruf tebal, miring, nowrap, dan huruf kecil pertama)

{{#invoke:Commons link|linktext=link|categoryText=category}}

Teks di tautan pertama, dan tautan (kategori) kedua juga dapat diganti.

{{#invoke:Commons link|tracking=1}}

Modul akan menghasilkan kategori pelacakan untuk ketidakcocokan antara argumen yang diberikan dan Wikidata.
Dokumentasi di atas ditransklusikan dari Modul:Commons link/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')
localgetArgs=require('Modul:Arguments').getArgs
localp={}
-- Check if string is a valid QID
-- Argument: QID to check
-- Returns: valid (bool)
localfunction_validQID(qid)
returnqidandmw.ustring.find(qid,"^[Qq]%d+$")
end
-- Check if string is a valid wikidata property string
-- Argument: property string to check
-- Returns: valid (bool)
localfunction_validProp(prop)
returnpropandmw.ustring.find(prop,"^[Pp]%d+$")
end
-- lookup nestedIndex in outer table
-- Example:  fetchNested(foo,{'bar','baz','quux'}) will return
--     foo and foo.bar and foo.bar.baz and foo.bar.baz.quux
localfunction_fetchNested(outer,nestedIndex)
ifnotouterortype(outer)~='table'ornotnestedIndexortype(nestedIndex)~='table'then
returnnil
end
localcurrent=outer
for_,indxinipairs(nestedIndex)do
current=current[indx]
ifnotcurrentthen
returncurrent
end
end
returncurrent
end
localfunction_lcfirst(s)
returnmw.ustring.lower(mw.ustring.sub(s,1,1))..mw.ustring.sub(s,2)
end
-- Format displayed linktext
-- Arguments:
--   s = string to display
--   formatting = formatting table:
--    formatting.linktext = if defined, override s
--    formatting.lcfirst = lower case the first letter in display
--    formatting.bold = whether to bold the display
--    formatting.italic = whether to italicize the display
--    formatting.nowrap = set nowrapping
-- Returns:
--   formatted string
localfunction_formatResult(s,formatting)
localresultVal=formatting.linktextors
ifformatting.lcfirstthen
resultVal=_lcfirst(resultVal)
end
localstyle=""
ifformatting.italicthenstyle="font-style:italic; "end
ifformatting.boldthenstyle=style.."font-weight:bold; "end
ifformatting.nowrapthenstyle=style.."white-space:nowrap; "end
ifstyle~=""then
resultVal='<span style="'..mw.text.trim(style)..'">'..resultVal..'</span>'
end
returnresultVal
end
-- Get title, namespace, and QID for current page
-- Arguments:
--   qid = testing only: get title of alternative page with QID=qid
--   nsQid = whether to return the ns of the qid page or current
-- Returns:
--   title, namespace (string), qid of current page (or test page)
localfunction_getTitleQID(qid,nsQid)
localtitleObject=mw.title.getCurrentTitle()
-- look up qid for current page (if not testing)
localnsText=string.gsub(titleObject.nsText,"_"," ")-- [[phab:T369784]]
ifnot_validQID(qid)then
qid=mw.wikibase.getEntityIdForCurrentPage()
returntitleObject.text,nsText,qid
end
-- testing-only path: given a qid, determine title
-- always use namespace from current page (to suppress tracking cat)
qid=qid:upper()
localtitle=mw.wikibase.getSitelink(qid)or""
-- strip any namespace from sitelink
localfirstColon=mw.ustring.find(title,':',1,true)
localqidNsText=""
iffirstColonthen
qidNsText=mw.ustring.sub(title,1,firstColon-1)
title=mw.ustring.sub(title,firstColon+1)
end
ifnsQidthen
returntitle,qidNsText,qid
end
returntitle,nsText,qid
end
-- Lookup Commons gallery in Wikidata
-- Arguments:
--   qid = QID of current article
--   fetch = whether to lookup Commons sitelink (bool)
--   commonsSitelink = default value for Commons sitelink
-- Returns:
--   categoryLink = name of Commons category, nil if nothing is found
--   consistent = multiple wikidata fields are examined: are they consistent?
--   commonsSitelink = commons sitelink for current article
localfunction_lookupGallery(qid,fetch,commonsSitelink)
ifnot_validQID(qid)then
returnnil,true,nil
end
qid=qid:upper()
localgalleryLink=nil
localconsistent=true
-- look up commons sitelink for article, use if not category
iffetchthen
commonsSitelink=mw.wikibase.getSitelink(qid,"commonswiki")orcommonsSitelink
end
ifcommonsSitelinkandmw.ustring.sub(commonsSitelink,1,9)~="Category:"then
galleryLink=commonsSitelink
end
-- P935 is the "commons gallery" property for this article
localP935=mw.wikibase.getBestStatements(qid,"P935")
localgallery=_fetchNested(P935,{1,'mainsnak','datavalue','value'})
ifgallerythen
ifgalleryLinkandgalleryLink~=gallerythen
consistent=false
else
galleryLink=gallery
end
end
returngalleryLink,consistent,commonsSitelink
end
-- Find fallback category by looking up Commons sitelink of different page
-- Arguments:
--    qid = QID for current article
--    property = property that refers to other article whose sitelink to return
-- Returns: either category-stripped name of article, or nil
localfunction_lookupFallback(qid,property)
ifnot_validQID(qid)ornot_validProp(property)then
returnnil
end
qid=qid:upper()
property=property:upper()
-- If property exists on current article, get value (other article qid)
localvalue=mw.wikibase.getBestStatements(qid,property)
localotherQid=_fetchNested(value,{1,'mainsnak','datavalue','value','id'})
ifotherQidthen
-- Look up Commons sitelink of other article
localsitelink=mw.wikibase.getSitelink(otherQid,"commonswiki")
-- Check to see if it starts with "Category:". If so, strip it and return
ifsitelinkandmw.ustring.sub(sitelink,1,9)=="Category:"then
returnmw.ustring.sub(sitelink,10)
end
end
returnnil
end
-- Find Commons category by looking in wikidata
-- Arguments:
--   qid = QID of current article
--   fetch = whether to lookup Commons sitelink (bool)
--   commonsSitelink = default value for Commons sitelink
-- Returns:
--   categoryLink = name of Commons category, nil if nothing is found
--   consistent = multiple wikidata fields are examined: are they consistent?
--   commonsSitelink = commons sitelink for current article
localfunction_lookupCategory(qid,fetch,commonsSitelink)
ifnot_validQID(qid)then
returnnil,true,nil
end
qid=qid:upper()
localcategoryLink=nil
localconsistent=true
-- look up commons sitelink for article, use if starts with "Category:"
iffetchthen
commonsSitelink=mw.wikibase.getSitelink(qid,"commonswiki")orcommonsSitelink
end
ifcommonsSitelinkandmw.ustring.sub(commonsSitelink,1,9)=="Category:"then
categoryLink=mw.ustring.sub(commonsSitelink,10)
end
-- purposefully do not look in P373 ("commons category" property)
-- if P373 is desired, then restore search code here
-- P910 is the "topic's main category". Look for commons sitelink there
localfallback=_lookupFallback(qid,"P910")
iffallbackthen
ifcategoryLinkandcategoryLink~=fallbackthen
consistent=false
qid=nil
else
categoryLink=fallback
end
end
-- P1754 is the "list's main category". Look for commons sitelink there
fallback=_lookupFallback(qid,"P1754")
iffallbackthen
ifcategoryLinkandcategoryLink~=fallbackthen
consistent=false
qid=nil
else
categoryLink=fallback
end
end
-- P373 is the "commons category" property for this article. This is
-- a low-quality field, so should only be used as a last resort.
ifcategoryLink==niland_validQID(qid)then
localP373=mw.wikibase.getBestStatements(qid,"P373")
categoryLink=_fetchNested(P373,{1,'mainsnak','datavalue','value'})
ifcategoryLinkthen
consistent=true-- P373 is never used if anything else is available
end
end
returncategoryLink,consistent,commonsSitelink
end
-- Does the article have a Commons gallery, and is it consistent?
-- Arguments:
--   qid = QID to lookup in wikidata (for testing only)
-- Returns:
--   filename at Commons, bool: is wikidata consistent for this article?
functionp._hasGalleryConsistent(qid)
localwp_title,wp_ns
wp_title,wp_ns,qid=_getTitleQID(qid)
return_lookupGallery(qid,true)
end
-- Does the article have a corresponding Commons gallery?
-- Arguments:
--   qid = QID to lookup in wikidata (for testing only)
-- Returns:
--   filename at Commons if so, false if not
functionp._hasGallery(qid)
localgalleryLink,consistent=p._hasGalleryConsistent(qid)
returnconsistentandgalleryLink
end
-- Does the article have a Commons category? Is wikidata consistent for that?
-- Arguments:
--   qid = QID to lookup in wikidata (for testing only)
--   prefix = whether to add "Category:" to return string (default true)
-- Returns:
--   filename at Commons, bool: consistent
functionp._hasCategoryConsistent(qid,prefix)
ifprefix==nilthen
prefix=true
end
localwp_title,wp_ns
wp_title,wp_ns,qid=_getTitleQID(qid)
localcategoryLink,consistent=_lookupCategory(qid,true)
ifcategoryLinkandprefixthen
categoryLink="Kategori:"..categoryLink
end
returncategoryLink,consistent
end
-- Does the article have a corresponding Commons category?
-- Arguments:
--   qid = QID to lookup in wikidata (for testing only)
--   prefix = whether to add "Category:" to return string (default true)
-- Returns:
--   filename at Commons if so, blank if not
functionp._hasCategory(qid,prefix)
localcategoryLink,consistent=p._hasCategoryConsistent(qid,prefix)
returnconsistentandcategoryLink
end
localfunction_mediaSearchLink(query,formatting,linktext)
query=queryor""
-- MediaSearch uses query-string parameters. Do not use an interwiki
-- link such as [[Commons:Special:MediaSearch?...]], because the wiki
-- link parser treats the ? as part of the page title and encodes it
-- as %3F. Use an external Commons URL instead.
localencodedQuery=mw.uri.encode(query,"QUERY")
localdisplayText=linktextorquery
localurl="https://commons.wikimedia.org/wiki/Special:MediaSearch?type=image&search="..encodedQuery
return"["..url.." ".._formatResult(displayText,formatting).."]"
end
-- Create Commons link corresponding to current article
-- Arguments:
--   namespace = namespace in Commons ("" for galleries)
--   default = use as Commons link, don't access wikidata
--   search = string to search for
--   fallback = string to search for if wikidata fails
--   formatting = formatting parameters
--   qid = QID to lookup in wikidata (for testing only)
-- Returns:
--   formatted wikilink to Commons in specified namespace
functionp._getCommons(namespace,default,search,fallback,formatting,qid)
localnsColon
ifnotnamespaceornamespace==""then
nsColon=""
else
nsColon=namespace..":"
end
ifdefaultthen
return"[[Commons:"..nsColon..default.."|".._formatResult(default,formatting).."]]"
end
ifsearchthen
return_mediaSearchLink(search,formatting,search)
end
localwp_title,wp_ns
wp_title,wp_ns,qid=_getTitleQID(qid)
localcommonsLink=nil
localconsistent=true
ifnsColon==""then
commonsLink,consistent=_lookupGallery(qid,true)
elseifnamespace:lower()=="category"then
commonsLink,consistent=_lookupCategory(qid,true)
end
-- use wikidata if consistent
ifcommonsLinkandconsistentthen
return"[[Commons:"..nsColon..commonsLink.."|".._formatResult(commonsLink,formatting).."]]"
end
-- if not consistent, fall back to search and add to tracking cat
-- construct default result (which searches for title)
localsearchResult=_mediaSearchLink(fallbackorwp_title,formatting,fallbackorwp_title)
ifnotconsistentandwp_ns==""then
localfriendlyNS
ifnsColon==""then
friendlyNS="gallery"
else
friendlyNS=namespace:lower()
end
searchResult=searchResult.."[[Kategori:Wikidata tidak konsisten untuk "..friendlyNS.." di Commons]]"
end
returnsearchResult
end
-- Returns "best" Commons link: first look for gallery, then try category
-- Arguments:
--   default = use as Commons link, don't access wikidata
--   search = string to search for
--   fallback = string to search for if wikidata lookup fails
--   formatting = formatting parameters
--   qid = QID to lookup in wikidata (for testing only)
-- Returns:
--   formatted wikilink to Commons "best" landing page
functionp._getGalleryOrCategory(default,search,fallback,formatting,qid)
ifdefaultthen
return"[[Commons:"..default.."|".._formatResult(default,formatting).."]]"
end
ifsearchthen
return_mediaSearchLink(search,formatting,search)
end
localwp_title,wp_ns
wp_title,wp_ns,qid=_getTitleQID(qid)
localtrackingCats=""
localgalleryLink,consistent,commonsSitelink=_lookupGallery(qid,true)
-- use wikidata if either sitelink or P935 exist, and they both agree
ifgalleryLinkandconsistentthen
return"[[Commons:"..galleryLink.."|".._formatResult(galleryLink,formatting).."]]"
end
ifnotconsistentandwp_ns==""then
trackingCats="[[Kategori:Wikidata tidak konsisten untuk galeri Commons]]"
end
-- if gallery is not good, fall back looking for category
localcategoryLink
categoryLink,consistent=_lookupCategory(qid,false,commonsSitelink)
ifcategoryLinkandconsistentthen
return"[[Commons:Category:"..categoryLink.."|".._formatResult(categoryLink,formatting).."]]"..trackingCats
end
ifnotconsistentandwp_ns==""then
trackingCats=trackingCats.."[[Kategori:Wikidata yang tidak konsisten untuk kategori Commons]]"
end
-- return search result looking for title as last attempt
return_mediaSearchLink(fallbackorwp_title,formatting,fallbackorwp_title)..trackingCats
end
-- Return link(s) Commons gallery, or category, or both from wikidata
-- Arguments:
--   defaultGallery = default gallery link to use, instead of wikidata
--   defaultCategory = default category link to use, instead of wikidata
--   categoryText = if both gallery and category, text to use in category link ("category" by default)
--   oneSearch = only emit one search result
--   formatting = formatting parameters
--   qid = qid of page to lookup in wikidata (testing only)
functionp._getGalleryAndCategory(defaultGallery,defaultCategory,
categoryText,oneSearch,formatting,qid
)
localwp_title,wp_ns
wp_title,wp_ns,qid=_getTitleQID(qid)
categoryText=categoryTextor"kategori"
localtrackingCats=""
localgalleryLink,galleryConsistent
localcommonsSitelink=nil
ifdefaultGallerythen
galleryLink=defaultGallery
galleryConsistent=true
else
galleryLink,galleryConsistent,commonsSitelink=_lookupGallery(qid,true)
end
localgalleryGood=galleryLinkandgalleryConsistent
ifnotgalleryConsistentandwp_ns==""then
trackingCats="[[Kategori:Wikidata tidak konsisten untuk galeri Commons]]"
end
localcategoryLink,categoryConsistent
ifdefaultCategorythen
categoryLink=defaultCategory
categoryConsistent=true
else
categoryLink,categoryConsistent=_lookupCategory(qid,defaultGallery,commonsSitelink)
end
localcategoryGood=categoryLinkandcategoryConsistent
ifnotcategoryConsistentandwp_ns==""then
trackingCats=trackingCats.."[[Kategori:Wikidata tidak konsisten untuk kategori Commons]]"
end
localfirstLink
-- construct default result (which searches for title)
localsearchResult=_mediaSearchLink(wp_title,formatting,wp_title)
ifnotoneSearchthen
searchResult=searchResult.." (".._mediaSearchLink(wp_title,formatting,categoryText)..")"
end
locallinkText=nil
ifgalleryGoodthen
firstLink=galleryLink
linkText=galleryLink
elseifcategoryGoodthen
firstLink="Category:"..categoryLink
linkText=categoryLink
else
returnsearchResult..trackingCats
end
localresultVal="[[Commons:"..firstLink.."|".._formatResult(linkText,formatting).."]]"
ifgalleryGoodandcategoryGoodthen
resultVal=resultVal.." ([[Commons:Category:"..categoryLink.."|"..categoryText.."]])"
end
returnresultVal..trackingCats
end
-- Compare two titles with their namespaces stripped
localfunctiontitleMatch(s1,s2)
s1=s1or""
s2=s2or""
s1=mw.ustring.gsub(s1,"^[^:]+:","")
s2=mw.ustring.gsub(s2,"^[^:]+:","")
returns1==s2
end
localgalleryTrackingCats={
commons_link_on_wikidata='[[Kategori:Pranala Commons ada di Wikidata]]',
commons_link_defined_as_pagename='[[Kategori:Pranala Commons didefinisikan sebagai nama halaman]]',
commons_link_locally_defined='[[Kategori:Pranala Commons ditentukan secara lokal]]',
commons_link_from_wikidata='[[Kategori:Pranala Commons dari Wikidata]]',
commons_link_is_pagename='[[Kategori:Pranala Commons dari nama halaman]]',
inconsistent='[[Kategori:Wikidata tidak konsisten untuk galeri Commons]]'
}
localcategoryTrackingCats={
commons_link_on_wikidata='[[Kategori:Pranala kategori Commons ada di Wikidata]]',
commons_link_defined_as_pagename='[[Kategori:Pranala kategori Commons didefinisikan sebagai nama halaman]]',
commons_link_locally_defined='[[Kategori:Pranala kategori Commons ditentukan secara lokal]]',
commons_link_from_wikidata='[[Kategori:Pranala kategori Commons dari Wikidata]]',
commons_link_is_pagename='[[Kategori:Pranala kategori Commons dari nama halaman]]',
inconsistent='[[Kategori:Wikidata tidak konsisten untuk kategori Commons]]'
}
localfunctionselectTrackingCat(trackingCats,wikidata,consistent,default,title)
ifnotconsistentthen
returntrackingCats.inconsistent
end
ifdefaultthen
-- construct warning message
ifdefault==wikidatathen
returntrackingCats.commons_link_on_wikidata
end
localwarning=""
ifwikidatathen
localgenerateWarning=require('Modul:If preview')._warning
warning=generateWarning({
"Pranala Commons tidak cocok dengan Wikidata – [[Templat:Commons_category#Memperbaiki_perbedaan|silakan periksa]]"
})
end
iftitleMatch(default,title)then
returntrackingCats.commons_link_defined_as_pagename..warning
end
returntrackingCats.commons_link_locally_defined..warning
end
ifwikidatathen
returntrackingCats.commons_link_from_wikidata
end
returntrackingCats.commons_link_is_pagename
end
-- Figure out tracking categories and editor warnings
-- Arguments:
--   default = Commons link argument passed to template
--   fetchGallery = whether to fetch a gallery from Wikidata
--   fetchCategory = whether to fetch a category from Wikidata
--   qid = force a qid for testing
-- Returns:
--   tracking category and possible user warning
--
-- Note: the logic for the tracking is quite different than the logic
-- for generating Commons links (above). Thus, it is separated into another
-- function for code clarity and maintainability. This should not seriously 
-- affect performance: server time is dominated by fetching wikidata entities,
-- and those entities should be cached and shared between the Commons generating
-- code and this tracking code.
functionp._tracking(default,fetchGallery,fetchCategory,qid)
localtitle,wp_ns,wp_qid=_getTitleQID(qid,true)
ifwp_ns~=""then
title=wp_ns..":"..title
end
-- only track if test or namespace=article or namespace=category
ifnot(qidorwp_ns==""orwp_ns=="Category")then
return""
end
-- determine title and namespace of wikidata and wp article
localwikidata=nil
localconsistent=nil
-- Tracking code works for all 4 cases of states of fetchGallery/Category
-- fetchGallery takes precedence
iffetchGallerythen
wikidata,consistent=p._hasGalleryConsistent(qid)
ifdefaultornotfetchCategoryor(consistentandwikidata)then
returnselectTrackingCat(galleryTrackingCats,wikidata,consistent,
default,title)
end
end
iffetchCategorythen
localcat_wikidata,cat_consistent=p._hasCategoryConsistent(qid,true)
ifnotfetchGalleryor(cat_consistentandcat_wikidata)then
returnselectTrackingCat(categoryTrackingCats,cat_wikidata,
cat_consistent,default,title)
end
returnselectTrackingCat(galleryTrackingCats,wikidata,consistent,
default,title)
end
return""-- nothing fetched, nothing tracked
end
localfunction_createFormatting(args)
localformatting={}
formatting.linktext=args.linktext
localyesNo=require('Modul:Yesno')
formatting.lcfirst=yesNo(args.lcfirst)
formatting.bold=yesNo(args.bold)
formatting.italic=yesNo(args.italic)
formatting.nowrap=yesNo(args.nowrap)
returnformatting
end
-- Testing-only entry point for _getTitleQID
functionp.getTitleQID(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
localtext,ns,qid=_getTitleQID(args[1],args[2])
returntext..","..ns..","..(qidor"nil")
end
-- Testing-only entry point for _lookupFallback
functionp.lookupFallback(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
localfallback=_lookupFallback(args[1],args[2])
returnfallbackor"nil"
end
-- Find the Commons gallery page associated with article
functionp.getGallery(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
returnp._getCommons("",args[1],args.search,args.fallback,_createFormatting(args),args.qid)
end
-- Find the Commons category page associated with article
functionp.getCategory(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
localretval=p._getCommons("Category",args[1],
args.search,args.fallback,_createFormatting(args),args.qid
)
ifargs.trackingthen
localdefault=nil
ifargs[1]then
default="Category:"..args[1]
end
retval=retval..p._tracking(default,false,true,args.qid)
end
returnretval
end
functionp.getGalleryOrCategory(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
localretval=p._getGalleryOrCategory(
args[1],args.search,args.fallback,_createFormatting(args),args.qid
)
ifargs.trackingthen
retval=retval..p._tracking(args[1],true,true,args.qid)
end
returnretval
end
functionp.hasGallery(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
returnp._hasGallery(args.qid)or""
end
functionp.hasCategory(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
returnp._hasCategory(args.qid)or""
end
functionp.hasGalleryOrCategory(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
returnp._hasGallery(args.qid)orp._hasCategory(args.qid)or""
end
functionp.getGalleryAndCategory(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
returnp._getGalleryAndCategory(args[1],args[2],
args.categoryText,args.oneSearch,_createFormatting(args),args.qid)
end
functionp.tracking(frame)
localargs=getArgs(frame,{frameOnly=true,parentOnly=false,parentFirst=false})
returnp._tracking(args[1],args.fetchGallery,args.fetchCategory,args.qid)
end
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan