#set ( $callingPageData = $_XPathTool.selectSingleNode($contentRoot, "/system-index-block/calling-page/system-page") ) #set ( $callingPagePath = $callingPageData.getChild("path").text ) #set ( $calendarMonthName = $callingPageData.getChild("title").text ) #set ( $calendarMonthNumber = $callingPageData.getChild("name").value ) #set ( $currentDateNode = $_XPathTool.selectSingleNode($contentRoot, "/system-index-block/@current-time") ) #set ( $currentDate = $_DateTool.getDate($currentDateNode.value )) #set ( $currentMonth = $_DateTool.getMonth($currentDate) + 1) #set ( $currentYear = $_DateTool.getYear($currentDate)) #set ( $nextYear = $_DateTool.getYear($currentDate) + 1 ) #set ( $currentYear = $_DateTool.getYear($currentDate)) #if ( $calendarMonthNumber == '01') #set ( $calendarMonth = 1) #set ( $numberOfDays = 31) #elseif ( $calendarMonthNumber == '02') #set ( $calendarMonth = 2) #elseif ( $calendarMonthNumber == '03') #set ( $calendarMonth = 3) #set ( $numberOfDays = 31) #elseif ( $calendarMonthNumber == '04') #set ( $calendarMonth = 4) #set ( $numberOfDays = 30) #elseif ( $calendarMonthNumber == '05') #set ( $calendarMonth = 5) #set ( $numberOfDays = 31) #elseif ( $calendarMonthNumber == '06') #set ( $calendarMonth = 6) #set ( $numberOfDays = 30) #elseif ( $calendarMonthNumber == '07') #set ( $calendarMonth = 7) #set ( $numberOfDays = 31) #elseif ( $calendarMonthNumber == '08') #set ( $calendarMonth = 8) #set ( $numberOfDays = 31) #elseif ( $calendarMonthNumber == '09') #set ( $calendarMonth = 9) #set ( $numberOfDays = 30) #elseif ( $calendarMonthNumber == '10') #set ( $calendarMonth = 10) #set ( $numberOfDays = 31) #elseif ( $calendarMonthNumber == '11') #set ( $calendarMonth = 11) #set ( $numberOfDays = 30) #elseif ( $calendarMonthNumber == '12') #set ( $calendarMonth = 12) #set ( $numberOfDays = 31) #else #set ( $calendarMonth = 12) #set ( $numberOfDays = 31) #end #if ( $currentMonth > $calendarMonth ) #set ( $currentYear = $nextYear) #end

$calendarMonthName $currentYear

#if ($calendarMonth == 2) #if ( ($currentYear % 4) == 0) #set ( $numberOfDays = 29) #else #set ( $numberOfDays = 28) #end #end #set ( $monthsFirstDate = $_DateTool.toDate('y-M-d H:m:s', "${currentYear}-${calendarMonth}-01 00:00:01")) #set ( $dayOfWeekStartMonth = $_DateTool.format('E', $monthsFirstDate)) #set ( $monthsLastDate = $_DateTool.toDate('y-M-d H:m:s', "${currentYear}-${calendarMonth}-$numberOfDays 23:59:59")) #set ( $originalDate = $_DateTool.toDate('y-M-d H:m:s', "1970-01-01 00:00:01")) #set ( $startMonthXPath = $_DateTool.difference($originalDate, $monthsFirstDate).milliseconds) #set ( $endMonthXPath = $_DateTool.difference($originalDate, $monthsLastDate).milliseconds) #set ( $typesToDisplay = $_XPathTool.selectNodes($contentRoot, "/system-index-block/calling-page/system-page[@current]/dynamic-metadata[name='typeOfEvent']/value") ) #set ($metadataValue = "None") #foreach ($typeToDisplay in $typesToDisplay) #if ($typeToDisplay.text =="All") #set ($metadataValue = "All") #end #end #if ($metadataValue =="All") #set ( $events = $_XPathTool.selectNodes($contentRoot, "/system-index-block/system-page[not(@current)][system-data-structure[@definition-path='Event'][(startDate < ${startMonthXPath} and endDate >= ${startMonthXPath}) or (startDate >= ${startMonthXPath} and startDate <= ${endMonthXPath})]]") ) #else #set ( $events = $_XPathTool.selectNodes($contentRoot, "/system-index-block/system-page[not(@current)][system-data-structure[@definition-path='Event'][(startDate < ${startMonthXPath} and endDate >= ${startMonthXPath}) or (startDate >= ${startMonthXPath} and startDate <= ${endMonthXPath})]][dynamic-metadata[name = 'typeOfEvent' and value = //system-page[@current]/dynamic-metadata[name='typeOfEvent']/value]]") ) #end #if ($dayOfWeekStartMonth == 'Sun') #set ( $dayOfWeekStart = 0) #elseif ($dayOfWeekStartMonth == 'Mon') #set ( $dayOfWeekStart = 1) #elseif ($dayOfWeekStartMonth == 'Tue') #set ( $dayOfWeekStart = 2) #elseif ($dayOfWeekStartMonth == 'Wed') #set ( $dayOfWeekStart = 3) #elseif ($dayOfWeekStartMonth == 'Thu') #set ( $dayOfWeekStart = 4) #elseif ($dayOfWeekStartMonth == 'Fri') #set ( $dayOfWeekStart = 5) #else #set ( $dayOfWeekStart = 6) #end #set ( $numberOfCellsToBeDrawn = $numberOfDays + $dayOfWeekStart ) #if ( ($numberOfCellsToBeDrawn % 7) > 0) #set ( $numberOfCellsToBeDrawn = $numberOfCellsToBeDrawn + (7 - ($numberOfCellsToBeDrawn % 7))) #end #set ($numberOfRows = $numberOfCellsToBeDrawn / 7) ##Loop through all Days of the month to fill in a Calendar Grid ##Number of weeks #foreach($row in [1..$numberOfRows]) ##Number of Days in a Week #foreach($cell in [0..6]) #set ($dayNumber = (($row - 1) * 7) + $cell + 1 - $dayOfWeekStart) #if ($dayNumber < 1) #elseif ($dayNumber > $numberOfDays) #else #end #end #end
Sun
Mon
Tue
Wed
Thur
Fri
Sat
-- $dayNumber
#set ( $outputForDate = $_DateTool.toDate('y-M-d', "${currentYear}-${calendarMonth}-$dayNumber")) ##Loop through all Events #foreach ($event in $events) ##Get the Start Date and End Date and convert to Velocity Date object #set ( $eventDateNode = $event.getChild("system-data-structure").getChild("startDate").value) #set ( $eventEndDateNode = $event.getChild("system-data-structure").getChild("endDate").value) #set ( $eventDate = $_DateTool.getDate($eventDateNode)) #set ( $eventEndDate = $_DateTool.getDate($eventEndDateNode)) ##Format Start Date, End Date, and Date to be filled into Calendar #set ( $eventDateFormatted = $_DateTool.format('y-M-d', $eventDate)) #set ( $eventEndDateFormatted = $_DateTool.format('y-M-d', $eventEndDate)) #set ( $outputDateFormatted = $_DateTool.format('y-M-d', $outputForDate)) ##Find the difference between the Date being displayed and the Start Date and End Date #set ($daysDifference = $_DateTool.difference($eventDate, $outputForDate).days) #set ($daysDifference2 = $_DateTool.difference($outputForDate, $eventEndDate).days) #set ($daysToRepeatEvent = $_XPathTool.selectNodes($event, "system-data-structure/recurring-day/value")) ##If the Event is set to recur, figure out if the Date in the Calendar to be filled in is within the Events Date Range #if ($event.getChild("system-data-structure").getChild("recurring").text == "Recurring") #if ($daysDifference >= 0 && $daysDifference2 >= 0 && (($daysDifference2 == 0 && $eventEndDateFormatted == $outputDateFormatted) || $daysDifference2 > 0)) ##Output the Event everyday between its Start and End Date, inclusively #if ($event.getChild("system-data-structure").getChild("recurrsion").text == "Daily") #set ($eventPath = $event.getChild("link").text) $event.getChild("title").text
##If the Event repeats WEEKLY, figure out what days to display it on. #elseif ($event.getChild("system-data-structure").getChild("recurrsion").text == "Weekly") #foreach ($dayToRepeatEvent in $daysToRepeatEvent) #if ($_DateTool.format('EEEE', $outputForDate) == $dayToRepeatEvent.text) #set ($eventPath = $event.getChild("link").text) $event.getChild("title").text
#end #end #end #end ##If the Event does not Recur, display the event only on its Start Date #elseif ( $outputDateFormatted == $eventDateFormatted) #set ($eventPath = $event.getChild("link").text) $event.getChild("title").text
#end #end