Moduł:Grafika: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
M
(+autogalerie i naprawa zaklęć gendel)
 
Linia 3: Linia 3:
local linki = require('Moduł:Linki')
local linki = require('Moduł:Linki')
local p = {}
local p = {}

local function formatFile(smwResult, args, makeStars, defSize)
local defSize = defSize or 350
local podpis = smwResult.printouts['Ma podpis pliku'][1] or ''
local podpisNielink = linki._linksToPlain(podpis)
local autor = smwResult.printouts['Ma opis autorstwa'][1] or ''
local rozmiar = args['rozmiar'] or defSize .. 'x' .. defSize .. 'px'
local s = '<div class="center ' .. (args.contClass or '') ..
'" style="font-size: 0.9em; ' .. (args.contStyle or '') .. '">[[' ..
smwResult.fulltext .. '|center|' .. rozmiar .. '|' .. podpisNielink .. ']]'
if autor or podpis ~= '' then
s = s .. '<div style="margin-top: 10px">' .. podpis
if autor then
if podpis ~= '' then s = s .. '<br>' end
local forGender = (smwResult.printouts['Ma autora z Nonsensopedii'][1] or {}).fulltext or ''
s = s .. '<i>' .. mw.language.new('pl'):gender(forGender, 'Autor: ', 'Autorka: ')
.. autor .. '</i>'
end
s = s .. '</div>'
end
if makeStars then
local konkurs = args['konkurs'] or ''
local k_width = args['rozmiar_gwiazdek'] or '250px'
s = s .. '<div style="margin: 0.5em auto 0 auto; max-width: ' .. k_width .. ';">{{#ratepage:' ..
smwResult.fulltext .. '|' .. konkurs .. '|' .. k_width .. '}}</div>'
end
s = s .. '</div>'
return s
end


function p.grafika(frame)
function p.grafika(frame)
Linia 17: Linia 52:
'[[' .. file .. ']]',
'[[' .. file .. ']]',
'?Ma podpis pliku',
'?Ma podpis pliku',
'?Ma opis autorstwa'
'?Ma opis autorstwa',
'?Ma autora z Nonsensopedii'
}
}
if #smwResult.results ~= 1 then
local podpis = args['2'] or args['podpis'] or nil
error('Nie znaleziono pliku ' .. file)
if not podpis then
if #smwResult.results == 1 then
podpis = smwResult.results[1].printouts['Ma podpis pliku'][1] or ''
else
podpis = ''
end
end
end
local podpisNielink = linki._linksToPlain(podpis)
local s = formatFile(smwResult.results[1], args, true, 350)
local autor = nil
return frame:preprocess(s)
if #smwResult.results == 1 then
end
autor = smwResult.results[1].printouts['Ma opis autorstwa'][1]

end
function p.galeria(frame)
local args = {
'?Ma podpis pliku',
'?Ma opis autorstwa',
'?Ma autora z Nonsensopedii',
-- overridable args to SMW
limit = 500
}
local imgSize = 200
-- apply user's args
local rozmiar = args['rozmiar'] or '350x350px'
for k, v in pairs(tools.getArgs(frame)) do
local s = '<div class="center" style="font-size: 0.9em">[[' .. file ..
if k == 'rozmiar' then
'|center|' .. rozmiar .. '|' .. podpisNielink .. ']]'
imgSize = tonumber(v)
elseif mw.ustring.find(v, '^%?') == nil then
if autor or podpis ~= '' then
if tonumber(k) == nil then
s = s .. '<div style="margin-top: 10px">'
args[k] = v
else
table.insert(args, v)
end
end
end
end
s = s .. podpis
local smwResult = mw.smw.getQueryResult(args)
if autor then
local s = '<div class="n-autogallery">'
if podpis ~= '' then s = s .. '<br>' end
local metaArgs = {
s = s .. '<i>' .. mw.language.new('pl'):gender(autor, 'Autor: ', 'Autorka: ')
contStyle = 'width: ' .. math.floor(imgSize * 1.1) .. 'px;',
.. autor .. '</i>'
contClass = 'n-autogallery-elem',
end
}
for _, res in ipairs(smwResult.results) do
if autor or podpis ~= '' then
s = s .. '</div>'
s = s .. formatFile(res, metaArgs, false, imgSize)
end
end
s = s .. '</div>'
local konkurs = args['konkurs'] or ''
local k_width = args['rozmiar_gwiazdek'] or '250px'
s = s .. '<div style="margin: 0.5em auto 0 auto; max-width: ' .. k_width .. ';">{{#ratepage:' ..
file .. '|' .. konkurs .. '|' .. k_width .. '}}</div></div>'
return frame:preprocess(s)
return frame:preprocess(s)
end
end

Aktualna wersja na dzień 17:58, 17 sty 2022

Moduł dla {{Grafika}}.


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

local function formatFile(smwResult, args, makeStars, defSize)
	local defSize = defSize or 350
	local podpis = smwResult.printouts['Ma podpis pliku'][1] or ''
	local podpisNielink = linki._linksToPlain(podpis)
	local autor = smwResult.printouts['Ma opis autorstwa'][1] or ''
	
	local rozmiar = args['rozmiar'] or defSize .. 'x' .. defSize .. 'px'
	local s = '<div class="center ' .. (args.contClass or '') .. 
		'" style="font-size: 0.9em; ' .. (args.contStyle or '') .. '">[[' .. 
		smwResult.fulltext .. '|center|' .. rozmiar .. '|' .. podpisNielink .. ']]'
		
	if autor or podpis ~= '' then
		s = s .. '<div style="margin-top: 10px">'  .. podpis
	
		if autor then
			if podpis ~= '' then s = s .. '<br>' end
			local forGender = (smwResult.printouts['Ma autora z Nonsensopedii'][1] or {}).fulltext or ''
			s = s .. '<i>' .. mw.language.new('pl'):gender(forGender, 'Autor: ', 'Autorka: ')
				.. autor .. '</i>'
		end
		
		s = s .. '</div>'
	end
	
	if makeStars then
		local konkurs = args['konkurs'] or ''
		local k_width = args['rozmiar_gwiazdek'] or '250px'
		s = s .. '<div style="margin: 0.5em auto 0 auto; max-width: ' .. k_width .. ';">{{#ratepage:' ..
			smwResult.fulltext .. '|' .. konkurs .. '|' .. k_width .. '}}</div>'
	end
	
	s = s .. '</div>'
	return s
end

function p.grafika(frame)
	local args = tools.getArgs(frame)
	local file = matma._chooseRandom( args['1'] or '' )
	if file == nil or file == '' then return '' end
	
	local fileLowerPrefix = mw.ustring.sub(mw.ustring.lower(file), 1, 5)
	if fileLowerPrefix ~= 'plik:' and fileLowerPrefix ~= 'file:' then
		file = 'Plik:' .. file
	end
	
	local smwResult = mw.smw.getQueryResult{
		'[[' .. file .. ']]',
		'?Ma podpis pliku',
		'?Ma opis autorstwa',
		'?Ma autora z Nonsensopedii'
	}
	
	if #smwResult.results ~= 1 then
		error('Nie znaleziono pliku ' .. file)
	end
	
	local s = formatFile(smwResult.results[1], args, true, 350)
	return frame:preprocess(s)
end

function p.galeria(frame)
	local args = {
		'?Ma podpis pliku',
		'?Ma opis autorstwa',
		'?Ma autora z Nonsensopedii',
		-- overridable args to SMW
		limit = 500
	}
	local imgSize = 200
	
	-- apply user's args
	for k, v in pairs(tools.getArgs(frame)) do
		if k == 'rozmiar' then
			imgSize = tonumber(v)
		elseif mw.ustring.find(v, '^%?') == nil then
			if tonumber(k) == nil then
				args[k] = v
			else
				table.insert(args, v)
			end
		end
	end
	
	local smwResult = mw.smw.getQueryResult(args)
	local s = '<div class="n-autogallery">'
	local metaArgs = {
		contStyle = 'width: ' .. math.floor(imgSize * 1.1) .. 'px;',
		contClass = 'n-autogallery-elem',
	}
	
	for _, res in ipairs(smwResult.results) do
		s = s .. formatFile(res, metaArgs, false, imgSize)
	end
	
	s = s .. '</div>'
	return frame:preprocess(s)
end

return p