/// <summary> /// The blog post list. /// </summary> /// <param name="renderModel"> /// The render model. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> public ActionResult BlogPostList(RenderModel renderModel) { int pageNumber = 1; int itemsPerPage = 5; if (!string.IsNullOrEmpty(Request.QueryString["page"])) { int.TryParse(Request.QueryString["page"], out pageNumber); } List<BlogPost> blogPosts = ContentHelper.GetChildren<BlogPost>(renderModel.Content.Id, false).OrderByDescending(p => p.CreateDate).ToList(); int totalPageCount = (int)Math.Ceiling((double)blogPosts.Count() / itemsPerPage); int year = 2001; int.TryParse(renderModel.Content.Parent.Name, out year); int month = 1; int.TryParse(renderModel.Content.Name, out month); DateTime postDates = new DateTime(year, month, 1); PagedPostList viewModel = new PagedPostList { Header = string.Format("Posts from {0}", postDates.ToString("MMMM yyyy")), CurrentUrl = renderModel.Content.Url, PageNumber = pageNumber, TotalNumberOfPages = totalPageCount }; IEnumerable<BlogPost> posts = blogPosts.Skip(itemsPerPage * (pageNumber - 1)).Take(itemsPerPage); foreach (BlogPost blogPost in posts) { Category category = ContentHelper.GetByNodeId<Category>(blogPost.CategoryId); viewModel.Posts.Add(new PostViewModel { BodyContent = blogPost.BodyText, Category = new CategoryViewModel { Name = category.Name, Url = category.Url }, PostDate = blogPost.CreateDate, Title = blogPost.Name, Url = blogPost.Url }); } return this.View("BlogPostList", viewModel); }
/// <summary> /// The blog post list. /// </summary> /// <param name="renderModel"> /// The render model. /// </param> /// <returns> /// The <see cref="ActionResult"/>. /// </returns> public ActionResult BlogPostList(RenderModel renderModel) { int pageNumber = 1; int itemsPerPage = 5; if (!string.IsNullOrEmpty(Request.QueryString["page"])) { int.TryParse(Request.QueryString["page"], out pageNumber); } List<BlogPost> blogPosts = ContentHelper.GetChildren<BlogPost>(1089, true).Where(p => p.CategoryId == renderModel.Content.Id).OrderByDescending(p => p.CreateDate).ToList(); int totalPageCount = (int)Math.Ceiling((double)blogPosts.Count() / itemsPerPage); PagedPostList viewModel = new PagedPostList { Header = string.Format("{0} posts", renderModel.Content.Name), CurrentUrl = renderModel.Content.Url, PageNumber = pageNumber, TotalNumberOfPages = totalPageCount }; IEnumerable<BlogPost> posts = blogPosts.Skip(itemsPerPage * (pageNumber - 1)).Take(itemsPerPage); // Will all be the same category Category category = ContentHelper.GetByNodeId<Category>(renderModel.Content.Id); CategoryViewModel categoryViewModel = new CategoryViewModel { Name = category.Name, Url = category.Url }; foreach (BlogPost blogPost in posts) { viewModel.Posts.Add(new PostViewModel { BodyContent = blogPost.BodyText, Category = categoryViewModel, PostDate = blogPost.CreateDate, Title = blogPost.Name, Url = blogPost.Url }); } return this.View("BlogPostList", viewModel); }