| Modul 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: |
| Modul ini menggunakan TemplateStyles: |
Mengimplementasikan {{Wikipedia Lisan}}. Lihat kasus ujinya di Templat:Wikipedia Lisan/kasus uji.
PenggunaanPenggunaan
{{#invoke:Spoken Wikipedia|main}}
ParametersParameters
Parameter wajibParameter wajib
|1=,|2=,|3=...- Nama berkas audio
|date=- Tanggal versi halaman saat direkam
Parameter opsionalParameter opsional
|page=- Mengganti teks "artikel ini" dengan tautan wiki—untuk penempatan templat artikel di halaman lain.
|nocat=true- Buang kategorisasi.
Lihat pulaLihat pula
Dokumentasi di atas ditransklusikan dari Modul:Spoken Wikipedia/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
localgetArgs=require('Module:Arguments').getArgs localyesno=require('Module:Yesno') localDate=require('Module:Date')._Date locallang=mw.language.new('en') localcfg=mw.loadData('Modul:Spoken Wikipedia/konfigurasi') p={} localfunctionwikiError(message) localret=mw.html.create('div') :addClass(cfg.i18n.class.err) :wikitext(message) :done() returntostring(ret) end localfunctioncategory(c,nocat) ifnocatthen return'' else returnc end end localfunctionformatPageText(page) ifpagethen return'<span class="fn">[['..page..']]</span>' end ifmw.title.getCurrentTitle().namespace==0then returncfg.i18n.this_article else returncfg.i18n.this_page end end localfunctionformatFileLength(filenames) locallength=0 for_,filenameinipairs(filenames)do localfileTitle=mw.title.new(filename,'Media') iffileTitleandfileTitle.fileandfileTitle.file.existsthen length=length+fileTitle.file.length end end -- Add 30 to offset the rounding down localintervals=lang:getDurationIntervals(length+30,{'hours','minutes'}) localret=string.format( '<span class="min">%s</span> %s', intervals.minutesor0, intervals.minutes==1andcfg.i18n.minuteorcfg.i18n.minutes ) ifintervals.hoursthen ret=string.format( '<span class="h">%s</span> %s dan %s', intervals.hours, intervals.hours==1andcfg.i18n.hourorcfg.i18n.hours, ret ) end return'<span class="duration">'..ret..'</span>' end localfunctionformatHeader(filenames,page) locallistento=mw.html.create('span') :addClass(cfg.i18n.class.listento) :wikitext(string.format( cfg.i18n.listento, formatPageText(page) )) :done() localfile_length if#filenames>1then file_length=string.format( cfg.i18n.n_files_length, tostring(#filenames), formatFileLength(filenames) ) else file_length=string.format( cfg.i18n.one_file_length, formatFileLength(filenames) ) end returnmw.html.create('div') :addClass(cfg.i18n.class.header) :node(listento) :wikitext(file_length) :done() end localfunctionformatIcon() returnmw.html.create('div') :addClass(cfg.i18n.class.icon) :wikitext(cfg.i18n.icon) :done() end localfunctionformatFiles(filenames,nocat) if#filenames==0then returnwikiError(cfg.i18n.err.no_filename).. category(cfg.i18n.cat.no_filename,nocat) end -- TODO: the else branch really wants to be a mw.html <ol> object rather than wikitext -- version of the same, so that we can style the numbers nicer localfiles={} if#filenames==1then table.insert(files,string.format(cfg.i18n.one_file,filenames[1])) else fori,filenameinipairs(filenames)do table.insert(files,string.format(cfg.i18n.n_files,filename,i)) end end returnmw.html.create('div') :addClass(cfg.i18n.class.files) :wikitext(table.concat(files)) :done() :newline() end localfunctionformatDateText(frame,dateArg,nocat) locald=dateArgandDate(dateArg)ornil returndandframe:expandTemplate{ title='Start date',args={ d.year, d.month, d.day, df='y' } }or(wikiError(cfg.i18n.err.no_date)..category(cfg.i18n.cat.no_date,nocat)) end localfunctionformatDisclaimer(frame,filenames,page,dateArg,nocat) localthisFileText='' localdisclaimer if#filenames==1then thisFileText=filenames[1] disclaimer=cfg.i18n.one_file_disclaimer else disclaimer=cfg.i18n.n_files_disclaimer end returnmw.html.create('div') :addClass(cfg.i18n.class.disclaimer) :wikitext(string.format( disclaimer, thisFileText, formatPageText(page), formatDateText(frame,dateArg,nocat) )) :done() end localfunctionformatFooter() returnmw.html.create('div') :addClass(cfg.i18n.class.footer) :wikitext(cfg.i18n.footer) :done() end localfunctionformatTopicon(frame,filenames) localwikilink if#filenames>0then wikilink='Berkas:'..filenames[1] else wikilink=cfg.i18n.topicon_multiwikilink end returnframe:expandTemplate{ title="Top icon", args={ imagename='Sound-icon.svg', wikilink=wikilink, text='Dengarkan artikel ini', id='spoken-icon' } } end localfunctionextractFilenames(args) localfilenames={} forkey,rawValueinipairs(args)do localvalue=mw.text.trim(rawValue) iftype(key)=="number"andvalue~=''then table.insert(filenames,value) end end returnfilenames end localfunctionsidebox(nodes) root=mw.html.create('div') :addClass(cfg.i18n.class.box) for_,nodeinipairs(nodes)do root:node(node) end returnroot end functionmain(frame) localargs=getArgs(frame) -- Mandatory parameters localfilenames=extractFilenames(args) localdateArg=args['date'] -- Optional parameters localpage=args['page'] localnocat=yesno(args['nocat'],false)orfalse localroot=sidebox({ formatHeader(filenames,page), formatFiles(filenames,nocat), formatIcon(), formatDisclaimer(frame,filenames,page,dateArg,nocat), formatFooter() }) ifmw.title.getCurrentTitle().namespace==0then root:wikitext(formatTopicon(frame,filenames)) root:wikitext(category(cfg.i18n.cat.articles,nocat)) end returnframe:extensionTag{ name='templatestyles',args={src=cfg.templatestyles} }..tostring(root) end p.main=main returnp