private static void showDayEvents(Core core, Primitive owner, int year, int month, int day, VariableCollection weekVariableCollection, List<Event> events) { VariableCollection dayVariableCollection = weekVariableCollection.CreateChild("day"); dayVariableCollection.Parse("DATE", day.ToString()); dayVariableCollection.Parse("URI", Calendar.BuildDateUri(core, owner, year, month, day)); DateTime now = core.Tz.Now; if (year == now.Year && month == now.Month && day == now.Day) { dayVariableCollection.Parse("CLASS", "today"); } bool hasEvents = false; List<Event> expired = new List<Event>(); foreach (Event calendarEvent in events) { // if the event starts after the end of the day, skip this day if (calendarEvent.GetStartTime(core.Tz).CompareTo(new DateTime(year, month, day, 23, 59, 59)) > 0) { break; } VariableCollection eventVariableCollection = dayVariableCollection.CreateChild("event"); eventVariableCollection.Parse("TITLE", calendarEvent.Subject); if (calendarEvent.GetStartTime(core.Tz).Day != day) { eventVariableCollection.Parse("START_TIME", calendarEvent.GetStartTime(core.Tz).ToString("d MMMM h:mmt").ToLower()); } else { eventVariableCollection.Parse("START_TIME", calendarEvent.GetStartTime(core.Tz).ToString("h:mmt").ToLower()); } eventVariableCollection.Parse("URI", calendarEvent.Uri); if (calendarEvent is BirthdayEvent) { BirthdayEvent birthdayEvent = (BirthdayEvent)calendarEvent; eventVariableCollection.Parse("BIRTH_DATE", birthdayEvent.User.Profile.DateOfBirth.Day + " " + core.Tz.MonthToString(birthdayEvent.User.Profile.DateOfBirth.Month)); } hasEvents = true; // if the event ends before the end of the day, finish up the event if (calendarEvent.GetEndTime(core.Tz).CompareTo(new DateTime(year, month, day, 23, 59, 59)) <= 0) { expired.Add(calendarEvent); } } if (hasEvents) { dayVariableCollection.Parse("EVENTS", "TRUE"); } foreach (Event calendarEvent in expired) { events.Remove(calendarEvent); } }
private static void DisplayMiniCalendar(Core core, Template template, VariableCollection vc1, Primitive owner, int year, int month) { int days = DateTime.DaysInMonth(year, month); DayOfWeek firstDay = new DateTime(year, month, 1).DayOfWeek; int offset = Calendar.GetFirstDayOfMonthOffset(firstDay); int weeks = (int)Math.Ceiling((days + offset) / 7.0); if (template != null) { template.Parse("CURRENT_MONTH", core.Functions.IntToMonth(month)); template.Parse("CURRENT_YEAR", year.ToString()); } else { vc1.Parse("MONTH", core.Functions.IntToMonth(month)); vc1.Parse("U_MONTH", BuildMonthUri(core, owner, year, month)); } for (int week = 0; week < weeks; week++) { VariableCollection weekVariableCollection; if (template != null) { weekVariableCollection = template.CreateChild("week"); } else { weekVariableCollection = vc1.CreateChild("week"); } weekVariableCollection.Parse("WEEK", (week + 1).ToString()); if (week + 1 == 1) { int daysPrev = DateTime.DaysInMonth(year - (month - 1) / 12, (month - 1) % 12 + 1); for (int i = offset - 1; i >= 0; i--) { int day = daysPrev - i; VariableCollection dayVariableCollection = weekVariableCollection.CreateChild("day"); dayVariableCollection.Parse("DATE", day.ToString()); dayVariableCollection.Parse("URI", Calendar.BuildDateUri(core, owner, year - (month - 2) / 12, (month - 2) % 12 + 1, day)); } for (int i = offset; i < 7; i++) { int day = i - offset + 1; VariableCollection dayVariableCollection = weekVariableCollection.CreateChild("day"); dayVariableCollection.Parse("DATE", day.ToString()); dayVariableCollection.Parse("URI", Calendar.BuildDateUri(core, owner, year, month, day)); } } else if (week + 1 == weeks) { for (int i = week * 7 - offset; i < days; i++) { int day = i + 1; VariableCollection dayVariableCollection = weekVariableCollection.CreateChild("day"); dayVariableCollection.Parse("DATE", day.ToString()); dayVariableCollection.Parse("URI", Calendar.BuildDateUri(core, owner, year, month, day)); } for (int i = 0; i < weeks * 7 - days - offset; i++) { int day = i + 1; VariableCollection dayVariableCollection = weekVariableCollection.CreateChild("day"); dayVariableCollection.Parse("DATE", day.ToString()); dayVariableCollection.Parse("URI", Calendar.BuildDateUri(core, owner, year + (month) / 12, (month) % 12 + 1, day)); } } else { for (int i = 0; i < 7; i++) { int day = week * 7 + i + 1 - offset; VariableCollection dayVariableCollection = weekVariableCollection.CreateChild("day"); dayVariableCollection.Parse("DATE", day.ToString()); dayVariableCollection.Parse("URI", Calendar.BuildDateUri(core, owner, year, month, day)); } } } }