<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://wiki.nebeshtar.com/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3ACurrent_events_calendar</id>
	<title>پودمان:Current events calendar - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nebeshtar.com/index.php?action=history&amp;feed=atom&amp;title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86%3ACurrent_events_calendar"/>
	<link rel="alternate" type="text/html" href="https://wiki.nebeshtar.com/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Current_events_calendar&amp;action=history"/>
	<updated>2026-05-05T18:22:39Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.nebeshtar.com/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Current_events_calendar&amp;diff=1013&amp;oldid=prev</id>
		<title>محمد: صفحه‌ای تازه حاوی «-- This module renders the calendar seen on Portal:Current events.  -- 	Incoming expected variables: 		frame.args.year = Integer value for year 		frame.args.month = Integer value for month, 1 based. --  local p = {} local num_con = require(&#039;Module:Numeral converter&#039;).convert  local function makeWikilink(link, display) 	if display then 		return string.format(&#039;%s&#039;, link, display) 	else 		return string.format(&#039;%s&#039;, link...» ایجاد کرد</title>
		<link rel="alternate" type="text/html" href="https://wiki.nebeshtar.com/index.php?title=%D9%BE%D9%88%D8%AF%D9%85%D8%A7%D9%86:Current_events_calendar&amp;diff=1013&amp;oldid=prev"/>
		<updated>2025-01-24T15:35:41Z</updated>

		<summary type="html">&lt;p&gt;صفحه‌ای تازه حاوی «-- This module renders the calendar seen on &lt;a href=&quot;/index.php?title=Portal:Current_events&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Portal:Current events (صفحه وجود ندارد)&quot;&gt;Portal:Current events&lt;/a&gt;.  --[[ 	Incoming expected variables: 		frame.args.year = Integer value for year 		frame.args.month = Integer value for month, 1 based. --]]  local p = {} local num_con = require(&amp;#039;Module:Numeral converter&amp;#039;).convert  local function makeWikilink(link, display) 	if display then 		return string.format(&amp;#039;&lt;a href=&quot;/index.php?title=%25s&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;%s (صفحه وجود ندارد)&quot;&gt;%s&lt;/a&gt;&amp;#039;, link, display) 	else 		return string.format(&amp;#039;&lt;a href=&quot;/index.php?title=%25s&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;%s (صفحه وجود ندارد)&quot;&gt;%s&lt;/a&gt;&amp;#039;, link...» ایجاد کرد&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module renders the calendar seen on [[Portal:Current events]].&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;
local num_con = require(&amp;#039;Module:Numeral converter&amp;#039;).convert&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;
	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;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	local firstOfMonth = num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;01-m-Y&amp;#039;, argsDate))&lt;br /&gt;
	return {&lt;br /&gt;
		argsDate = argsDate,&lt;br /&gt;
		year = tonumber(num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;Y&amp;#039;, argsDate))),&lt;br /&gt;
		month = lang:formatDate(&amp;#039;F&amp;#039;, argsDate),&lt;br /&gt;
		monthAndYear = num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;F Y&amp;#039;, argsDate)),&lt;br /&gt;
		previousMonthAndYear = num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;F Y&amp;#039;, firstOfMonth .. &amp;#039; -1 month&amp;#039;)),&lt;br /&gt;
		nextMonthAndYear = num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;F Y&amp;#039;, firstOfMonth .. &amp;#039; +1 month&amp;#039;)),&lt;br /&gt;
		day = tonumber(num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;j&amp;#039;, argsDate))),&lt;br /&gt;
		daysInMonth = tonumber(num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;j&amp;#039;, firstOfMonth .. &amp;#039; +1 month -1 day&amp;#039;))),&lt;br /&gt;
		-- Weekday of the first day of the month&lt;br /&gt;
		-- Make compatible with Lua tables so we add 1. Sunday = 1, Saturday = 7.&lt;br /&gt;
		firstWeekday = tonumber(num_con(&amp;quot;en&amp;quot;, lang:formatDate(&amp;#039;w&amp;#039;, firstOfMonth))) + 1&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isLinkworthy(day, currentDay)&lt;br /&gt;
	-- Returns true if the calendar day should be linked, and false if not. Days&lt;br /&gt;
	-- should be linked if they are the current day or if they are within the six&lt;br /&gt;
	-- preceding days, as that is the number of items on the current events page.&lt;br /&gt;
	return currentDay - 6 &amp;lt;= day and day &amp;lt;= currentDay&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeDayStrings(dateStuff)&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;
		if dateStuff.argsDate or isLinkworthy(day, currentDay) then&lt;br /&gt;
			table.insert(calStrings, string.format(&lt;br /&gt;
				&amp;quot;[[#%d %s %d|%d]]&amp;quot;,&lt;br /&gt;
				day,&lt;br /&gt;
				currentMonth,&lt;br /&gt;
				currentYear,&lt;br /&gt;
				day&lt;br /&gt;
			))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(calStrings, tostring(day))&lt;br /&gt;
		end&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&amp;#039;)&lt;br /&gt;
		-- Make the table-layout-based Archive pages look good. When the Archives&lt;br /&gt;
		-- have been converted to a grid-based layout, this logic can be removed,&lt;br /&gt;
		-- and the corressponding CSS margin attribute can be simplified.&lt;br /&gt;
		:addClass(dateStuff.argsDate and &amp;#039;current-events-calendar-archive&amp;#039;)&lt;br /&gt;
		-- Headings&lt;br /&gt;
		:tag(&amp;#039;caption&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;noprint&amp;#039;)&lt;br /&gt;
				:wikitext(makeWikilink(&lt;br /&gt;
					&amp;#039;درگاه:رویدادهای کنونی/&amp;#039; .. num_con(&amp;quot;fa&amp;quot;, dateStuff.previousMonthAndYear),&lt;br /&gt;
					&amp;#039;▶&amp;#039;&lt;br /&gt;
				))&lt;br /&gt;
				:done()&lt;br /&gt;
			:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:wikitext(makeWikilink(&lt;br /&gt;
					&amp;#039;درگاه:رویدادهای کنونی/&amp;#039; .. num_con(&amp;quot;fa&amp;quot;, monthAndYear),&lt;br /&gt;
					num_con(&amp;quot;fa&amp;quot;, monthAndYear)&lt;br /&gt;
				))&lt;br /&gt;
				:done()&lt;br /&gt;
			:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;noprint&amp;#039;)&lt;br /&gt;
				:wikitext(makeWikilink(&lt;br /&gt;
					&amp;#039;درگاه:رویدادهای کنونی/&amp;#039; .. num_con(&amp;quot;fa&amp;quot;, dateStuff.nextMonthAndYear),&lt;br /&gt;
					&amp;#039;◀&amp;#039;&lt;br /&gt;
				))&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;ی&amp;#039;, &amp;#039;د&amp;#039;, &amp;#039;س&amp;#039;, &amp;#039;چ&amp;#039;, &amp;#039;پ&amp;#039;, &amp;#039;ج&amp;#039;, &amp;#039;ش&amp;#039;}&lt;br /&gt;
	for _, weekday in ipairs(weekdays) do&lt;br /&gt;
		dayHeadingRow:tag(&amp;#039;th&amp;#039;):wikitext(weekday)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Days&lt;br /&gt;
	-- Tracks the number of day cells. Negative values used for initial blank cells.&lt;br /&gt;
	local cellCount = 1 - dateStuff.firstWeekday&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;
			-- Use a blank cell if there is no corresponding dateString&lt;br /&gt;
			local dayString = dayStrings[cellCount] or &amp;#039;&amp;#039;&lt;br /&gt;
			weeklyRow:tag(&amp;#039;td&amp;#039;):wikitext(num_con(&amp;quot;fa&amp;quot;, dayString))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Footer&lt;br /&gt;
	if not dateStuff.argsDate then -- No footer necessary on Archive pages.&lt;br /&gt;
		root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;current-events-calendar-footer&amp;#039;)&lt;br /&gt;
		    :addClass(&amp;#039;noprint&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:attr(&amp;#039;colspan&amp;#039;, &amp;#039;7&amp;#039;)&lt;br /&gt;
				:wikitext(makeWikilink(&lt;br /&gt;
					&amp;#039;درگاه:رویدادهای کنونی/&amp;#039; .. num_con(&amp;quot;fa&amp;quot;, monthAndYear),&lt;br /&gt;
					&amp;#039;رویدادهای بیشتری از &amp;#039; .. num_con(&amp;quot;fa&amp;quot;, monthAndYear) .. &amp;#039; میلادی ...&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
				))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return 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;
		-- Construct a date, YYY-M-DD format.&lt;br /&gt;
		argsDate = frame.args.year .. &amp;quot;-&amp;quot; .. frame.args.month .. &amp;quot;-01&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local dateStuff = getDateStuff(argsDate)&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
		args = { src = &amp;#039;Module:Current events calendar/styles.css&amp;#039; }&lt;br /&gt;
	} .. export(makeDayStrings(dateStuff), dateStuff)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>محمد</name></author>
	</entry>
</feed>