protected void LoadEntries(Item blogItem) { var entries = ManagerFactory.EntryManagerInstance.GetBlogEntries(blogItem); MonthsByYear = new Dictionary <int, int[]>(); foreach (var entry in entries) { DateTime created = entry.Created; var key = (created.Year * 100) + created.Month; if (EntriesByMonthAndYear.ContainsKey(key)) { EntriesByMonthAndYear[key].Add(entry); } else { var listTemp = new List <EntryItem> { entry }; EntriesByMonthAndYear.Add(key, listTemp); } } foreach (var blogEntryYear in GetYears(entries)) { MonthsByYear.Add(blogEntryYear, GetMonths(blogEntryYear).ToArray()); } }
/// <summary> /// Get the months with entries for the given year /// </summary> /// <param name="year">The year to get the months for</param> /// <returns>An array of months with entries</returns> protected virtual int[] GetMonths(int year) { var yearKey = year * 100; var months = new List <int>(); for (int i = 1; i <= 12; i++) { if (EntriesByMonthAndYear.ContainsKey(yearKey + i)) { months.Add(yearKey + i); } } return(months.ToArray()); }
protected void LoadEntries(Item blogItem) { var entries = ManagerFactory.EntryManagerInstance.GetBlogEntries(blogItem, EntryCriteria.AllEntries, ListOrder.Descending); MonthsByYear = new Dictionary <int, int[]>(); foreach (var entry in entries.Results) { var item = Database.GetItem(entry.Uri); if (item == null) { continue; } var entryItem = new EntryItem(item); var created = entry.EntryDate; var key = (created.Year * 100) + created.Month; // todo: work out how to render the archive without loading the full item for each entry (index URL? or generate URL manually?) if (EntriesByMonthAndYear.ContainsKey(key)) { EntriesByMonthAndYear[key].Add(entryItem); } else { var listTemp = new List <EntryItem> { entryItem }; EntriesByMonthAndYear.Add(key, listTemp); } } foreach (var blogEntryYear in GetYears(entries.Results)) { MonthsByYear.Add(blogEntryYear, GetMonths(blogEntryYear).ToArray()); } }