Selasa, 22 September 2026
11:50 WIB
TERKINI
Regional Solo Safari Bantah Larang Hijab, Akui Ada Kesalahan Komunikasi Berita Banjir Bandang Landa Kompleks Pemkab Solok, Peralatan Kantor Hanyut dan Warga Mengungsi Berita Mengungkap Jaringan Video Asusila "A Day in My Life": Dua Pelaku Raup Jutaan Rupiah Berita Nusron Wahid Mundur dari Golkar, Serahkan Detail ke Bahlil Lahadalia Wawancara Tragedi 1965: Oka Rusmini Soroti Perampasan Hak Hidup Perempuan Prelude Dua Mantan Menteri Keuangan: Riwayat Berbeda di Kursi Kasir Negara Politik Kepala BGN Gencar Beriklan di Medsos, Benahi Citra Program Makan Bergizi Gratis Bisnis Jerat Pungli Ancam UMKM Indonesia: Kisah Bolosego dan Solusi Mendesak Hukum & Kriminal Empat Eks Pejabat LPEI Divonis 6 Tahun Penjara dalam Skandal Korupsi Pembiayaan Ekspor Hukum & Kriminal Mantan Bupati Sidoarjo Gus Muhdlor Bebas Bersyarat Usai Dua Tahun Dipenjara Regional Solo Safari Bantah Larang Hijab, Akui Ada Kesalahan Komunikasi Berita Banjir Bandang Landa Kompleks Pemkab Solok, Peralatan Kantor Hanyut dan Warga Mengungsi Berita Mengungkap Jaringan Video Asusila "A Day in My Life": Dua Pelaku Raup Jutaan Rupiah Berita Nusron Wahid Mundur dari Golkar, Serahkan Detail ke Bahlil Lahadalia Wawancara Tragedi 1965: Oka Rusmini Soroti Perampasan Hak Hidup Perempuan Prelude Dua Mantan Menteri Keuangan: Riwayat Berbeda di Kursi Kasir Negara Politik Kepala BGN Gencar Beriklan di Medsos, Benahi Citra Program Makan Bergizi Gratis Bisnis Jerat Pungli Ancam UMKM Indonesia: Kisah Bolosego dan Solusi Mendesak Hukum & Kriminal Empat Eks Pejabat LPEI Divonis 6 Tahun Penjara dalam Skandal Korupsi Pembiayaan Ekspor Hukum & Kriminal Mantan Bupati Sidoarjo Gus Muhdlor Bebas Bersyarat Usai Dua Tahun Dipenjara

Modul:Sidebar

Wikimedia module

Dokumentasi modullihatsuntingriwayatsegarkan
WarningModul Lua ini digunakan pada sekitar 14.000 halaman dan perubahannya kemungkinan memicu perubahan massal pada semua halaman yang menggunakannya. Uji cobalah di subhalaman /bak pasir atau /kasus uji Modul:Sidebar, atau bak pasir modul Anda. 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.
Modul ini menggunakan Lua:
CSSModul ini menggunakan TemplateStyles:

Modul ini mengimplementasikan templat {{sidebar}} dan {{sidebar with collapsible lists}}. lihat masing-masing templat untuk halaman dokumentasi.

Dokumentasi di atas ditransklusikan dari Modul:Sidebar/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 {{Sidebar}}
--
require('strict')
localcfg=mw.loadData('Module:Sidebar/configuration')
localp={}
localgetArgs=require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
localfunctioncategorizeTemplatesWithInlineStyles(args)
localtitle=mw.title.getCurrentTitle()
iftitle.namespace~=10andtitle.namespace~=828thenreturn''end
for_,patterninipairs(cfg.i18n.pattern.uncategorized_conversion_titles)do
iftitle.text:match(pattern)thenreturn''end
end
forkey,_inpairs(args)do
ifmw.ustring.find(key,cfg.i18n.pattern.style_conversion)orkey=='width'then
returncfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
localfunctiontrimAndAddAutomaticNewline(s)
s=mw.ustring.gsub(s,"^%s*(.-)%s*$","%1")
ifmw.ustring.find(s,'^[#*:;]')ormw.ustring.find(s,'^{|')then
return'\n'..s
else
returns
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
localfunctionhasSubgroup(s)
ifmw.ustring.find(s,cfg.i18n.pattern.subgroup)then
returntrue
else
returnfalse
end
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
functionp.sidebar(frame,args,collapsibleClass)
ifnotargsthen
args=getArgs(frame)
end
localroot=mw.html.create()
localchild=args.childandmw.text.trim(args.child)==cfg.i18n.child_yes
root=root:tag('table')
ifnotchildthen
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass==cfg.i18n.class.collapseandcfg.i18n.class.collapseornil)
:addClass('')
:addClass(args.float==cfg.i18n.float_noneandcfg.i18n.class.float_noneornil)
:addClass(args.float==cfg.i18n.float_leftandcfg.i18n.class.float_leftornil)
:addClass(args.wraplinks==cfg.i18n.wrap_trueandcfg.i18n.class.wraplinksornil)
:addClass(args.bodyclassorargs.class)
:css('width',args.widthornil)
:cssText(args.bodystyleorargs.style)
ifargs.outertitlethen
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
ifargs.topimagethen
localimageCell=root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
ifargs.topcaptionthen
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
ifargs.pretitlethen
root
:tag('tr')
:tag('td')
:addClass(args.topimageandcfg.i18n.class.pretitle_with_top_image
orcfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclassorargs.class)
:cssText(args.bodystyleorargs.style)
end
ifargs.titlethen
ifchildthen
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitleandcfg.i18n.class.title_with_pretitle
orcfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
ifargs.imagethen
localimageCell=root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
ifargs.captionthen
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
ifargs.abovethen
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline()-- newline required for bullet-points to work
:wikitext(args.above)
end
localrowNums={}
fork,vinpairs(args)do
k=''..k
localnum=k:match('^heading(%d+)$')ork:match('^content(%d+)$')
ifnumthentable.insert(rowNums,tonumber(num))end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
fori=#rowNums,1,-1do
ifrowNums[i]==rowNums[i-1]then
table.remove(rowNums,i)
end
end
fori,numinipairs(rowNums)do
localheading=args['heading'..num]
ifheadingthen
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading'..num..'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading'..num..'style'])
:newline()
:wikitext(heading)
end
localcontent=args['content'..num]
ifcontentthen
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content)andcfg.i18n.class.content_with_subgroup
orcfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content'..num..'class'])
:cssText(args.contentstyle)
:cssText(args['content'..num..'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
ifargs.belowthen
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
ifnotchildthen
ifargs.navbar~=cfg.i18n.navbar_noneandargs.navbar~=cfg.i18n.navbar_offand
(args.nameorframe:getParent():getTitle():gsub(cfg.i18n.pattern.sandbox,'')~=
cfg.i18n.title_not_to_add_navbar)then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini=1,
fontstyle=args.navbarfontstyle
})
end
end
localbase_templatestyles=frame:extensionTag{
name='templatestyles',args={src=cfg.i18n.templatestyles}
}
localtemplatestyles=''
ifargs['templatestyles']andargs['templatestyles']~=''then
templatestyles=frame:extensionTag{
name='templatestyles',args={src=args['templatestyles']}
}
end
localchild_templatestyles=''
ifargs['child templatestyles']andargs['child templatestyles']~=''then
child_templatestyles=frame:extensionTag{
name='templatestyles',args={src=args['child templatestyles']}
}
end
localgrandchild_templatestyles=''
ifargs['grandchild templatestyles']andargs['grandchild templatestyles']~=''then
grandchild_templatestyles=frame:extensionTag{
name='templatestyles',args={src=args['grandchild templatestyles']}
}
end
returntable.concat({
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
tostring(root),
(childandcfg.i18n.category.childor''),
categorizeTemplatesWithInlineStyles(args)
})
end
localfunctionlist_title(args,is_centered_list_titles,num)
localtitle_text=trimAndAddAutomaticNewline(args['list'..num..'title']
orcfg.i18n.default_list_title)
localtitle
ifis_centered_list_titlesthen
-- collapsible can be finicky, so provide some CSS/HTML to support
title=mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title=mw.html.create()
:wikitext(title_text)
end
localtitle_container=mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list'..num..'titlestyle'])
:node(title)
:done()
returntitle_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
functionp.collapsible(frame)
localargs=getArgs(frame)
ifnotargs.nameand
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox,'')==
cfg.i18n.collapse_title_not_to_add_navbarthen
args.navbar=cfg.i18n.navbar_none
end
localcontentArgs={}
localis_centered_list_titles
ifargs['centered list titles']andargs['centered list titles']~=''then
is_centered_list_titles=true
else
is_centered_list_titles=false
end
fork,vinpairs(args)do
localnum=string.match(k,'^list(%d+)$')
ifnumthen
localexpand=args.expandedand
(args.expanded=='all'orargs.expanded==args['list'..num..'name'])
localrow=mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((notexpand)and'mw-collapsed'ornil)
:addClass(args['list'..num..'class'])
:cssText(args.listframestyle)
:cssText(args['list'..num..'framestyle'])
:node(list_title(args,is_centered_list_titles,num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list'..num..'style'])
:wikitext(trimAndAddAutomaticNewline(args['list'..num]))
contentArgs['content'..num]=tostring(row)
end
end
fork,vinpairs(contentArgs)do
args[k]=v
end
returnp.sidebar(frame,args,cfg.i18n.class.collapse)
end
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan