Moduł:Lepsze główne: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
Znacznik: zrewertowane
(rev)
Znacznik: rewert ręczny
Linia 18: Linia 18:
cur['icon'] = removeUnwanted(args['pikona' .. num], '')
cur['icon'] = removeUnwanted(args['pikona' .. num], '')
cur['iconlink'] = removeUnwanted(args["pikonalink" .. num], '')
cur['iconlink'] = removeUnwanted(args["pikonalink" .. num], '')
if args["pnieszablon" .. num] ~= nil then
cur['astemplate'] = false
cur['text'] = args['panel' .. num]
else
cur['astemplate'] = true
end
return cur
return cur
end
end
Linia 63: Linia 57:
function makePanel(tab)
function makePanel(tab)
local panelname = tab["title"]
local panelname = tab["title"]
local content = tab["text"]
local template = tab["text"]
local mobiledesktop = tab["showstatus"]
local mobiledesktop = tab["showstatus"]
local icon = tab["icon"]
local icon = tab["icon"]
local iconlink = tab["iconlink"]
local iconlink = tab["iconlink"]
local wikitext = "{{User:Polskacafe/panel|" .. panelname .. "|{{" .. template .. "}}|ikona=" .. icon .. "|link=" .. iconlink .. "}}"
local astemplate = tab['astemplate']
texttoinsert = ""
if astemplate then
texttoinsert = "{{" .. content .. "}}"
else
texttoinsert = content
end
local wikitext = "{{User:Polskacafe/panel|" .. panelname .. "|" .. content .. "|ikona=" .. icon .. "|link=" .. iconlink .. "}}"
local panel = mw.html.create("div")
local panel = mw.html.create("div")
:addClass("glowna-panel")
:addClass("glowna-panel")

Wersja z 22:03, 18 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 removeUnwanted(text, alt)
	if text ~= nil then
		return mw.text.nowiki(text)
	else
		return alt
	end
end

function makeElementTable(args, num)
	local cur = {}
	cur['title'] = removeUnwanted(args['ptytuł' .. num], 'Nie podano tytułu')
	cur['text'] = removeUnwanted(args['panel' .. num], '')
	cur['num'] = num
	cur['showstatus'] = removeUnwanted(args['pwarunki' .. num], '')
	cur['icon'] = removeUnwanted(args['pikona' .. num], '')
	cur['iconlink'] = removeUnwanted(args["pikonalink" .. num], '')
	return cur
end

-- robi listę elementów wg kolumn, ignoruje - i puste
function makeElementList(args)
	-- kolumny
	local first = {}
	local second = {}
	local curRight = false
	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)
					curRight = false
				else
					cur["showstatus"] = cur["showstatus"] .. " desktoponly"
					table.insert(second, cur)
					local cur2 = makeElementTable(args, i)
					cur2["showstatus"] = cur2["showstatus"] .. " mobileonly"
					table.insert(first, cur2)
					curRight = true
				end
			end
		else break end
	end
	if curRight then
		table.remove(first, table.maxn(first))
		local maxSec = table.maxn(second)
		local ss = second[maxSec]["showstatus"]
		second[maxSec]["showstatus"] = string.gsub(ss, " desktoponly", "")
	end
	return first, second
end


function makePanel(tab)
	local panelname = tab["title"]
	local template = tab["text"]
	local mobiledesktop = tab["showstatus"]
	local icon = tab["icon"]
	local iconlink = tab["iconlink"]
	local wikitext = "{{User:Polskacafe/panel|" .. panelname .. "|{{" .. template .. "}}|ikona=" .. icon .. "|link=" .. iconlink .. "}}"
	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)
	column = mw.html.create("div")
		:addClass("glowna-kolumna")
	for k,v in ipairs(elements)
	do
		local elem = makePanel(v)
		column = column:node(elem)
	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))
		:node(makeColumn(second))
		: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