Uwaga
Serwis Wedateka jest portalem tematycznym prowadzonym przez Grupę Wedamedia. Aby zostać wedapedystą, czyli Użytkownikiem z prawem do tworzenia i edycji artykułów, wystarczy zarejestrować się na tej witrynie poprzez złożenie wniosku o utworzenie konta, co można zrobić tutaj. Liczymy na Waszą pomoc oraz wsparcie merytoryczne przy rozwoju także naszych innych serwisów tematycznych.

Moduł:Okladki

Z Wedateka, archiwa
Przejdź do nawigacji Przejdź do wyszukiwania

Generuje kod dla Szablonu {{Nowe okładki}} oraz {{Okładki}}.


function get_parameter(contents, param)
	local test_param = mw.ustring.match(contents, '|[%s]-' .. param)
	if test_param == nil then return '' else return mw.text.trim(mw.ustring.sub(test_param, mw.ustring.find( test_param, '=' ) + 1, -2) ) end
end

function regal_code(frame)
	local argsp = frame.args
	local liczba_okl = tonumber(argsp['ilość'])
	local pierwsza, usun = tonumber(argsp['pierwsza']),tonumber(argsp['pierwsza'])
	local szerokosci = argsp['szerokości']
	local wysokosci = argsp['wysokości']
	local w= tonumber(argsp['w'])
	if w == nil or w == '' then w = '90%' end
	local mode= argsp['mode']
	if mode == nil or mode == '' then mode = 'packed-hover' end
	local na_wiersz = tonumber(argsp['na wiersz'])
	if na_wiersz == nil or na_wiersz == '' then na_wiersz = 0 end
	local lista = ((argsp['lista']=='' or argsp['lista']==nil) and mw.title.getCurrentTitle().talkPageTitle.prefixedText or argsp['lista'])
	local losowo = argsp['losowo']
	if szerokosci == nil or szerokosci == '' then szerokosci = '120px' end
	if wysokosci == nil or wysokosci == '' then wysokosci = '180px' end	
	local title_lista = mw.title.new( lista )
	local lista_content = title_lista:getContent()
	mw.log(lista_content, lista_content=="")
	if lista_content == nil or lista_content=="" then return error("Brak listy z pozycjami do wyświetlenia na stronie [[" .. lista .. "]]", 0) end
	lista_content = mw.text.trim(lista_content)
	local okladki = mw.text.split( lista_content, '\n' )
	if usun ~= nil then
		while usun > 0 do
			table.remove( okladki, 1 )
			usun=usun-1
		end
	end
	if liczba_okl == nil or liczba_okl == '' then liczba_okl = #okladki end
	if losowo == 'tak' then
			math.randomseed( os.time() )
		local nr_okl = #okladki
		for i = 1, liczba_okl do
			local j = math.random(i, nr_okl)
			okladki[i], okladki[j] = okladki[j], okladki[i]
		end
	end
	while liczba_okl < #okladki do table.remove( okladki ) end
	--
	local autor_link = {}
	local autor_opis = {}
	local autor_wpis = {}
	local tytul_link = {}
	local tytul_opis = {}
	local okladka_link = {}
	local okladka_str = {}
	local indeksowa = {}
	local indeksowa_content = {}
	--uf
	for nr_okl = 1, liczba_okl do
		tytul_link[nr_okl] = mw.ustring.match(okladki[nr_okl], '%[%[([^|%]]*)')
		tytul_opis[nr_okl] = mw.ustring.match(okladki[nr_okl], '([^|%[]*)%]%]')
		if tytul_opis[nr_okl] == nil then tytul_opis[nr_okl] = '' end
		if tytul_link[nr_okl] == nil then tytul_link[nr_okl] = '' end
		indeksowa[nr_okl] = mw.title.makeTitle( '', tytul_link[nr_okl] ) --todo poka-yoke
		indeksowa_content[nr_okl] = tostring(indeksowa[nr_okl]:getContent())
		okladka_link[nr_okl] = get_parameter(indeksowa_content[nr_okl], '[Oo]kładka[%s]-=[%s]-.-[|}]')
		if okladka_link[nr_okl] == '' then  okladka_link[nr_okl] = 'Cover plsource.jpg' end
		okladka_str[nr_okl] = '|page=' .. get_parameter(indeksowa_content[nr_okl], '[Ss]trona z okładką[%s]-=[%s]-.-[|}]')
		if okladka_str[nr_okl] == nil or okladka_str[nr_okl] == '|page=' then okladka_str[nr_okl] = '' end	
		autor_wpis[nr_okl] = mw.ustring.gsub(get_parameter(indeksowa_content[nr_okl], '[Aa]utor[%s]-=[%s]-.-\n[%s]-|'), '%<.+%>', '')
		if mw.ustring.find( autor_wpis[nr_okl], '[%[%],\|]' ) or autor_wpis[nr_okl] == '' then
			autor_link[nr_okl] = ''
			autor_opis[nr_okl] = ''
		else
			autor_link[nr_okl] = 'Autor:' .. autor_wpis[nr_okl]
			autor_opis[nr_okl] = autor_wpis[nr_okl]
		end

	end
	--/uf
	local galeria_code = '\n<gallery heights=' .. wysokosci .. ' widths=' .. szerokosci .. ' perrow=' .. na_wiersz .. ' style="font-size:' .. w ..'" mode="' .. mode ..'">\n'
	for nr_okl = 1, liczba_okl do
		galeria_code = galeria_code .. 'File:' .. okladka_link[nr_okl] ..  okladka_str[nr_okl] .. '|link=' .. tytul_link[nr_okl] .. '|' .. ((autor_link[nr_okl]=='') and ((autor_wpis[nr_okl] == '') and '' or "'''" .. autor_wpis[nr_okl] .. "'''<br />") or ("'''[[" .. autor_link[nr_okl] .. '|' .. autor_opis[nr_okl] .. "]]'''<br />")) .. "[[" .. tytul_link[nr_okl] .. ((tytul_opis[nr_okl]=='') and '' or ('|' .. tytul_opis[nr_okl])) .. "]]<br />{{epub|" .. tytul_link[nr_okl] .. "|opis=nie}}''\n"
	end
	galeria_code = galeria_code .. '</gallery>\n'
	
	return frame:preprocess{ text = galeria_code }	
end


function nowe_code(frame)
	local argsp = frame.args
	local liczba_okl = tonumber(argsp['ilość'])
	local szerokosci = argsp['szerokości']
	local wysokosci = argsp['wysokości']
	if liczba_okl == nil or liczba_okl == '' then liczba_okl = 3 end
	if szerokosci == nil or szerokosci == '' then szerokosci = '140px' end
	if wysokosci == nil or wysokosci == '' then wysokosci = '200px' end	
	local szablon_nowe = mw.title.makeTitle( 'Template', 'Nowe' )
	local nowe_content = szablon_nowe:getContent()
	--nowe_content = mw.text.trim(string.gsub(string.gsub(nowe_content, '<%!%-%-[^\n]-%-%->\n', ''), '[%s\n]*%<noinclude%>.*', ''))
	--local okladki = mw.text.split( nowe_content, '\n' )
	local okladki = {}
	for pozycja in string.gmatch( nowe_content, '#(.-)\n' ) do
		table.insert( okladki, pozycja )
		if #okladki >= 20 then break end
	end

	math.randomseed( os.time() )
	local nr_okl = 20
	for i = 1, nr_okl do
		local j = math.random(i, nr_okl)
		okladki[i], okladki[j] = okladki[j], okladki[i]
	end

	local autor_link = {}
	local autor_opis = {}
	local tytul_link = {}
	local tytul_opis = {}
	local okladka_link = {}
	local okladka_str = {}
	local indeksowa = {}
	local indeksowa_content = {}
	--uf
	for nr_okl = 1, 20 do
		autor_link[nr_okl] = mw.ustring.match(okladki[nr_okl], 'Autor:[^|^%]]*')
		autor_opis[nr_okl] = mw.ustring.match(tostring(mw.ustring.match(okladki[nr_okl], 'Autor:[^%]]*')), '|[^%]]*')
		local bez_autora = tostring(mw.ustring.match(mw.ustring.gsub( okladki[nr_okl], '%[%[Autor:[^%]]*%]%]', ''), '%[%[[^%]]*%]%][^|^%]]*$'))
		tytul_link[nr_okl] = mw.ustring.sub(tostring(mw.ustring.match(bez_autora, '%[%[[^|^%]]*')), 3)
		tytul_opis[nr_okl] = mw.ustring.match(bez_autora, '|[^%]]*')
		if autor_link[nr_okl] == nil then
			autor_link[nr_okl] = ''
			autor_opis[nr_okl] = ''
		else 
			autor_link[nr_okl] = "'''[[" .. autor_link[nr_okl] 
			if autor_opis[nr_okl] == nil then
				autor_opis[nr_okl] = "]]'''," 
			else
				autor_opis[nr_okl] = autor_opis[nr_okl] .. "]]''',"
			end
		end
		if tytul_opis[nr_okl] == nil then tytul_opis[nr_okl] = '' end
		if tytul_link[nr_okl] == nil then tytul_link[nr_okl] = '' end
		indeksowa[nr_okl] = mw.title.makeTitle( '', tytul_link[nr_okl] )
		indeksowa_content[nr_okl] = tostring(indeksowa[nr_okl]:getContent())
		local test_okladki = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-okładka[%s]-=[%s]-.-|')
		if test_okladki == nil then  okladka_link[nr_okl] = '' else  okladka_link[nr_okl] = mw.text.trim(mw.ustring.sub(test_okladki, mw.ustring.find( test_okladki, '=' ) + 1, -2) ) end
		local test_strony = mw.ustring.match(indeksowa_content[nr_okl], '|[%s]-strona z okładką[%s]-=[%s]-.-|')
		if test_strony == nil then  okladka_str[nr_okl] = '' else  okladka_str[nr_okl] = '|page=' .. mw.text.trim(mw.ustring.sub(test_strony, mw.ustring.find( test_strony, '=' ) + 1, -2) ) end
		if okladka_str[nr_okl] == nil or okladka_str[nr_okl] == '|page=' then okladka_str[nr_okl] = '' end	
	end
	--/uf
	local galeria_code = '\n<gallery heights=' .. wysokosci .. ' widths=' .. szerokosci .. ' mode="packed-hover">\n'
	nr_okl = 1
	local title = mw.title.new( 'File:' .. okladka_link[1] )
	local num_okl = 0
	while num_okl < liczba_okl and nr_okl < 20  do
		if not ( okladka_link[nr_okl] == '' ) then
			title = mw.title.new( 'File:' .. okladka_link[nr_okl] )
			if title.file.width < title.file.height then
				galeria_code = galeria_code .. 'File:' .. okladka_link[nr_okl] ..  okladka_str[nr_okl] .. '|link=' .. tytul_link[nr_okl] .. '|' .. autor_link[nr_okl] .. autor_opis[nr_okl] .. "<br />[[" .. tytul_link[nr_okl] .. tytul_opis[nr_okl] .. "]]<br />{{epub|" .. tytul_link[nr_okl] .. "|opis=nie}}''\n"
				num_okl = num_okl + 1
			end
		end
		nr_okl = nr_okl + 1
	end
	galeria_code = galeria_code .. '</gallery>\n'
	
	return frame:preprocess{ text = galeria_code }
end

local p = {}

function p.nowe(frame)
	return nowe_code( frame:getParent() )
end

function p.regal(frame)
	return regal_code( frame:getParent() )
end
return p