Die Dokumentation für dieses Modul kann unter Modul:Sandbox/Doku erstellt werden
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