Rabu, 07 Oktober 2026
08:54 WIB
TERKINI
Cuaca Lampung Timur Dominasi Sebaran 140 Titik Panas di Provinsi Lampung Ekonomi Dan Bisnis Harga Emas Antam 6 Oktober 2026 Terkoreksi, Cek Daftar Lengkapnya Bandar Lampung Direktur RSUDAM Imam Ghozali Tanggapi Isu Mutasi: Siap Mengabdi Sesuai Kompetensi Lampung Timur Ceceran Minyak Misterius Kembali Cemari Pantai Cemara Lampung Timur Bandar Lampung Mendiktisaintek Brian Yuliarto Optimis Itera Jadi Institut Teknologi Terbaik Asia Tenggara Hukum Pengiriman 1,68 Juta Batang Rokok Ilegal Terbongkar di Tol Tulang Bawang Hiburan No Na Kibarkan Merah Putih: Video Musik 'Work' Tembus UK Music Video Awards 2026 Regional Duel Sengit Barito Putera dan Tira Persikabo Ramaikan Panggung Liga 1 Regional Barito Putera Taklukkan Persebaya Surabaya dengan Skor Tipis 1-0 Regional Evakuasi Korban Tabrakan Speedboat Paspampres di Palangkaraya Dilakukan Cuaca Lampung Timur Dominasi Sebaran 140 Titik Panas di Provinsi Lampung Ekonomi Dan Bisnis Harga Emas Antam 6 Oktober 2026 Terkoreksi, Cek Daftar Lengkapnya Bandar Lampung Direktur RSUDAM Imam Ghozali Tanggapi Isu Mutasi: Siap Mengabdi Sesuai Kompetensi Lampung Timur Ceceran Minyak Misterius Kembali Cemari Pantai Cemara Lampung Timur Bandar Lampung Mendiktisaintek Brian Yuliarto Optimis Itera Jadi Institut Teknologi Terbaik Asia Tenggara Hukum Pengiriman 1,68 Juta Batang Rokok Ilegal Terbongkar di Tol Tulang Bawang Hiburan No Na Kibarkan Merah Putih: Video Musik 'Work' Tembus UK Music Video Awards 2026 Regional Duel Sengit Barito Putera dan Tira Persikabo Ramaikan Panggung Liga 1 Regional Barito Putera Taklukkan Persebaya Surabaya dengan Skor Tipis 1-0 Regional Evakuasi Korban Tabrakan Speedboat Paspampres di Palangkaraya Dilakukan

Modul:Gallery

Wikimedia module

Bagikan:
Dokumentasi modullihatsuntingriwayatsegarkan
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.
Modul ini menggunakan Lua:
CSSModul ini menggunakan TemplateStyles:

Modul untuk templat {{gallery}}

Dokumentasi di atas ditransklusikan dari Modul:Gallery/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
-- This module implements {{gallery}} by wrapping the <gallery> core extension tag.
localp={}
localtemplatestyles='Module:Gallery/styles.css'
localyesno=require('Module:Yesno')
localplaintextModule=require('Module:Plain text')
localfunctionplaintext(text)
-- stips out external links without labels,
-- and then passes to the Plain_text module to clean the rest
returnplaintextModule.main({args={
text:gsub("([^%[])%[([^%[%]%s]+)%]",'%1')
,encode="no"}})
end
localfunctiontrim(s)
returnmw.ustring.gsub(mw.ustring.gsub(sor'','%s',' '),'^%s*(.-)%s*$','%1')
end
localtracking,preview
localfunctionisImage(file)
localfile=trim(file):lower()-- Case insensitive check
-- Check if it starts with "File:", "Image:", or "Media:"
localprefix=file:match("^(%a+):")
ifprefixand(prefix=="file"orprefix=="image"orprefix=="media")then
returntrue
end
localvalid_extensions={
"apng","djvu","flac","gif","jfi","jfif","jif","jpe","jpeg","jpg",
"m1a","m1v","m2a","m2v","mid","mp1","mp2","mp3","mpa","mpe","mpeg","mpg",
"mpv","oga","ogg","ogv","opus","pdf","png","stl","svg","svgz","tif","tiff",
"wav","wave","webm","webp","xcf"
}
-- Extract file extension, of 3 or 4 characters only
localext=file:match("%.(%w%w%w%w?)$")
-- Check if the extension is in the valid list
ifextthen
for_,valid_extinipairs(valid_extensions)do
ifext==valid_extthen
table.insert(tracking,'[[Kategori:Halaman yang menggunakan galeri tanpa awalan ruangnama media]]')
returntrue
end
end
end
returnfalse
end
localfunctioncheckarg(k,v)
ifkandtype(k)=='string'then
ifk=='align'ork=='state'ork=='style'ork=='title'or
k=='width'ork=='height'ork=='lines'ork=='whitebg'or
k=='mode'ork=='footer'ork=='perrow'ork=='noborder'or
k:match('^alt%d+$')ork:match('^class%d+$')ork:match('^%d+$')then
-- valid
elseifk=='captionstyle'then
ifnotv:match('^text%-align%s*:%s*center[;%s]*$')then
table.insert(tracking,'[[Kategori:Halaman yang menggunakan galeri dengan parameter captionstyle]]')
end
else
-- invalid
localvlen=mw.ustring.len(k)
k=mw.ustring.sub(k,1,(vlen<25)andvlenor25)
k=mw.ustring.gsub(k,'[^%w%-_ ]','?')
table.insert(tracking,'[[Kategori:Halaman yang menggunakan galeri dengan parameter tidak diketahui|'..k..']]')
table.insert(preview,'"'..k..'"')
end
end
end
functionp.gallery(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
localorigArgs=(type(frame.getParent)=='function')andframe:getParent().argsorframe
-- ParserFunctions considers the empty string to be false, so to preserve the previous 
-- behavior of {{gallery}}, change any empty arguments to nil, so Lua will consider
-- them false too.
localargs={}
tracking,preview={},{}
fork,vinpairs(origArgs)do
ifv~=''then
args[k]=v
checkarg(k,v)
end
end
if(args.modeor'')=='packed'and(args.alignor'')==''then
args.align='center'
end
if(args.alignor'')=='centre'then
args.align='center'
end
localtbl=mw.html.create('div')
tbl:addClass('mod-gallery')
ifargs.statethen
tbl
:addClass('mod-gallery-collapsible')
:addClass('collapsible')
:addClass(args.state)
end
ifargs.stylethen
tbl:cssText(args.style)
else
tbl:addClass('mod-gallery-default')
end
ifargs.alignthen
tbl:addClass('mod-gallery-'..args.align:lower())
end
ifargs.titlethen
tbl:tag('div')
:addClass('title')
:tag('div')
:wikitext(args.title)
end
localgargs={}
gargs['class']='nochecker'..(args.noborderand''or' bordered-images')
gargs['widths']=tonumber(args.width)or180
gargs['heights']=tonumber(args.height)or180
gargs['style']=args.captionstyle
gargs['perrow']=args.perrow
gargs['mode']=args.mode
ifyesno(args.whitebgor'yes')then
gargs['class']=gargs['class']..' whitebg'
end
localvirtualgallery={}
localgallery={}
localimageCount=0
localzwsp=string.char(0xE2,0x80,0x8B)-- U+200B Zero Width Space
localzwnj=string.char(0xE2,0x80,0x8C)-- U+200C Zero Width Non-Joiner
-- create a coding to identify classes
-- using unicode non-printing characters
-- this is a workaround until we get the class arg in the <gallery> tag
-- https://phabricator.wikimedia.org/T344784
localskininvert=zwsp..zwsp..zwsp;
localbgtransparent=zwsp..zwsp..zwnj;
fori=1,#argsdo
localcurrentfield=trim(args[i])or''
ifcurrentfield==''then
-- Skip empty fields
elseifisImage(currentfield)then
imageCount=imageCount+1
virtualgallery[imageCount]={currentfield}
elseifimageCount>0andvirtualgallery[imageCount][2]==nilthen
-- In case of multiple captions, use the first and ignore the laters
virtualgallery[imageCount][2]=currentfield
end
end
localaltCount=0;
-- Run through virtualgallery and builds gallery
forn=1,#virtualgallerydo
localimg=virtualgallery[n][1]
localcaption=virtualgallery[n][2]or''
localalt=trim(args['alt'..n]or'')
localclass=trim(args['class'..n]or'')
-- we count alt text only before any modification
ifalt~=''then
altCount=altCount+1
else
-- if alt is empty, we use the caption as a alt text.
-- It is necessary because we add classes codes in the next step,
-- we do not want to let the alt empty with just the non-printing characters.
alt=(caption~='')andplaintext(caption)or''
end
-- we attach the non-printing code to the end of the alt text
ifmw.ustring.find(class,'skin%-invert')then-- this matches both skin-invert and skin-invert-image
alt=alt..skininvert
end
-- as it is possible to combine multiple classes, we use find instead of ==
ifmw.ustring.find(class,'bg%-transparent')then
alt=alt..bgtransparent
end
-- Some space between the arguments and the pipe to prevent unexpected behaviors.
-- for example: in some cases the parser interpret the pipe as part of urls
table.insert(gallery,img..
(alt~=''and(' |alt='..alt)or'')..
(caption~=''and(' |'..caption)or''))
end
-- For tracking and verifying during migration to the new algorimth.
-- It can be removed once everything is verified
ifmath.ceil(#args/2)>imageCountthen
ifaltCount>0then
table.insert(tracking,'[[Kategori:Halaman yang menggunakan galeri dengan potensi ketidaksesuaian teks alt]]')
--else
--	table.insert(tracking, '[[Kategori:Halaman yang menggunakan galeri dengan kolom kosong tambahan]]')
end
end
tbl:tag('div')
:addClass('main')
:tag('div')
:wikitext(
frame:extensionTag{name='gallery',content='\n'..table.concat(gallery,'\n'),args=gargs}
)
ifargs.footerthen
tbl:tag('div')
:addClass('footer')
:tag('div')
:wikitext(args.footer)
end
localtrackstr=(#tracking>0)andtable.concat(tracking,'')or''
if#preview>0then
trackstr=require('Modul:If preview')._warning({
'Parameter tidak diketahui '..table.concat(preview,'; ')..'.'
})..trackstr
end
returnframe:extensionTag{name='templatestyles',args={src=templatestyles}}..tostring(tbl)..trackstr
end
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan