public BlogPaginationModel(SiteDB dbInstance, BlogFilterType filterType, string filterValue, int?pageIndex, int?pageSize) { base.PageIndex = pageIndex.GetValueOrDefault(0); base.PageSize = pageSize.GetValueOrDefault(DEFAULT_PAGE_SIZE); base.AdditionalData = JsonConvert.SerializeObject(new { FilterType = (int)filterType, FilterValue = filterValue }); this.FilterType = filterType; this.FilterValue = filterValue; this._DBInstance = dbInstance; this.SortedAndFilteredPosts = this._SortAndFilterPosts(); }
public ActionResult SearchPaginate(PaginationModel model) { // deserialize the data var additionalData = JsonConvert.DeserializeObject <Dictionary <string, string> >(model.AdditionalData); // cast the value to the event type we want BlogFilterType filterType = (BlogFilterType)int.Parse(additionalData["FilterType"]); string filterValue = additionalData["FilterValue"]; return(PartialView( "~/Views/Blog/BlogPostsPaginationBody.cshtml", new BlogPaginationModel(db, filterType, filterValue, model.PageIndex, model.PageSize) )); }
public override void Process(HttpRequestArgs args) { Assert.ArgumentNotNull(args, "args"); if (((Context.Item == null) && (Context.Database != null)) && !string.IsNullOrWhiteSpace(args.Url.ItemPath)) { Profiler.StartOperation("Resolve blog item."); string qsValue = string.Empty; string decodedItemName = MainUtil.DecodeName(args.Url.ItemPath); string blogItemPath = ResolveBlogItemPath(decodedItemName, XBSettings.XBCategoryUrlPattern, out qsValue); BlogFilterType filter = BlogFilterType.None; if (!string.IsNullOrEmpty(blogItemPath)) { filter = BlogFilterType.Category; } else { blogItemPath = ResolveBlogItemPath(decodedItemName, XBSettings.XBAuthorUrlPattern, out qsValue); if (!string.IsNullOrEmpty(blogItemPath)) { filter = BlogFilterType.Author; } else { blogItemPath = ResolveBlogItemPath(decodedItemName, XBSettings.XBTagsUrlPattern, out qsValue); if (!string.IsNullOrEmpty(blogItemPath)) { filter = BlogFilterType.Tag; } else { blogItemPath = ResolveBlogItemPath(decodedItemName, XBSettings.XBAuthorViewUrlPattern, out qsValue); if (!string.IsNullOrEmpty(blogItemPath)) { filter = BlogFilterType.AuthorView; } else { blogItemPath = ResolveBlogItemPath(decodedItemName, XBSettings.XBSearchURLPattern, out qsValue); if (!string.IsNullOrEmpty(blogItemPath)) { filter = BlogFilterType.Search; } } } } } if (!string.IsNullOrEmpty(blogItemPath) && filter != BlogFilterType.None) { Item blogRoot = args.GetItem(blogItemPath); if (blogRoot != null) { Context.Item = blogRoot; NameValueCollection nv = StringUtil.ParseNameValueCollection(args.Url.QueryString, '&', '='); switch (filter) { case BlogFilterType.Category: nv.Add(XBSettings.XBCategoryQS, qsValue); break; case BlogFilterType.Author: nv.Add(XBSettings.XBAuthorQS, qsValue); break; case BlogFilterType.AuthorView: nv.Add(XBSettings.XBAuthorViewQS, qsValue); break; case BlogFilterType.Tag: nv.Add(XBSettings.XBTagQS, qsValue); break; case BlogFilterType.Search: nv.Add(XBSettings.XBSearchQS, qsValue); break; case BlogFilterType.None: default: break; } args.Url.QueryString = StringUtil.NameValuesToString(nv, "&"); } } Profiler.EndOperation(); } }
public BlogPaginationModel(SiteDB dbInstance, BlogFilterType filterType, string filterValue) : this(dbInstance, filterType, filterValue, null, null) { }