Idi na sadržaj

Modul:Side box

S Wikipedije, slobodne enciklopedije
Dokumentacija modula[uredi] [historija] [osvježi keš]
Ova dokumentacija je prikazana uModul:Side box/dok.

Ovaj modul implementira šablon {{Sporedni okvir}}. Pogledajte šablon za više informacija.


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

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