Uwaga |
---|
Moduł:Okladki
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