Moduł:Lepsze główne: Różnice pomiędzy wersjami
Z Nonsensopedii, polskiej encyklopedii humoru
Polskacafe (dyskusja • edycje) |
Polskacafe (dyskusja • edycje) M (grzegorz braun to przywódca wolnego świata) |
||
Linia 8: | Linia 8: | ||
cur['text'] = args['panel' .. num] |
cur['text'] = args['panel' .. num] |
||
cur['num'] = num |
cur['num'] = num |
||
cur[' |
cur['showstatus'] = args['pwarunki' .. num] or '' |
||
return cur |
return cur |
||
end |
end |
||
Linia 26: | Linia 26: | ||
table.insert(second, cur) |
table.insert(second, cur) |
||
local cur2 = makeElementTable(args, i) |
local cur2 = makeElementTable(args, i) |
||
cur2[" |
cur2["showstatus"] = "mobileonly" |
||
table.insert(first, cur2) |
table.insert(first, cur2) |
||
end |
end |
||
Linia 39: | Linia 39: | ||
local panelname = tab["title"] |
local panelname = tab["title"] |
||
local template = tab["text"] |
local template = tab["text"] |
||
local mobiledesktop = tab[" |
local mobiledesktop = tab["showstatus"] |
||
local wikitext = "{{User:Polskacafe/panel|" .. panelname .. "|{{" .. template .. "}}}}" |
local wikitext = "{{User:Polskacafe/panel|" .. panelname .. "|{{" .. template .. "}}}}" |
||
local panel = mw.html.create("div") |
local panel = mw.html.create("div") |
||
:addClass("glowna-panel") |
:addClass("glowna-panel") |
||
:wikitext(wikitext) |
:wikitext(wikitext) |
||
if (mobiledesktop |
if (mobiledesktop ~= nil) then |
||
panel = panel:addClass( |
panel = panel:addClass(mobiledesktop) |
||
end |
end |
||
return panel:done() |
return panel:done() |
Wersja z 21:23, 13 mar 2022
Moduł automatycznie generujący semi-responsywny kolumnowy układ stron głównych. Zobacz też: Szablon:Generator głównych
local tools = require('Moduł:Narzędzia')
local p = {}
function makeElementTable(args, num)
local cur = {}
cur['title'] = args['ptytuł' .. num] or 'Nie podano tytułu'
cur['text'] = args['panel' .. num]
cur['num'] = num
cur['showstatus'] = args['pwarunki' .. num] or ''
return cur
end
-- robi listę elementów wg kolumn, ignoruje - i puste
function makeElementList(args)
-- kolumny
local first = {}
local second = {}
for i = 1, 50 do -- 50 jest tymczasowo, tak jest w portalach ostrzyciela ale nie wiem czy to dobrze idk
if args['panel' .. i] ~= nil then
if args['panel' .. i] == '-' or args['panel' .. i] == '' then else -- TODO: nie dodawać elementu do pierwszej kolumny dla ostatniego elementu drugiej, możliwie w. opt.
local cur = makeElementTable(args, i)
if i % 2 == 1 then
table.insert(first, cur)
else
table.insert(second, cur)
local cur2 = makeElementTable(args, i)
cur2["showstatus"] = "mobileonly"
table.insert(first, cur2)
end
end
else break end
end
return first, second
end
function makePanel(tab)
local panelname = tab["title"]
local template = tab["text"]
local mobiledesktop = tab["showstatus"]
local wikitext = "{{User:Polskacafe/panel|" .. panelname .. "|{{" .. template .. "}}}}"
local panel = mw.html.create("div")
:addClass("glowna-panel")
:wikitext(wikitext)
if (mobiledesktop ~= nil) then
panel = panel:addClass(mobiledesktop)
end
return panel:done()
end
function makeColumn(elements, desktoponly)
column = mw.html.create("div")
:addClass("glowna-kolumna")
for k,v in ipairs(elements)
do
local elem = makePanel(v)
column = column:node(elem)
end
if (desktoponly == true) then
column:addClass("desktoponly")
end
return column:done()
end
function makeAll(args)
local first, second = makeElementList(args)
local mainList = mw.html.create("div")
:addClass("glowna-lista")
:node(makeColumn(first, false))
:node(makeColumn(second, true))
:done()
return mainList
end
function p.kolumny(frame)
local args = tools.getArgs(frame) -- argumenty szablonu to jest
local mainList = makeAll(args)
return frame:preprocess(tostring(mainList))
end
return p