Diese Dokumentation wird von Modul:Sandbox/doc aus übernommen. Änderungen können auf der Diskussionsseite vorgeschlagen werden.
Function list |
---|
L 11 — methodtable.setArgs L 19 — methodtable.parseArgs L 42 — methodtable.buildImageText L 54 — methodtable.includeCss L 62 — methodtable.getContainer L 107 — methodtable.setFrame L 114 — RubrikContainer.main L 125 — RubrikContainer.new |
Dies ist eine Spielumgebung.
Dieses Modul kann frei für Testzwecke verwendet werden.
Du kannst den Code dieser Seite jederzeit löschen.
local RubrikContainer = {}
local metatable = {}
local methodtable = {}
metatable.__index = methodtable
local fallbackImage = 'Datei:Platzhalter.webp'
local defaultImageSize = '800px'
function methodtable.setArgs( self, args )
self.frameArgs = {}
self:parseArgs()
for k, v in pairs( args ) do
self.parsedArgs[ k ] = v
end
end
function methodtable.parseArgs( self )
local titlePosition = ''
if self.frameArgs[ 'Titelposition' ] == 'Oben' then
titlePosition = 'category-container--title-top'
elseif self.frameArgs[ 'Titelposition' ] == 'Zentriert' then
titlePosition = 'category-container--title-prominent'
end
-- All first named keys are deprecated
self.parsedArgs = {
containerClass = self.frameArgs[ 'class' ] or self.frameArgs[ 'Containerklasse' ] or nil,
containerSize = self.frameArgs[ 'Größe' ] or nil,
title = self.frameArgs[ 'head_content' ] or self.frameArgs[ 'Titel' ],
titlePosition = titlePosition,
image = self.frameArgs[ 'image' ] or self.frameArgs[ 'Bild' ] or fallbackImage,
imageAlt = self.frameArgs[ 'image_alt' ] or self.frameArgs[ 'Bildbeschreibung' ] or '',
imageSize = self.frameArgs[ 'image_size' ] or self.frameArgs[ 'Bildgröße' ] or defaultImageSize,
imageLink = self.frameArgs[ 'image_link' ] or self.frameArgs[ 'Bildlink' ] or '',
imageClass = self.frameArgs[ 'image_class' ] or self.frameArgs[ 'Bildklasse' ] or '',
}
end
function methodtable.buildImageText( self )
return string.format(
'[[%s|alternativtext=%s|rahmenlos|%s|link=%s|class=%s]]',
self.parsedArgs.image,
self.parsedArgs.imageAlt,
self.parsedArgs.imageSize,
self.parsedArgs.imageLink,
self.parsedArgs.imageClass
)
end
function methodtable.includeCss( self )
return self.frame:extensionTag{
name='templatestyles',
src='RubrikContainer/style.css'
}
end
function methodtable.getContainer( self )
local section = mw.html.create( 'div' )
section
:addClass( 'category-container' )
:addClass( self.parsedArgs.titlePosition )
if type( self.parsedArgs.title ) ~= 'string' and self.frameArgs[ 'Titelposition' ] ~= 'Versteckt' then
return '<div class="mw-message-box mw-message-box-warning">Das "Titel" Attribut muss ausgefüllt sein</div>'
end
if self.parsedArgs.containerClass ~= nil then
section:addClass( self.parsedArgs.containerClass )
end
if self.parsedArgs.containerSize ~= nil then
section:addClass( string.format( 'category-container--size-%s', self.parsedArgs.containerSize ) )
end
if self.parsedArgs.title ~= nil then
local heading = mw.html.create( 'h2' )
heading:wikitext( self.parsedArgs.title )
:addClass( 'category-container__title' )
if self.parsedArgs[ 'title_subtext' ] ~= nil then
heading:attr( 'data-subtext', self.parsedArgs[ 'title_subtext' ] )
end
section:node( heading )
end
local imageContainer = mw.html.create( 'div' )
imageContainer
:addClass( 'category-container__image' )
:wikitext( self:buildImageText() )
section:node( imageContainer )
return tostring( section ) --.. self:includeCss()
end
--- Set the frame and load self.frameArgs
--- @param frame table
function methodtable.setFrame( self, frame )
self.currentFrame = frame
self.frameArgs = require( 'Module:Arguments' ).getArgs( frame )
end
--- Template entry
function RubrikContainer.main( frame )
local instance = RubrikContainer:new()
instance:setFrame( frame )
instance:parseArgs()
return tostring( instance:getContainer() )
end
--- New Instance
function RubrikContainer.new( self )
local instance = {}
setmetatable( instance, metatable )
return instance
end
return RubrikContainer