예제 #1
0
        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());
            }
        }
예제 #2
0
        /// <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());
        }
예제 #3
0
        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());
            }
        }