Modul:Galeria
Megjelenés
A modult a Modul:Galeria/doc lapon tudod dokumentálni
local p = {}
-- Segédfüggvény a képtípus meghatározására és tisztítására
local function detektalKepTipus(nyers_bemenet)
-- Szétvágjuk a bemenetet a '|' karakter mentén (kép és felirat)
local kep_resz, felirat = nyers_bemenet:match("^%s*([^|]+)%s*|?%s*(.*)%s*$")
if not kep_resz then kep_resz = nyers_bemenet end
if felirat == "" then felirat = nil end
-- Tisztítás (felesleges szóközök lekapása)
local tiszta = kep_resz:match("^%s*(.-)%s*$")
-- 1. Internetes link
if tiszta:find("^https?://") then
return { tipus = "URL", path = tiszta, felirat = felirat }
end
-- 2. Wikimedia Commons (tisztítjuk a commons:, c:, File:, Fájl: prefixeket is)
if tiszta:find("^[Cc]ommons:") or tiszta:find("^c:") then
local fajlnev = tiszta:gsub("^[Cc]ommons:", ""):gsub("^c:", "")
:gsub("^[Ff]ájl:", ""):gsub("^[Ff]ile:", "")
return { tipus = "COMMONS", path = fajlnev, felirat = felirat }
end
-- 3. Helyi kép (szintén takarítjuk a prefixeket)
local helyi_fajl = tiszta:gsub("^[Ff]ájl:", ""):gsub("^[Ff]ile:", "")
return { tipus = "HELYI", path = helyi_fajl, felirat = felirat }
end
function p.generalGaleria(frame)
local args = (frame and frame.args) or frame
local html = {}
table.insert(html, '<div class="egyedi-galeria-container">')
for k, v in ipairs(args) do
local kepAdat = detektalKepTipus(v)
local imgTag = ""
local feliratHTML = ""
-- Felirat előkészítése (ha nincs megadva, üresen hagyjuk)
local tiszta_felirat = kepAdat.felirat or ""
-- A Luában a külső kép ága így módosul:
if kepAdat.tipus == "URL" then
-- A képet beágyazzuk egy LightGallery-kompatibilis linkbe
imgTag = string.format('<a href="%s" class="lg-vegyes-item" data-src="%s" data-sub-html="<h4>%s</h4>"><img src="%s" alt="%s" class="galeria-kep url-kep" /></a>', kepAdat.path, kepAdat.path, tiszta_felirat, kepAdat.path, tiszta_felirat)
if kepAdat.felirat then
feliratHTML = string.format('<div class="galeria-felirat">%s</div>', tiszta_felirat)
end
elseif kepAdat.tipus == "COMMONS" then
-- Commons kép (a MediaWiki parsernek a sima File: is jó, ha be van kötve,
-- de adhatunk neki egyedi osztályt is, ha tiszta HTML-t akarunk)
if kepAdat.felirat then
imgTag = string.format('[[File:%s|thumb|180px|%s]]', kepAdat.path, tiszta_felirat)
else
imgTag = string.format('[[File:%s|thumb|180px]]', kepAdat.path)
end
else -- HELYI
if kepAdat.felirat then
imgTag = string.format('[[File:%s|thumb|180px|%s]]', kepAdat.path, tiszta_felirat)
else
imgTag = string.format('[[File:%s|thumb|180px]]', kepAdat.path)
end
end
-- Közös tárolóba rakás
table.insert(html, ' <div class="galeria-elem">')
table.insert(html, ' <div class="galeria-kep-doboz">' .. imgTag .. '</div>')
if kepAdat.tipus == "URL" and feliratHTML ~= "" then
table.insert(html, ' ' .. feliratHTML)
end
table.insert(html, ' </div>')
end
table.insert(html, '\n</div>')
return table.concat(html, "\n")
end
-- =============================================================================
-- OFFLINE TESZTELÉS
-- =============================================================================
-- local teszt_adatok = {
-- "kaktusz_helyi_01.jpg | Mammillaria sp. helyi leírás",
-- "https://example.com/kepek/sivatag.jpg | Élőhelyi fotó Mexikóból",
-- "commons:File:Mammillaria_dioica_flower.jpg | Commons virág fotó",
-- "Fájl:ritka_pozsgas.png" -- Felirat nélkül
-- }
-- print("--- FRISSÍTETT OFFLINE KIMENET ---")
-- print(p.generalGaleria(teszt_adatok))
return p