Menü aufrufen
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.

Modul:Gallery

Aus Star Citizen Wiki
Modul Dokumentation[view][edit][history][purge]
Diese Dokumentation wird von Modul:Gallery/doc aus übernommen. Änderungen können auf der Diskussionsseite vorgeschlagen werden.
Function list
L 11 — methodtable.loadSmwData
L 30 — methodtable.makeGallery
L 64 — Gallery.output
L 93 — Gallery.fromArgs
L 133 — Gallery.new

Dieses Modul setzt die Vorlage:Galerie um. Anweisungen zur Verwendung findest du auf der Vorlagenseite.


local Gallery = {}

local metatable = {}
local methodtable = {}

metatable.__index = methodtable

--- Query SMW for images in Category:Galerie and the current page
---
--- @return table|nil
function methodtable.loadSmwData( self, page, depth, limit )
    depth = depth or 5
    limit = limit or 12

    local result = mw.smw.ask{
        '[[Kategorie:' .. page .. '|+depth=' .. depth .. ']][[Kategorie:Galerie]][[Datei:!~*.mp4]][[Datei:!~*.webm]]',
        '?#-=image', '?Beschreibung=caption', '+index=1', limit=limit, mainlabel='-'
    }

    if result ~= nil then
        return result
    end

    return nil
end

--- Generate the gallery and output an optional header
---
--- @return string
function methodtable.makeGallery( self, data, withHeader, addMoreLink, page )
    local div = mw.html.create( 'div' ):addClass('template-gallery')

	local height = '120'
	local apprendarg = '|frameless|' .. 'x' .. height .. 'px'


    for _, image in pairs( data ) do
        if image[ 'caption' ] == nil then
            div
                :wikitext( '[[' .. image[ 'image' ] .. apprendarg .. ']]' )
            :done()
        else
        	div
        		:wikitext( '[[' .. image[ 'image' ] .. '|alt=' .. image[ 'caption' ] .. apprendarg .. '|' .. image[ 'caption' ] .. ']]' )
    		:done()
        end

        div:done()
    end

    local h2 = mw.html.create( 'h2' ):wikitext( 'Galerie' ):done()

    if withHeader == false then
        h2 = ''
    end

    return tostring( h2 ) .. tostring( div )
end

--- Entry for template calls
--- Load images from SMW by pagename
---
--- @return string
function Gallery.output( frame )
    local instance = Gallery:new()

    local page = mw.title.getCurrentTitle().subpageText

    if frame:getParent().args.page ~= nil and #frame:getParent().args.page > 0 then
        page = frame:getParent().args.page
    end

    if frame:getParent().args.noGallery ~= nil then
        return ''
    end

    local images = instance:loadSmwData(
    	page,
    	frame:getParent().args.depth or 0,
    	frame:getParent().args[ 'Bilderanzahl' ] or 12
    )

    if images == nil then
        return ''
    end

    return instance:makeGallery( images, true, true, page )
end

--- Entry for module calls
---
--- @return string
function Gallery.fromArgs( frame )
    local instance = Gallery:new()

    local args = require( 'Module:Arguments' ).getArgs( frame )

    local images = {}

    for k, arg in pairs( args ) do
    	local ending = mw.ustring.sub( arg, -3 )

		if ending == 'png' or ending == 'jpg' or ending == 'peg' then
			arg = mw.title.new( arg, 6 ).prefixedText
		end

		local sub = mw.ustring.sub( arg, 0, 4 )

        if sub == 'File' or sub == 'Date' then
            table.insert( images, k, {
                [ 'image' ] = arg
            } )
        else
            local prev = k - 1
            if images[ prev ] ~= nil then
                images[ prev ] = {
                    [ 'image' ] = images[ prev ][ 'image' ],
                    [ 'caption' ] = arg
                }
            end
        end
    end

    if #images == 0 then
    	return Gallery.output( frame )
	end

    return instance:makeGallery( images, false, false )
end

--- New Instance
--- @return table Gallery
function Gallery.new( self )
    local instance = {}

    setmetatable( instance, metatable )

    return instance
end

return Gallery
Cookies helfen uns bei der Bereitstellung dieses Wikis. Durch die Nutzung des Star Citizen Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.