Modul:Denní přehled

Z Wikizpráv

Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Denní přehled

-- @brief
--  Backend for {{Denní přehled}}.
-- 
-- @author
--  [[meta:User:Danny B.]]
local _module = {}
----------------------------------------


local DateTime = require( "Module:DateTime" )
local Error = require( "Module:Error" )
local Svatek = require( "Module:Svátek" )


function _module.print( frame )
	
	local titleObject = mw.title.getCurrentTitle()
	
	if titleObject.namespace ~= 0 then
		return
	end
	
	local output = ""
	local errorData = { template = "Denní přehled" }
	
	local day, month, year, form = DateTime.parseVerbalDate( titleObject.text )
	
	if form ~= "DMY" then
		errorData.text = "Název „" .. titleObject.text .. "“ neodpovídá názvu denního přehledu."
		errorData.category = "Zkontrolovat název stránky s vloženou šablonou " .. errorData.template
		errorData.template = nil
		output = output .. Error.getText( errorData )
	end
	
	if output == "" then
		
		local dailyOverview = {
			editintro = "Wikizprávy:Kostry stránek/Denní přehled/návod",
			preload = "Wikizprávy:Kostry stránek/Denní přehled"
		}
		
		local holidayDate = string.sub( titleObject.text, 1, -6 )
		
		local timestamp = DateTime.getTimestamp( { day = day, month = month, year = year } )
		local dow = DateTime.days[os.date( "*t", os.time( { day = day, month = month, year = year } ) ).wday].name
		
		local dayPre = os.date( "*t", os.time( { day = day - 1, month = month, year = year } ) )
		local dayPost = os.date( "*t", os.time( { day = day + 1, month = month, year = year } ) )
		local verbalDatePre = mw.ustring.format( "%d. %s %d", dayPre.day, DateTime.months[dayPre.month].name, dayPre.year )
		local verbalDatePost = mw.ustring.format( "%d. %s %d", dayPost.day, DateTime.months[dayPost.month].name, dayPost.year )
		
		local pagePre = ""
		local pagePost = ""
		
		timestamp = 100000000000000 - tonumber( timestamp )
		
		output = output .. mw.ustring.format( "{{DISPLAYTITLE:<time datetime=\"%04d-%02d-%02d\">%s</time>}}", year, month, day, titleObject.text )
		output = output .. mw.ustring.format( "[[Kategorie:%s| ]]", titleObject.text )
		output = output .. mw.ustring.format( "[[Kategorie:Denní přehledy| %d]]", timestamp )
		
		local pageText = titleObject:getContent()
		
		if pageText then
			local tests = {
				{
					"\n%*",
					"bez zpráv"
				}, {
					"== Svátky ==\n{{Svátek}}",
					"s nejednotným zápisem svátků"
				}, {
					"\n== *Z domova *==\n",
					"bez sekce Z domova"
				}, {
					"\n== *Ze světa *==\n",
					"bez sekce Ze světa"
				}, {
					"\n== *Věda a technika *==\n",
					"bez sekce Věda a technika"
				}, {
					"\n== *Kultura *==\n",
					"bez sekce Kultura"
				}, {
					"\n== *Ekonomika *==\n",
					"bez sekce Ekonomika"
				}, {
					"\n== *Sport *==\n",
					"bez sekce Sport"
				}, {
					"\n== *Úmrtí *==\n",
					"bez sekce Úmrtí"
				}, {
					"\n== *Zdroje *==\n",
					"bez sekce Zdroje"
				}
			}
			for _, test in ipairs( tests ) do
				if not mw.ustring.match( pageText, test[1] ) then
					output = output .. mw.ustring.format( "[[Kategorie:Monitoring:Denní přehledy %s| %d]]", test[2], timestamp )
				end
			end
		end
		
		titleObject = mw.title.new( verbalDatePre )
		-- expensive++
		
		pagePre = mw.ustring.format( "[[%s|◄ %s]]", verbalDatePre, verbalDatePre )
		if not titleObject.exists then
			pagePre = pagePre .. " <span title=\"Založit denní přehled pro " .. verbalDatePre .. "\">[" ..
				titleObject:fullUrl({
					action = "edit",
					editintro = dailyOverview.editintro,
					preload = dailyOverview.preload,
					summary = verbalDatePre
				}) ..
				" ✍]</span>"
		end
		
		titleObject = mw.title.new( verbalDatePost )
		-- expensive++
		
		if not titleObject.exists then
			pagePost = pagePost .. "<span title=\"Založit denní přehled pro " .. verbalDatePost .. "\">[" ..
				titleObject:fullUrl({
					action = "edit",
					editintro = dailyOverview.editintro,
					preload = dailyOverview.preload,
					summary = verbalDatePost
				}) ..
				" ✍]</span> "
		end
		pagePost = mw.ustring.format( "%s[[%s|%s ►]]", pagePost, verbalDatePost, verbalDatePost )
		
		output = output .. "<div id=\"DailyNewsHeader\" class=\"plainlinks\">\n"
		output = output .. mw.ustring.format( "%s • %s • %s\n", pagePre, dow, pagePost )
		output = output .. "__TOC__\n"
		output = output .. "</div>"
		
		if pageText and not mw.ustring.match( pageText, "== *Svátky *==" ) then
			output = output .. "\n\n== Svátky ==\n"
			output = output .. ( Svatek.namedayTable[holidayDate] and "; Jmeniny\n: " .. Svatek.namedayTable[holidayDate] .. "\n" or "" )
			output = output .. ( Svatek.holidayTable[holidayDate] and "; Státní svátky a významné dny\n:" .. Svatek.holidayTable[holidayDate] .. "\n" or "" )
			output = mw.ustring.gsub( output, "Denní přehledy s nejednotným zápisem svátků", "Denní přehledy s automatickým zápisem svátků" )
		end
		
	end
	
	output = mw.text.trim( output )
	
	output = frame:preprocess( output )
	
	return output
	
end


----------------------------------------
return _module