„Modul:Galeria” változatai közötti eltérés
Megjelenés
Új oldal, tartalma: „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…” |
Nincs szerkesztési összefoglaló |
||
| 29. sor: | 29. sor: | ||
function p.generalGaleria(frame) | function p.generalGaleria(frame) | ||
local args = (frame and frame.args) or frame | local args = {} | ||
-- Megvizsgáljuk, hogy valódi MediaWiki környezetben vagyunk-e | |||
if type(frame) == "table" and type(frame.getParent) == "function" then | |||
-- Ha sablonból hívták (pl. {{Galéria...}}), akkor a szülő (Parent) paraméterei kellenek | |||
args = frame:getParent().args | |||
-- Biztonsági mentés: ha közvetlenül #invoke-ból hívták paraméterekkel | |||
if not args or not args[1] then | |||
args = frame.args | |||
end | |||
else | |||
-- Ha offline futtatod a gépeden (parancssorból) | |||
args = frame | |||
end | |||
-- Ha teljesen üres a bemenet, adjunk vissza egy látható hibaüzenetet, ne a semmit | |||
if not args or not args[1] then | |||
return '<span style="color:red; font-weight:bold;">[Hiba: A galéria nem kapott képeket!]</span>' | |||
end | |||
local html = {} | local html = {} | ||
table.insert(html, '<div class="egyedi-galeria-container">') | table.insert(html, '<div class="egyedi-galeria-container">') | ||
A lap 2026. június 6., 22:54-kori változata
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 = {}
-- Megvizsgáljuk, hogy valódi MediaWiki környezetben vagyunk-e
if type(frame) == "table" and type(frame.getParent) == "function" then
-- Ha sablonból hívták (pl. {{Galéria...}}), akkor a szülő (Parent) paraméterei kellenek
args = frame:getParent().args
-- Biztonsági mentés: ha közvetlenül #invoke-ból hívták paraméterekkel
if not args or not args[1] then
args = frame.args
end
else
-- Ha offline futtatod a gépeden (parancssorból)
args = frame
end
-- Ha teljesen üres a bemenet, adjunk vissza egy látható hibaüzenetet, ne a semmit
if not args or not args[1] then
return '<span style="color:red; font-weight:bold;">[Hiba: A galéria nem kapott képeket!]</span>'
end
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