Module:CRTGallery
Documentation for this module may be created at Module:CRTGallery/doc
local p = {}
function p.gallery(frame)
local args = frame:getParent().args
local mode = args.mode or "packed"
local heights = args.heights or "160"
local pageName = args.page
if not pageName or pageName == "" then
pageName = mw.title.getCurrentTitle().fullText
end
-- Use mw.smw.ask to query Has images property
local queryResult = mw.smw.ask("[[" .. pageName .. "]]|?Has images|mainlabel=-|limit=50")
if not queryResult or type(queryResult) ~= "table" or #queryResult == 0 then
return ""
end
local lines = {}
for _, row in ipairs(queryResult) do
local images = row["Has images"]
if images then
-- images may be a single string or a table of strings
if type(images) == "string" then
images = { images }
end
for _, img in ipairs(images) do
local trimmed = mw.text.trim(tostring(img))
if trimmed ~= "" then
if not trimmed:match("^[Ff]ile:") then
trimmed = "File:" .. trimmed
end
table.insert(lines, trimmed)
end
end
end
end
if #lines == 0 then return "" end
local wikitext = string.format(
'<gallery mode="%s" heights="%s">\n%s\n</gallery>',
mode, heights, table.concat(lines, "\n")
)
return frame:preprocess(wikitext)
end
return p