Moduł:Sterowanie SG

Z Nonsensopedii, polskiej encyklopedii humoru

local tools = require('Moduł:Narzędzia')
local p = {}

local settings = {}

local function mapTitlesToReadable(s, p1, p2)
	local split = mw.text.split(s, '#', true)
	local result = ''
	for i, v in ipairs(split) do
		local title = mw.text.trim(v)
		if v ~= '' then
			result = result .. '\n** [[' .. (p1 or '') .. title .. ']]'
			if p2 ~= nil then
				result = result .. ' ([[' .. p2 .. title .. ']])'
			end
		end
	end
	
	return result
end

local function parseSettings(frame)
	local args = tools.getArgs(frame)
	
	-- artykuł
	local amode = args['art_mode'] or ''
	local aset = {}
	
	if amode == 'konkurs' then
		aset.template = args['art_konkurs'] or 'Brak szablonu'
		aset.title = args['art_title'] or 'Konkurs'
		aset.readable = '[[' .. aset.template .. ']]'
	elseif amode == 'anm' then
		aset.template = 'ANM główna'
		aset.arg = args['art_medal'] or ''
		aset.title = args['art_title'] or 'Artykuł na medal'
		aset.readable = '[[' .. aset.arg .. ']] ([[Szablon:ANM/' .. aset.arg .. ']])'
	elseif amode == 'promowane' then
		aset.template = 'Promowane'
		aset.arg = args['art_promowane'] or 'NIE PODANO TYTUŁU ARTYKUŁU'
		aset.title = args['art_title'] or 'Promowane'
		aset.readable = mapTitlesToReadable(aset.arg, '', 'Szablon:Promowane/')
	else -- zakładamy losowy anm
		amode = 'losowy anm'
		aset.template = 'ANM główna'
		aset.title = args['art_title'] or 'Artykuł na medal'
		aset.readable = 'jak losowy to losowy, nie?'
	end
	settings.amode = amode
	settings.art = aset
	
	-- grafika
	local gmode = args['grafika_mode'] or ''
	local gset = {}
	
	if gmode == 'konkurs' then
		gset.template = args['grafika_konkurs'] or 'Brak szablonu'
		gset.title = args['grafika_title'] or 'Konkurs'
		gset.readable = '[[' .. gset.template .. ']]'
	elseif gmode == 'gnm' then
		gset.template = 'Grafika główna'
		gset.arg = args['grafika'] or ''
		gset.title = args['grafika_title'] or 'Grafika na medal'
		gset.readable = mapTitlesToReadable(gset.arg, ':Plik:')
	elseif gmode == 'inna grafika' then
		gset.template = 'Grafika główna'
		gset.arg = args['grafika'] or ''
		gset.title = args['grafika_title'] or 'Dobra grafika'
		gset.readable = mapTitlesToReadable(gset.arg, ':Plik:')
	else -- zakładamy losową grafikę
		gmode = 'losowa grafika'
		gset.template = 'Grafika główna'
		gset.title = args['grafika_title'] or 'Losowa grafika'
		gset.readable = 'jak losowa to losowa, nie?'
	end
	settings.gmode = gmode
	settings.grafika = gset
end

local function infoPanel(frame)
	local wt = '== Obecne ustawienia ==\n' ..
		'=== Wyróżniony artykuł ===\n' ..
		'* Tryb: ' .. settings.amode .. '\n' ..
		'* Więcej informacji: ' .. settings.art.readable .. '\n' ..
		'* Tytuł sekcji: ' .. settings.art.title .. '\n' ..
		
		'=== Wyróżniona grafika ===\n' ..
		'* Tryb: ' .. settings.gmode .. '\n' ..
		'* Więcej informacji: ' .. settings.grafika.readable .. '\n' ..
		'* Tytuł sekcji: ' .. settings.grafika.title .. '\n'
	return frame:preprocess(wt)
end

local function saveSettings(settingsMap)
	for k, v in pairs(settingsMap) do
		mw.smw.subobject( {
			['Steruje stroną'] = 'Strona główna',
			['Steruje sekcją'] = k,
			['Ma szablon'] = v.template,
			['Ma argument'] = v.arg or '',
			['Ma tytuł sekcji'] = v.title
		} )
	end
end

function p.main(frame)
	parseSettings(frame)
	saveSettings( {
		['artykuł'] = settings.art,
		['grafika'] = settings.grafika
	} )
	return infoPanel(frame)
end

return p