Jump to content

Module:Side box

Permanently protected module
From Wikipedia, the free encyclopedia

localyesno=require('Module:Yesno')localp={}localfunctionmakeData(args)localdata={}-- Main table classesdata.classes={}ifyesno(args.metadata)~=falsethentable.insert(data.classes,'metadata')endifargs.positionandargs.position:lower()=='left'thentable.insert(data.classes,'side-box-left')elsetable.insert(data.classes,'side-box-right')endifargs.collapsiblethentable.insert(data.classes,'mw-collapsible')ifargs.collapsible=="collapsed"thentable.insert(data.classes,'mw-collapsed')enddata.collapsible=trueendtable.insert(data.classes,args.class)-- Imageifargs.imageandargs.image~='none'thendata.image=args.imageend-- we have to check to see if a downstream use has plainlist like-- Template:Sister_project. also it's the default. wikitext is :(ifargs.textclass=='plainlist'ornotargs.textclassthendata.textclass='plainlist'data.plainlist_templatestyles='Plainlist/styles.css'elsedata.textclass=args.textclassend-- Copy over data that does not need adjustinglocalargsToCopy={-- aria qualities'role','labelledby',-- Styles'style','textstyle','templatestyles',-- Above row'above','abovestyle',-- Body row'text','imageright',-- Below row'below',}fori,keyinipairs(argsToCopy)dodata[key]=args[key]endreturndataendlocalfunctionrenderSidebox(data)-- Renders the sidebox HTML.-- Table rootlocalroot=mw.html.create('div')root:attr('role',data.role):attr('aria-labelledby',data.labelledby):addClass('side-box')fori,classinipairs(data.classesor{})doroot:addClass(class)endifdata.stylethenroot:cssText(data.style)endlocalframe=mw.getCurrentFrame()ifdata.plainlist_templatestylesthenroot:wikitext(frame:extensionTag{name='templatestyles',args={src=data.plainlist_templatestyles}})end-- The "above" rowifdata.abovethenlocalabove=root:newline():tag('div')above:addClass('side-box-abovebelow'):newline():wikitext(data.above)ifdata.textstylethenabove:cssText(data.textstyle)endifdata.abovestylethenabove:cssText(data.abovestyle)endend-- The body rowlocalbody=root:newline():tag('div')body:addClass('side-box-flex'):addClass(data.collapsibleand'mw-collapsible-content'):newline()ifdata.imagethenbody:tag('div'):addClass('side-box-image'):wikitext(data.image)endlocaltext=body:newline():tag('div')text:addClass('side-box-text'):addClass(data.textclass)ifdata.textstylethentext:cssText(data.textstyle)endtext:wikitext(data.text)ifdata.imagerightthenbody:newline():tag('div'):addClass('side-box-imageright'):wikitext(data.imageright)end-- The below rowifdata.belowthenlocalbelow=root:newline():tag('div')below:addClass('side-box-abovebelow'):wikitext(data.below)ifdata.textstylethenbelow:cssText(data.textstyle)endendroot:newline()localtemplatestyles=''ifdata.templatestylesthentemplatestyles=frame:extensionTag{name='templatestyles',args={src=data.templatestyles}}endreturnframe:extensionTag{name='templatestyles',args={src='Module:Side box/styles.css'}}..templatestyles..tostring(root)endfunctionp._main(args)localdata=makeData(args)returnrenderSidebox(data)endfunctionp.main(frame)localorigArgs=frame:getParent().argslocalargs={}fork,vinpairs(origArgs)dov=v:match('%s*(.-)%s*$')ifv~=''thenargs[k]=vendendreturnp._main(args)endreturnp
close