public PageOfPostsViewModel Get(int limit = SearchCriteria.DefaultLimit, int offset = SearchCriteria.DefaultOffset, string order = "descending") { var from = FrontMatterSearchCriteria.DefaultFrom; var to = FrontMatterSearchCriteria.DefaultTo; var orderParsed = SearchCriteria.DefaultOrder; Enum.TryParse<Order>(order, true, out orderParsed); var searchCriteria = new FrontMatterSearchCriteria(limit, offset, orderParsed, PostPath, from, to, string.Empty, true); var pageOfPost = FrontMatterRepository.Get(searchCriteria); var pageOfPostViewModel = new PageOfPostsViewModel(pageOfPost, MarkupProcessorFactory); return pageOfPostViewModel; }
public ActionResult Atom() { var config = ConfigRepository.Read(ConfigPath); var configViewModel = new ConfigurationViewModel(config); var postSearchCriteria = new FrontMatterSearchCriteria(10, 0, Order.Descending, PostPath, FrontMatterSearchCriteria.DefaultFrom, FrontMatterSearchCriteria.DefaultTo, string.Empty, true); var pageOfPosts = FrontMatterRepository.Get(postSearchCriteria); var pageOfPostsViewModel = new PageOfPostsViewModel(pageOfPosts, MarkupProcessorFactory); var layoutViewModel = new LayoutViewModel(); var homeViewModel = new HomeViewModel(configViewModel, layoutViewModel, pageOfPostsViewModel); return new AtomViewResult(homeViewModel); }
public ActionResult Get(int limit = 10, int offset = 0) { var config = ConfigRepository.Read(ConfigPath); var configViewModel = new ConfigurationViewModel(config); var searchCriteria = new FrontMatterSearchCriteria(limit, offset, Domain.Common.Order.Descending, PostPath, FrontMatterSearchCriteria.DefaultFrom, FrontMatterSearchCriteria.DefaultTo, string.Empty, true); var pageOfPosts = FrontMatterRepository.Get(searchCriteria); var pageOfPostViewModel = new PageOfPostsViewModel(pageOfPosts, MarkupProcessorFactory); var layoutPath = GetLayoutPath("home"); var layout = LayoutParser.Parse(layoutPath); var layoutViewModel = new LayoutViewModel(layout); var homeViewModel = new HomeViewModel(configViewModel, layoutViewModel, pageOfPostViewModel); return View(homeViewModel); }
public HomeViewModel(ConfigurationViewModel configViewModel, LayoutViewModel layoutViewModel, PageOfPostsViewModel pageOfPostViewModel) { Configuration = configViewModel; Layout = layoutViewModel; Posts = pageOfPostViewModel; }
public static HtmlString GeneratePagination(this HtmlHelper helper, PageOfPostsViewModel page) { var hasPrevious = page.SearchCriteria.Offset > 0; var numPreviousTotal = page.SearchCriteria.Offset; var numPrevious = numPreviousTotal > page.SearchCriteria.Limit ? page.SearchCriteria.Limit : numPreviousTotal; var hasNext = (page.SearchCriteria.Offset + page.SearchCriteria.Limit) < page.TotalCount; var numNextTotal = page.TotalCount - (page.SearchCriteria.Offset + page.SearchCriteria.Limit); var numNext = numNextTotal > page.SearchCriteria.Limit ? page.SearchCriteria.Limit : numNextTotal; var olTag = new TagBuilder("ol"); if (hasNext) { var limit = page.SearchCriteria.Limit; var offset = page.SearchCriteria.Offset + page.SearchCriteria.Limit; var aTag = new TagBuilder("a"); aTag.InnerHtml = string.Format("next {0}", numNext); aTag.Attributes.Add("href", helper.UrlHelper().RouteUrl("Home", new { limit = limit, offset = offset })); var liTag = new TagBuilder("li"); liTag.AddCssClass("next"); liTag.InnerHtml += aTag.ToString(); olTag.InnerHtml += liTag.ToString(); } if (hasPrevious) { var limit = page.SearchCriteria.Limit; var offset = page.SearchCriteria.Offset - page.SearchCriteria.Limit; offset = offset < 0 ? 0 : offset; var aTag = new TagBuilder("a"); aTag.InnerHtml = string.Format("previous {0}", numPrevious); aTag.Attributes.Add("href", helper.UrlHelper().RouteUrl("Home", new { limit = limit, offset = offset })); var liTag = new TagBuilder("li"); liTag.AddCssClass("previous"); liTag.InnerHtml += aTag.ToString(); olTag.InnerHtml += liTag.ToString(); } var navTag = new TagBuilder("nav"); navTag.InnerHtml += olTag.ToString(); var sectionTag = new TagBuilder("section"); sectionTag.AddCssClass("pagination"); sectionTag.InnerHtml += navTag.ToString(); return new HtmlString(sectionTag.ToString()); }