<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ACurrent_events_calendar_with_day_links</id>
	<title>Module:Current events calendar with day links - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ACurrent_events_calendar_with_day_links"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Current_events_calendar_with_day_links&amp;action=history"/>
	<updated>2026-05-11T22:21:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Current_events_calendar_with_day_links&amp;diff=135878&amp;oldid=prev</id>
		<title>imported&gt;Izno: remove bold tags here, remove nbsp there</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Current_events_calendar_with_day_links&amp;diff=135878&amp;oldid=prev"/>
		<updated>2021-11-01T01:47:16Z</updated>

		<summary type="html">&lt;p&gt;remove bold tags here, remove nbsp there&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module renders the calendars seen on [[Portal:Current events/Calendars]].&lt;br /&gt;
-- The code is based on [[Module:Current events calendar]].&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Incoming expected variables:&lt;br /&gt;
		frame.args.year = Integer value for year&lt;br /&gt;
		frame.args.month = Integer value for month, 1 based.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeWikilink(link, display)&lt;br /&gt;
	if display then&lt;br /&gt;
		return string.format(&amp;#039;[[%s|%s]]&amp;#039;, link, display)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&amp;#039;[[%s]]&amp;#039;, link)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDateStuff(argsDate)&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Note: This function takes advantage of the formatDate&amp;#039;s second argument to&lt;br /&gt;
	create data for the archival calendars. If the second arg (argsDate) is nil,&lt;br /&gt;
	then formatDate assumes the current date/time.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
	-- Gets date data.&lt;br /&gt;
	local dateStuff = {}&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	dateStuff.argsDate = argsDate&lt;br /&gt;
	--Year&lt;br /&gt;
	local year = lang:formatDate(&amp;#039;Y&amp;#039;, argsDate)&lt;br /&gt;
	year = tonumber(year)&lt;br /&gt;
	dateStuff.year = year&lt;br /&gt;
	-- Month&lt;br /&gt;
	local month = lang:formatDate(&amp;#039;F&amp;#039;, argsDate)&lt;br /&gt;
	dateStuff.month = month&lt;br /&gt;
	-- Month and year&lt;br /&gt;
	local monthAndYear = lang:formatDate(&amp;#039;F Y&amp;#039;, argsDate)&lt;br /&gt;
	local firstOfMonth = lang:formatDate(&amp;#039;01-m-Y&amp;#039;, argsDate)&lt;br /&gt;
	dateStuff.monthAndYear = monthAndYear&lt;br /&gt;
	-- Previous month and year&lt;br /&gt;
	dateStuff.previousMonthAndYear = lang:formatDate(&amp;#039;F Y&amp;#039;, firstOfMonth .. &amp;#039; -1 month&amp;#039;)&lt;br /&gt;
	-- Next month and year&lt;br /&gt;
	dateStuff.nextMonthAndYear = lang:formatDate(&amp;#039;F Y&amp;#039;, firstOfMonth .. &amp;#039; +1 month&amp;#039;)&lt;br /&gt;
	-- Day&lt;br /&gt;
	local day = lang:formatDate(&amp;#039;j&amp;#039;, argsDate)&lt;br /&gt;
	day = tonumber(day)&lt;br /&gt;
	dateStuff.day = day&lt;br /&gt;
	-- Days in month&lt;br /&gt;
	local daysInMonth = lang:formatDate(&amp;#039;j&amp;#039;, firstOfMonth .. &amp;#039; +1 month -1 day&amp;#039;)&lt;br /&gt;
	daysInMonth = tonumber(daysInMonth)&lt;br /&gt;
	dateStuff.daysInMonth = daysInMonth&lt;br /&gt;
	-- Weekday of the first day of the month&lt;br /&gt;
	local firstWeekday = lang:formatDate(&amp;#039;w&amp;#039;, firstOfMonth) -- Sunday = 0, Saturday = 6&lt;br /&gt;
	firstWeekday = tonumber(firstWeekday)&lt;br /&gt;
	firstWeekday = firstWeekday + 1 -- Make compatible with Lua tables. Sunday = 1, Saturday = 7.&lt;br /&gt;
	dateStuff.firstWeekday = firstWeekday&lt;br /&gt;
	return dateStuff&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeDayStrings(dateStuff)&lt;br /&gt;
	local format = string.format&lt;br /&gt;
	local calStrings = {}&lt;br /&gt;
	local currentDay = dateStuff.day&lt;br /&gt;
	local currentMonth = dateStuff.month&lt;br /&gt;
	local currentYear = dateStuff.year&lt;br /&gt;
	for day = 1, dateStuff.daysInMonth do&lt;br /&gt;
		table.insert(calStrings, format(&lt;br /&gt;
			&amp;quot;[[Portal:Current events/%d %s %d|&amp;amp;nbsp;%d&amp;amp;nbsp;]]&amp;quot;,&lt;br /&gt;
			currentYear,&lt;br /&gt;
			currentMonth,&lt;br /&gt;
			day,&lt;br /&gt;
			day&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	return calStrings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function export(dayStrings, dateStuff)&lt;br /&gt;
	-- Generates the calendar HTML.&lt;br /&gt;
	local monthAndYear = dateStuff.monthAndYear&lt;br /&gt;
	local root = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	root&lt;br /&gt;
		:addClass(&amp;#039;current-events-calendar-days&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
		-- Headings&lt;br /&gt;
		:tag(&amp;#039;caption&amp;#039;)&lt;br /&gt;
			:wikitext(makeWikilink(&amp;#039;Portal:Current events/&amp;#039; .. monthAndYear, monthAndYear))&lt;br /&gt;
			:done()&lt;br /&gt;
&lt;br /&gt;
	-- Day of week headings&lt;br /&gt;
	local dayHeadingRow = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	local weekdays = {&amp;#039;S&amp;#039;, &amp;#039;M&amp;#039;, &amp;#039;T&amp;#039;, &amp;#039;W&amp;#039;, &amp;#039;T&amp;#039;, &amp;#039;F&amp;#039;, &amp;#039;S&amp;#039;}&lt;br /&gt;
	for i, weekday in ipairs(weekdays) do&lt;br /&gt;
		dayHeadingRow:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:wikitext(weekday)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Days&lt;br /&gt;
	local cellCount = 1 - dateStuff.firstWeekday -- Tracks the number of day cells. Negative values used for initial blank cells.&lt;br /&gt;
	while cellCount &amp;lt; #dayStrings do -- Weekly rows&lt;br /&gt;
		local weeklyRow = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		for i = 1, 7 do -- Always make 7 cells.&lt;br /&gt;
			cellCount = cellCount + 1&lt;br /&gt;
			local dayString = dayStrings[cellCount] or &amp;#039;&amp;#039; -- Use a blank cell if there is no corresponding dateString&lt;br /&gt;
			weeklyRow:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:wikitext(dayString)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
		args = { src = &amp;#039;Module:Current events calendar with day links/styles.css&amp;#039; }&lt;br /&gt;
	} .. tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local argsDate = nil&lt;br /&gt;
	if (frame and frame.args and frame.args.year and frame.args.month) then&lt;br /&gt;
		-- If a date is passed in, assume that the display page is an Archive page.&lt;br /&gt;
		-- If no date passed in, assume that the display page is the current Current Events page&lt;br /&gt;
		argsDate = frame.args.year .. &amp;quot;-&amp;quot; .. frame.args.month .. &amp;quot;-01&amp;quot; -- Construct a date, YYY-M-DD format.&lt;br /&gt;
	end&lt;br /&gt;
	local dateStuff = getDateStuff(argsDate)&lt;br /&gt;
	local dayStrings = makeDayStrings(dateStuff)&lt;br /&gt;
	return export(dayStrings, dateStuff)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Izno</name></author>
	</entry>
</feed>