public ActionResult Index(RenderModel model, int?maxItems) { if (!maxItems.HasValue) { maxItems = 25; } var listNodes = model.Content.Children .Where(x => x.DocumentTypeAlias.InvariantEquals("ArticulateArchive")) .ToArray(); if (listNodes.Length == 0) { throw new InvalidOperationException("An ArticulateArchive document must exist under the root Articulate document"); } var pager = new PagerModel(maxItems.Value, 0, 1); var listNodeIds = listNodes.Select(x => x.Id).ToArray(); var listItems = Umbraco.GetPostsSortedByPublishedDate(pager, null, listNodeIds); var rootPageModel = new ListModel(listNodes[0], listItems, pager); var feed = FeedGenerator.GetFeed(rootPageModel, rootPageModel.Children <PostModel>()); return(new RssResult(feed, rootPageModel)); }
private ActionResult RenderView(IRenderModel model, int?p = null) { var listNode = model.Content.Children .FirstOrDefault(x => x.DocumentTypeAlias.InvariantEquals("ArticulateArchive")); if (listNode == null) { throw new InvalidOperationException("An ArticulateArchive document must exist under the root Articulate document"); } if (p != null && p.Value == 1) { return(new RedirectToUmbracoPageResult(model.Content, UmbracoContext)); } if (p == null || p.Value <= 0) { p = 1; } var rootPageModel = new MasterModel(model.Content); //get the count with XPath, this will be the fastest var totalPosts = Umbraco.GetPostCount(listNode.Id); var pageSize = rootPageModel.PageSize; var totalPages = Convert.ToInt32(Math.Ceiling((double)totalPosts / pageSize)); //Invalid page, redirect without pages if (totalPages > 0 && totalPages < p) { return(new RedirectToUmbracoPageResult(model.Content, UmbracoContext)); } var pager = new PagerModel( pageSize, p.Value - 1, totalPages, totalPages > p ? model.Content.Url.EnsureEndsWith('?') + "p=" + (p + 1) : null, p > 2 ? model.Content.Url.EnsureEndsWith('?') + "p=" + (p - 1) : p > 1 ? model.Content.Url : null); var listItems = Umbraco.GetPostsSortedByPublishedDate(listNode.Id, pager); var listModel = new ListModel(listNode, listItems, pager); return(View(PathHelper.GetThemeViewPath(listModel, "List"), listModel)); }