Jump to content
Wikimedia Meta-Wiki

Module:Side box

From Meta, a Wikimedia project coordination wiki
Module documentation
The above documentation is transcluded from Module:Side box/doc. (edit | history)
Editors can experiment in this module’s sandbox (create | mirror) and testcases (create) pages.
Please add categories to the /doc subpage. Subpages of this module.

 localyesno=require('Module:Yesno')
 localp={}

 localfunctionmakeData(args)
 localdata={}

 -- Main table classes
 data.classes={}
 ifyesno(args.metadata)~=falsethen
 table.insert(data.classes,'metadata')
 end
 ifargs.positionandargs.position:lower()=='left'then
 table.insert(data.classes,'side-box-left')
 else
 table.insert(data.classes,'side-box-right')
 end

 ifargs.collapsiblethen
 table.insert(data.classes,'mw-collapsible')
 ifargs.collapsible=="collapsed"then
 table.insert(data.classes,'mw-collapsed')
 end
 data.collapsible=true
 end

 table.insert(data.classes,args.class)

 -- Image
 ifargs.imageandargs.image~='none'then
 data.image=args.image
 end

 -- 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.textclassthen
 data.textclass='plainlist'
 data.plainlist_templatestyles='Plainlist/styles.css'
 else
 data.textclass=args.textclass
 end

 -- Copy over data that does not need adjusting
 localargsToCopy={
 -- aria qualities
 'role',
 'labelledby',

 -- Styles
 'style',
 'textstyle',
 'templatestyles',

 -- Above row
 'above',
 'abovestyle',

 -- Body row
 'text',
 'imageright',

 -- Below row
 'below',
 }
 fori,keyinipairs(argsToCopy)do
 data[key]=args[key]
 end

 returndata
 end

 localfunctionrenderSidebox(data)
 -- Renders the sidebox HTML.

 -- Table root
 localroot=mw.html.create('div')
 root:attr('role',data.role)
 :attr('aria-labelledby',data.labelledby)
 :addClass('side-box')
 fori,classinipairs(data.classesor{})do
 root:addClass(class)
 end
 ifdata.stylethen
 root:cssText(data.style)
 end

 localframe=mw.getCurrentFrame()
 ifdata.plainlist_templatestylesthen
 root:wikitext(frame:extensionTag{
 name='templatestyles',args={src=data.plainlist_templatestyles}
 })
 end

 -- The "above" row
 ifdata.abovethen
 localabove=root:newline():tag('div')
 above:addClass('side-box-abovebelow')
 :newline()
 :wikitext(data.above)
 ifdata.textstylethen
 above:cssText(data.textstyle)
 end
 ifdata.abovestylethen
 above:cssText(data.abovestyle)
 end
 end

 -- The body row
 localbody=root:newline():tag('div')
 body:addClass('side-box-flex')
 :addClass(data.collapsibleand'mw-collapsible-content')
 :newline()
 ifdata.imagethen
 body:tag('div')
 :addClass('side-box-image')
 :wikitext(data.image)
 end
 localtext=body:newline():tag('div')
 text:addClass('side-box-text')
 :addClass(data.textclass)
 ifdata.textstylethen
 text:cssText(data.textstyle)
 end
 text:wikitext(data.text)
 ifdata.imagerightthen
 body:newline():tag('div')
 :addClass('side-box-imageright')
 :wikitext(data.imageright)
 end

 -- The below row
 ifdata.belowthen
 localbelow=root:newline():tag('div')
 below
 :addClass('side-box-abovebelow')
 :wikitext(data.below)
 ifdata.textstylethen
 below:cssText(data.textstyle)
 end
 end

 root:newline()
 localtemplatestyles=''
 ifdata.templatestylesthen
 templatestyles=frame:extensionTag{
 name='templatestyles',args={src=data.templatestyles}
 }
 end
 returnframe:extensionTag{
 name='templatestyles',args={src='Module:Side box/styles.css'}
 }..templatestyles..tostring(root)
 end

 -- private, export for testing
 p._makeData=makeData
 p._renderSidebox=renderSidebox

 functionp._main(args)
 localdata=makeData(args)
 returnrenderSidebox(data)
 end

 functionp.main(frame)
 localorigArgs=frame:getParent().args
 localargs={}
 fork,vinpairs(origArgs)do
 v=v:match('%s*(.-)%s*$')
 ifv~=''then
 args[k]=v
 end
 end
 returnp._main(args)
 end

 returnp

AltStyle によって変換されたページ (->オリジナル) /