Użycie edytuj

Moduł pozwala na wyświetlenie wybranego dnia z Kalendarium.

Opis parametrów edytuj

Standardowa składnia jest następująca:
{{#invoke:Kalendarium|dzien|nr_dnia(opcjonalny)|nr_miesiąca(opcjonalny)|zdjęcie(opcjonalny)|więcej(opcjonalny)}},

gdzie:
nr_dnia - dzień miesiąca, dla którego ma zostać wygenerowane Kalendarium,
można użyć wartości predefiniowanych dzisiaj lub jutro (domyślna wartość to dzisiaj).
nr_miesiąca - miesiąc, dla którego ma zostać wygenerowane Kalendarium, (domyślnie, przy braku wartości, bieżący miesiąc).
zdjęcie - umieszczenie tego słowa jako czwartego parametru powoduje wyszukanie (i jeżeli istnieje) i wyświetlenie miniatury zdjęcia pierwszego autora z danego wycinka Kalendarium.
więcej - wyświetla link w dolnym prawym rogu "więcej..." do strony Wikiźródła:Kalendarium.


W przypadku, gdy w Kalendarium brak jest danego dnia, zostanie wyszukany kolejny "zajęty" dzień, w przypadku gdy brak jest także jakiegokolwiek kolejnego dnia w Kalendarium zostanie wyświetlone Kalendarium ogólne dla danego miesiąca lub (w przypadku braku) pierwszy "zajęty" dzień z Kalendarium dla danego miesiąca. (zobacz ostatni przykład poniżej).

Przykład edytuj

wywołanie wynik
Dla bieżącego dnia:
{{#invoke:Kalendarium|dzien|dzisiaj}} lub
{{#invoke:Kalendarium|dzien}}
Dla bieżącego dnia:
{{#invoke:Kalendarium|dzien|dzisiaj||zdjęcie|więcej}} lub
{{#invoke:Kalendarium|dzien|||zdjęcie|więcej}} ze zdjęciem
Dla dnia jutrzejszego:
{{#invoke:Kalendarium|dzien|jutro}}
Dla dowolnego dnia bieżącego miesiąca (np. 15-tego):
{{#invoke:Kalendarium|dzien|15}}
Dla dowolnego dnia danego miesiąca (np. 14 czerwca):
{{#invoke:Kalendarium|dzien|14|06}}
Dla dowolnego dnia danego miesiąca ze zdjęciem (np. 14 czerwca):
{{#invoke:Kalendarium|dzien|14|06|zdjęcie}}
Chcemy wyświetlić Kalendarium ogólne dla bieżącego miesiąca,
(lub w przypadku braku dla 1-szego dnia miesiąca),
wpisujemy nieistniejący dzień (np. 39):
{{#invoke:Kalendarium|dzien|39}}
Chcemy wyświetlić Kalendarium ogólne dla miesiąca (np. dla marca),
wpisujemy nieistniejący dzień (np. 35 marzec):
{{#invoke:Kalendarium|dzien|35|03}}

-- Funkcja dzien zwraca jeden dzień z kalendarium
local p = {}
 
function p.dzien( frame )
	local polskie_nazwy = mw.language.new( 'pl' )
	local dzien = frame.args[1]
	local miesiac = frame.args[2]
	local zdjecie = frame.args[3]
	local more = frame.args[4]
	local dzien_liczba = 1
	local miesiac_slownie = 'styczeń'
-- dodatkowa zmienna 'dzien_liczba' aby pozostawić oryg. 'dzien' z parametru
-- do wygenerowania miesiąca (dla jutra) oraz ewent. przyszłych funkcji
-- 'miesiac_slownie' j.w.
	if dzien == 'dzisiaj' or dzien == nil or dzien == '' then
		dzien_liczba = tonumber(polskie_nazwy:formatDate( 'j','now',true ))
	elseif dzien == 'jutro' then
		dzien_liczba = tonumber(polskie_nazwy:formatDate( 'j','now + 1 day',true ))
	elseif tonumber(dzien) ~= nil then
		dzien_liczba = tonumber(dzien)
	end
	if tonumber(miesiac)  == nil or miesiac == '' then
		if dzien == 'jutro' then
			miesiac_slownie = polskie_nazwy:formatDate( 'F','now + 1 day',true )
		else
			miesiac_slownie = polskie_nazwy:formatDate( 'F','now',true )
		end
	else
		if tonumber(miesiac)>0 and tonumber(miesiac) <13 then
			miesiac_slownie = polskie_nazwy:formatDate( 'F','2000-'..miesiac..'-01',true )	
		end
	end
	
	local kalend_miesiac =  frame:expandTemplate{ title = 'Rocznica/' .. miesiac_slownie, args = {} }
	local dl = string.len( kalend_miesiac )
	local pocz = 1
	while (dzien_liczba <= 31) do
		pocz = string.find( kalend_miesiac, '%* ' .. dzien_liczba .. ' ')
		if pocz ~= nil then break end
		dzien_liczba = dzien_liczba + 1
	end
	if pocz==nil then
		pocz = 1
	end
	local kalend_dzien = string.sub( kalend_miesiac, pocz)
	local kon = string.find( kalend_dzien, '\n%* ',2)
	if kon==nil then
		kon = string.len( kalend_dzien )
	end
	kalend_dzien = string.sub( kalend_dzien, 1, kon-1)
	--dodaje zejęcie pierwszego autora w danym okresie kalendarium (jeżeli istnieje)
	local zdjecie_code = ''
	if zdjecie == 'zdjęcie' then
		local autor_zdjecie = mw.ustring.match( kalend_dzien, 'Autor:[^|^%]]*')
		if autor_zdjecie ~= nil then 
			local autor_link = '[[' .. autor_zdjecie .. '|' .. mw.ustring.gsub(autor_zdjecie, 'Autor:', '') .. ']]'
			local autora = mw.title.makeTitle( '', autor_zdjecie )
			local autora_content = autora:getContent()
			local test_zdjecia = mw.ustring.match(autora_content, '|[%s]-Grafika[%s]-=[%s]-.-|')
			if test_zdjecia == nil then
				zdjecia_link = '' 
			--	jeżeli nie ma zdjęcia w parametrze na stronie Autora spróbuj pobrać zdjęcie z Wikidata
				local itemid = mw.wikibase.getEntityIdForTitle( autor_zdjecie )
			    if itemid then
					local item = mw.wikibase.getEntityObject( itemid )
					if item then
						local prop = item:formatPropertyValues('P18').value
						if prop ~= '' then
							zdjecia_link = prop
						end
					end
				end
			else 
				zdjecia_link = mw.text.trim(mw.ustring.sub(test_zdjecia, mw.ustring.find( test_zdjecia, '=' ) + 1, -2) ) 
			end
			if zdjecia_link ~= nil and zdjecia_link ~= '' then
				zdjecie_code = '\n<gallery heights=150px widths=105px mode="packed-hover" style="float:right;">\n'
				zdjecie_code = zdjecie_code .. 'File:' .. zdjecia_link .. '|link=' .. autor_zdjecie .. '|' .. autor_link .. "\n"
				zdjecie_code = zdjecie_code .. '</gallery>\n'
			end
		end
	end
	if more == 'więcej' then
		kalend_dzien = kalend_dzien .. '{{clear}}\n<div style="font-size:85%;text-align:right">[[Wikiźródła:Kalendarium#' .. mw.ustring.upper(mw.ustring.sub(miesiac_slownie,1,1)) .. mw.ustring.sub(miesiac_slownie,2) .. '|więcej...]]</div>'
	end
	return frame:preprocess{ text =  zdjecie_code .. kalend_dzien} 
end
 
return p