Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:ImageGrid: Difference between revisions

From MassiveCraft Wiki
No edit summary
No edit summary
Line 1: Line 1:
-- File: Module:ImageGrid
local p = {}
local p = {}


-- Function to generate the HTML for the image grid
function p.renderImageGrid(frame)
function p.renderImageGrid(frame)
     local args = frame:getParent().args
     local args = frame:getParent().args
     local images = args['images'] or ''  
     local images = args['images'] or '' -- fallback to an empty string if nil
     local texts = args['texts'] or ''
     local texts = args['texts'] or '' -- fallback to an empty string if nil
    local links = args['links'] or ''


    -- Split the images and texts into tables
     local imageList = mw.text.split(images, ',')
     local imageList = mw.text.split(images, ',')
     local textList = mw.text.split(texts, ',')
     local textList = mw.text.split(texts, ',')
    local linkList = mw.text.split(links, ',')


-- holds everything basically
    -- Initialize the HTML container for the grid
     local output = ""
     local html = mw.html.create('div'):addClass('image-grid-container')


     for i = 1, math.max(#imageList, #textList, #linkList) do
    -- Loop through the images and texts to create the grid structure
         local image = mw.text.trim(imageList[i] or 'Noimg.png')  
     for i = 1, math.max(#imageList, #textList) do
         local text = mw.text.trim(textList[i] or '')  
        -- Fallback for missing images or texts
        local link = mw.text.trim(linkList[i] or '')
         local image = mw.text.trim(imageList[i] or 'Noimg.png') -- Fallback to 'Noimg.png' if nil
         local text = mw.text.trim(textList[i] or '') -- Fallback to empty string if nil


         output = output .. '<div class="image-wrapper">'
         -- Create the image wrapper
        local imageWrapper = html:tag('div'):addClass('image-wrapper')


         if link ~= '' then
         -- Use the MediaWiki file syntax to render the image
            output = output .. string.format('[[%s|[[File:%s|200px]]]]', link, image)
        imageWrapper:wikitext(string.format('[[File:%s|200px]]', image))
            if text ~= '' then
 
                output = output .. string.format('[[%s|<div class="image-text">%s</div>]]', link, text)
        -- Add text overlay
            end
        if text ~= '' then
        else
            imageWrapper:tag('div'):addClass('image-text'):wikitext(text)
            output = output .. string.format('[[File:%s|200px]]', image)
            if text ~= '' then
                output = output .. string.format('<div class="image-text">%s</div>', text)
            end
         end
         end
        output = output .. '</div>'
     end
     end


     return output
    -- Return the generated HTML as a string
     return tostring(html)
end
end


return p
return p

Revision as of 02:46, 17 September 2024

Documentation for this module may be created at Module:ImageGrid/doc

-- File: Module:ImageGrid
local p = {}

-- Function to generate the HTML for the image grid
function p.renderImageGrid(frame)
    local args = frame:getParent().args
    local images = args['images'] or '' -- fallback to an empty string if nil
    local texts = args['texts'] or '' -- fallback to an empty string if nil

    -- Split the images and texts into tables
    local imageList = mw.text.split(images, ',')
    local textList = mw.text.split(texts, ',')

    -- Initialize the HTML container for the grid
    local html = mw.html.create('div'):addClass('image-grid-container')

    -- Loop through the images and texts to create the grid structure
    for i = 1, math.max(#imageList, #textList) do
        -- Fallback for missing images or texts
        local image = mw.text.trim(imageList[i] or 'Noimg.png') -- Fallback to 'Noimg.png' if nil
        local text = mw.text.trim(textList[i] or '') -- Fallback to empty string if nil

        -- Create the image wrapper
        local imageWrapper = html:tag('div'):addClass('image-wrapper')

        -- Use the MediaWiki file syntax to render the image
        imageWrapper:wikitext(string.format('[[File:%s|200px]]', image))

        -- Add text overlay
        if text ~= '' then
            imageWrapper:tag('div'):addClass('image-text'):wikitext(text)
        end
    end

    -- Return the generated HTML as a string
    return tostring(html)
end

return p