internal PagerBuilder(HtmlHelper helper, string actionName, string controllerName, int totalPageCount, int pageIndex, PagerOptions options, object values) { // Set defaults if (String.IsNullOrEmpty(actionName)) actionName = (string)helper.ViewContext.RouteData.Values["action"]; if (String.IsNullOrEmpty(controllerName)) controllerName = (string)helper.ViewContext.RouteData.Values["controller"]; if (options == null) options = new PagerOptions(); // Assign to fields _helper = helper; _actionName = actionName; _controllerName = controllerName; _totalPageCount = totalPageCount; _pageIndex = pageIndex; _options = options; _values = values; // Calculate start page index _startPageIndex = pageIndex - (options.MaximumPageNumbers / 2); if (_startPageIndex + options.MaximumPageNumbers > _totalPageCount) _startPageIndex = _totalPageCount - options.MaximumPageNumbers; if (_startPageIndex < 0) _startPageIndex = 0; // Calculate end page index _endPageIndex = _startPageIndex + _options.MaximumPageNumbers; if (_endPageIndex > _totalPageCount) _endPageIndex = _totalPageCount; }
public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions, object htmlAttributes) { if (pagedList == null) return AjaxPager(html, pagerOptions, new RouteValueDictionary(htmlAttributes)); return AjaxPager(html, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, pagerOptions, null, ajaxOptions, htmlAttributes); }
internal PagerBuilder(HtmlHelper html, AjaxHelper ajax, string actionName, string controllerName, int totalPageCount, int pageIndex, PagerOptions pagerOptions, string routeName, RouteValueDictionary routeValues, MvcAjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes) { _ajaxPagingEnabled = (ajax != null); if (pagerOptions == null) pagerOptions = new PagerOptions(); _html = html; _ajax = ajax; _actionName = actionName; _controllerName = controllerName; if (pagerOptions.MaxPageIndex == 0 || pagerOptions.MaxPageIndex > totalPageCount) _totalPageCount = totalPageCount; else _totalPageCount = pagerOptions.MaxPageIndex; _pageIndex = pageIndex; _pagerOptions = pagerOptions; _routeName = routeName; _routeValues = routeValues; _ajaxOptions = ajaxOptions; _htmlAttributes = htmlAttributes; // start page index _startPageIndex = pageIndex - (pagerOptions.NumericPagerItemCount / 2); if (_startPageIndex + pagerOptions.NumericPagerItemCount > _totalPageCount) _startPageIndex = _totalPageCount + 1 - pagerOptions.NumericPagerItemCount; if (_startPageIndex < 1) _startPageIndex = 1; // end page index _endPageIndex = _startPageIndex + _pagerOptions.NumericPagerItemCount - 1; if (_endPageIndex > _totalPageCount) _endPageIndex = _totalPageCount; }
public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions) { if (pagedList == null) return AjaxPager(html, pagerOptions, null); return AjaxPager(html, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, pagerOptions, null, ajaxOptions, null); }
//Ajax pager builder internal PagerBuilder(AjaxHelper ajaxHelper, int totalPageCount, int pageIndex, PagerOptions pagerOptions, MvcAjaxOptions ajaxOptions) { _ajaxPagingEnabled =true; if (ajaxHelper == null) { throw new ArgumentNullException("ajaxHelper"); } if (pagerOptions == null) pagerOptions = new PagerOptions(); _ajax = ajaxHelper; if (pagerOptions.MaximumPageNumber == 0 || pagerOptions.MaximumPageNumber > totalPageCount) _totalPageCount = totalPageCount; else _totalPageCount = pagerOptions.MaximumPageNumber; _pageIndex = pageIndex; _pagerOptions = pagerOptions; _ajaxOptions = ajaxOptions ?? new MvcAjaxOptions(); // start page index _startPageIndex = pageIndex - (pagerOptions.NumericPagerItemCount / 2); if (_startPageIndex + pagerOptions.NumericPagerItemCount > _totalPageCount) _startPageIndex = _totalPageCount + 1 - pagerOptions.NumericPagerItemCount; if (_startPageIndex < 1) _startPageIndex = 1; // end page index _endPageIndex = _startPageIndex + _pagerOptions.NumericPagerItemCount - 1; if (_endPageIndex > _totalPageCount) _endPageIndex = _totalPageCount; }
public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes) { if (pagedList == null) { return AjaxPager(html, pagerOptions, htmlAttributes); } return html.AjaxPager(pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, pagerOptions, null, ajaxOptions, htmlAttributes); }
public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, string routeName, object routeValues, PagerOptions pagerOptions, AjaxOptions ajaxOptions) { if (pagedList == null) { return AjaxPager(html, pagerOptions, null); } return html.AjaxPager(pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, routeName, pagerOptions, routeValues, ajaxOptions, null); }
public static MvcHtmlString AjaxPager(this HtmlHelper html, IPagedList pagedList, string actionName, string controllerName, PagerOptions pagerOptions, AjaxOptions ajaxOptions) { if (pagedList == null) { return AjaxPager(html, pagerOptions, null); } return html.AjaxPager(pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, actionName, controllerName, null, pagerOptions, ((RouteValueDictionary)null), ajaxOptions, ((IDictionary<string, object>)null)); }
/// <summary> /// Used when PagedList is null /// </summary> internal PagerBuilder(HtmlHelper html, PagerOptions pagerOptions, IDictionary<string, object> htmlAttributes) { if (pagerOptions == null) pagerOptions = new PagerOptions(); _html = html; _pagerOptions = pagerOptions; _htmlAttributes = htmlAttributes; }
public Pager(HtmlHelper htmlHelper, int pageSize, int currentPage, int totalItemCount) { this.htmlHelper = htmlHelper; this.pageSize = pageSize; this.currentPage = currentPage; this.totalItemCount = totalItemCount; this.pagerOptions = new PagerOptions(); }
public Pager(HtmlHelper htmlHelper, int pageSize, int currentPage, int totalItemCount) { _htmlHelper = htmlHelper; _pageSize = pageSize; _currentPage = currentPage; _totalItemCount = totalItemCount; PagerOptions = new PagerOptions(); }
///<include file='MvcPagerDocs.xml' path='MvcPagerDocs/PagerExtensions/Method[@name="HtmlPager4"]/*'/> public static HtmlPager Pager(this HtmlHelper helper, IPagedList pagedList, PagerOptions pagerOptions) { if (pagedList == null) { throw new ArgumentNullException("pagedList"); } return Pager(helper, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, pagerOptions); }
///<include file='MvcPagerDocs.xml' path='MvcPagerDocs/HtmlPager/Constructor[@name="HtmlPager1"]/*'/> public HtmlPager(HtmlHelper html, int totalItemCount, int pageSize, int pageIndex,PagerOptions pagerOptions) { _htmlHelper = html; _totalItemCount = totalItemCount; _pageSize = pageSize; _currentPageIndex = pageIndex; _pagerOptions = pagerOptions; }
///<include file='MvcPagerDocs.xml' path='MvcPagerDocs/HtmlPager/Method[@name="Options"]/*'/> public HtmlPager Options(Action<PagerOptionsBuilder> builder) { if (_pagerOptions == null) { _pagerOptions = new PagerOptions(); } builder(new PagerOptionsBuilder(_pagerOptions)); return this; }
///<include file='MvcPagerDocs.xml' path='MvcPagerDocs/AjaxPager/Constructor[@name="AjaxPager1"]/*'/> public AjaxPager(AjaxHelper ajax, int totalItemCount, int pageSize, int pageIndex,PagerOptions pagerOptions, MvcAjaxOptions ajaxOptions) { _ajaxHelper = ajax; _totalItemCount = totalItemCount; _pageSize = pageSize; _currentPageIndex = pageIndex; _pagerOptions = pagerOptions; _ajaxOptions = ajaxOptions; }
/// <summary> /// used when PagedList is null /// </summary> public PagerBuilder(HtmlHelper html, AjaxHelper ajax, PagerOptions pagerOptions, IDictionary<string, object> htmlAttributes) { if (pagerOptions == null) pagerOptions = new PagerOptions(); _html = html; _ajax = ajax; _pagerOptions = pagerOptions; _htmlAttributes = htmlAttributes; }
public static MvcHtmlString AjaxPager(this HtmlHelper html, int totalItemCount, int pageSize, int pageIndex, string actionName, string controllerName, string routeName, PagerOptions pagerOptions, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes) { if (pagerOptions == null) pagerOptions = new PagerOptions(); var totalPageCount = (int)Math.Ceiling(totalItemCount / (double)pageSize); var builder = new PagerBuilder(html, actionName, controllerName, totalPageCount, pageIndex, pagerOptions, routeName, routeValues, htmlAttributes); return builder.RenderPager(); }
///<include file='MvcPagerDocs.xml' path='MvcPagerDocs/PagerExtensions/Method[@name="HtmlPager1"]/*'/> public static HtmlPager Pager(this HtmlHelper helper, int totalItemCount, int pageSize, int pageIndex, PagerOptions pagerOptions) { return new HtmlPager ( helper, totalItemCount,pageSize, pageIndex, pagerOptions ); }
public static MvcHtmlString AjaxPager(this HtmlHelper html, int totalItemCount, int pageSize, int pageIndex, string actionName, string controllerName, string routeName, PagerOptions pagerOptions, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes) { if(pagerOptions == null) pagerOptions = new PagerOptions(); pagerOptions.UseJqueryAjax = true; var totalPageCount = (int) Math.Ceiling(totalItemCount/(double) pageSize); var builder = new PagerBuilder(html, actionName, controllerName, totalPageCount, pageIndex, totalItemCount, pagerOptions, routeName, new RouteValueDictionary(routeValues), ajaxOptions, new RouteValueDictionary(htmlAttributes)); return builder.RenderPager(); }
internal PagerBuilder(HtmlHelper html, AjaxHelper ajax, string actionName, string controllerName, int totalPageCount, int pageIndex, int totalItemCount, PagerOptions pagerOptions, string routeName, RouteValueDictionary routeValues, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes) { _msAjaxPaging = (ajax != null); if (String.IsNullOrEmpty(actionName)) { if (ajax != null) actionName = (string)ajax.ViewContext.RouteData.Values["action"]; else actionName = (string)html.ViewContext.RouteData.Values["action"]; } if (String.IsNullOrEmpty(controllerName)) { if (ajax != null) controllerName = (string)ajax.ViewContext.RouteData.Values["controller"]; else controllerName = (string)html.ViewContext.RouteData.Values["controller"]; } if (pagerOptions == null) pagerOptions = new PagerOptions(); _html = html; _ajax = ajax; _actionName = actionName; _controllerName = controllerName; if (pagerOptions.MaxPageIndex == 0 || pagerOptions.MaxPageIndex > totalPageCount) _totalPageCount = totalPageCount; else _totalPageCount = pagerOptions.MaxPageIndex; _pageIndex = pageIndex; _totalItemCount = totalItemCount; _pagerOptions = pagerOptions; _routeName = routeName; _routeValues = routeValues; _ajaxOptions = ajaxOptions; _htmlAttributes = htmlAttributes; // start page index _startPageIndex = pageIndex - (pagerOptions.NumericPagerItemCount / 2); if (_startPageIndex + pagerOptions.NumericPagerItemCount > _totalPageCount) _startPageIndex = _totalPageCount + 1 - pagerOptions.NumericPagerItemCount; if (_startPageIndex < 1) _startPageIndex = 1; // end page index _endPageIndex = _startPageIndex + _pagerOptions.NumericPagerItemCount - 1; if (_endPageIndex > _totalPageCount) _endPageIndex = _totalPageCount; }
/// <summary> /// Initialize a new instance. /// </summary> /// <param name="currentPage">The current page number in the pager.</param> /// <param name="totalPage">The total page count of the pager.</param> /// <param name="options">The options of the pager.</param> /// <param name="viewContext">The current view context.</param> /// <param name="generationMode">The generation mode.</param> public PagerGenerationContext( int currentPage, int totalPage, PagerOptions options, ViewContext viewContext, PagerGenerationMode generationMode) { Options = options; ViewContext = viewContext; GenerationMode = generationMode; CurrentPage = currentPage; TotalPage = totalPage; GenerationMode = generationMode; }
// Methods internal PagerBuilder(HtmlHelper html, AjaxHelper ajax, PagerOptions pagerOptions, IDictionary<string, object> htmlAttributes) { this.totalPageCountGang = 1; this.startPageIndexGang = 1; this.endPageIndex = 1; if (pagerOptions == null) { pagerOptions = new PagerOptions(); } this.htmlGang = html; this.ajaxGang = ajax; this.pagerOpitonGang = pagerOptions; this.htmlAttributesGang = htmlAttributes; }
public static MvcHtmlString Pager(this HtmlHelper helper, int TotalCount, int pageSize, int pageIndex, string actionName, string controllerName, PagerOptions pagerOptions, string routeName, object routeValues, object htmlAttributes) { var totalPageCount = (int)Math.Ceiling(TotalCount / (double)pageSize); var builder = new PagerBuilder ( helper, actionName, controllerName, totalPageCount, pageIndex, pagerOptions, routeName, new RouteValueDictionary(routeValues), new RouteValueDictionary(htmlAttributes) ); return builder.RenderPager(); }
public PagerOptionsBuilder(PagerOptions pagerOptions) { this.pagerOptions = pagerOptions; }
public FarmTypeResolver(IFarmTypeService farmTypeService, IOptions <PagerOptions> pagerOptions) { _farmTypeService = farmTypeService; _pagerOptions = pagerOptions.Value; }
private static MvcHtmlString Pager(AjaxHelper ajax, PagerOptions pagerOptions, IDictionary<string, object> htmlAttributes) { return new PagerBuilder(null, ajax, pagerOptions, htmlAttributes).RenderPager(); }
public async Task <IActionResult> Get(LabelIndexOptions opts, PagerOptions pager) { if (opts == null) { opts = new LabelIndexOptions();; } if (pager == null) { pager = new PagerOptions(); } if (opts.Sort == LabelSortBy.Auto) { opts.Sort = LabelSortBy.Entities; opts.Order = OrderBy.Desc; } var labels = await _labelService.GetResultsAsync(opts, pager); PagedResults <LabelApiResult> results = null; if (labels != null) { results = new PagedResults <LabelApiResult> { Total = labels.Total }; var baseUrl = await _contextFacade.GetBaseUrlAsync(); foreach (var label in labels.Data) { var url = baseUrl + _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["opts.labelId"] = label.Id, ["opts.alias"] = label.Alias }); results.Data.Add(new LabelApiResult() { Id = label.Id, Name = label.Name, Description = label.Description, ForeColor = label.ForeColor, BackColor = label.BackColor, Alias = label.Alias, TotalEntities = new FriendlyNumber() { Text = label.TotalEntities.ToPrettyInt(), Value = label.TotalEntities }, Rank = 0 }); } } LabelApiResults output = null; if (results != null) { output = new LabelApiResults() { Page = pager.Page, Size = pager.Size, Total = results.Total, TotalPages = results.Total.ToSafeCeilingDivision(pager.Size), Data = results.Data }; } return(output != null ? base.Result(output) : base.NoResults()); }
// --------------- // Settings // --------------- public async Task <IActionResult> Settings(RoleIndexOptions opts, PagerOptions pager) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageFileSettings)) { return(Unauthorized()); } _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav() ).Add(S["Files"], manage => manage .Action("Index", "Admin", "Plato.Files") .LocalNav() ).Add(S["Settings"]); }); // default options if (opts == null) { opts = new RoleIndexOptions(); } // default pager if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new RoleIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = new FileSettingsViewModel() { Options = opts, Pager = pager }; // Add view model to context this.HttpContext.Items[typeof(FileSettingsViewModel)] = viewModel; // Return view return(View((LayoutViewModel)await _settingsViewProvider.ProvideIndexAsync(new FileSetting(), this))); }
public async Task <IViewComponentResult> InvokeAsync(EntityIndexOptions options, PagerOptions pager) { // Build default if (options == null) { options = new EntityIndexOptions(); } // Build default if (pager == null) { pager = new PagerOptions(); } // Review view return(View(await GetViewModel(options, pager))); }
///<include file='MvcPagerDocs.xml' path='MvcPagerDocs/HtmlPager/Constructor[@name="HtmlPager3"]/*'/> public HtmlPager(HtmlHelper html, IPagedList pagedList,PagerOptions pagerOptions) : this(html, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex,pagerOptions) { }
public virtual IHtmlString Pager(object model, PagerOptions options) { return(Pager(model, null, options, null)); }
public async Task <IActionResult> Index(TagIndexOptions opts, PagerOptions pager) { // Default options if (opts == null) { opts = new TagIndexOptions(); } // Default pager if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new TagIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(opts, pager); // Add view model to context HttpContext.Items[typeof(TagIndexViewModel <Tag>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetTags", viewModel)); } } // Return Url for authentication purposes ViewData["ReturnUrl"] = _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = "Plato.Ideas.Tags", ["controller"] = "Home", ["action"] = "Index" }); // Breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Ideas"], ideas => ideas .Action("Index", "Home", "Plato.Ideas") .LocalNav() ).Add(S["Tags"]); }); // Return view return(View((LayoutViewModel)await _tagViewProvider.ProvideIndexAsync(new Tag(), this))); }
public async Task <IViewComponentResult> InvokeAsync(LabelIndexOptions options, PagerOptions pager) { if (options == null) { options = new LabelIndexOptions(); } if (pager == null) { pager = new PagerOptions(); } return(View(await GetViewModel(options, pager))); }
async Task <EntityIndexViewModel <Idea> > GetDisplayViewModelAsync(EntityIndexOptions options, PagerOptions pager) { // Get current feature var feature = await _featureFacade.GetFeatureByIdAsync("Plato.Ideas"); // Restrict results to current feature if (feature != null) { options.FeatureId = feature.Id; } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); return(new EntityIndexViewModel <Idea>() { Options = options, Pager = pager }); }
// --------------- async Task <TagIndexViewModel <Tag> > GetIndexViewModelAsync(TagIndexOptions options, PagerOptions pager) { // Get current feature var feature = await _featureFacade.GetFeatureByIdAsync("Plato.Ideas"); // Restrict results to current feature if (feature != null) { options.FeatureId = feature.Id; } if (options.Sort == TagSortBy.Auto) { options.Sort = TagSortBy.Entities; options.Order = OrderBy.Desc; } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); return(new TagIndexViewModel <Tag>() { Options = options, Pager = pager }); }
public async Task <IActionResult> Display(EntityIndexOptions opts, PagerOptions pager) { // Default options if (opts == null) { opts = new EntityIndexOptions(); } // Default pager if (pager == null) { pager = new PagerOptions(); } // Get tag var tag = await _tagStore.GetByIdAsync(opts.TagId); // Ensure tag exists if (tag == null) { return(NotFound()); } // Get default options var defaultViewOptions = new EntityIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (opts.Filter != defaultViewOptions.Filter) { this.RouteData.Values.Add("opts.filter", opts.Filter); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetDisplayViewModelAsync(opts, pager); // Add view model to context HttpContext.Items[typeof(EntityIndexViewModel <Idea>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetIdeas", viewModel)); } } // Return Url for authentication purposes ViewData["ReturnUrl"] = _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = "Plato.Ideas.Tags", ["controller"] = "Home", ["action"] = "Display", ["opts.tagId"] = tag != null ? tag.Id.ToString() : "", ["opts.alias"] = tag != null ? tag.Alias.ToString() : "" }); // Build page title _pageTitleBuilder.AddSegment(S[tag.Name], int.MaxValue); // Breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Ideas"], ideas => ideas .Action("Index", "Home", "Plato.Ideas") .LocalNav() ).Add(S["Tags"], tags => tags .Action("Index", "Home", "Plato.Ideas.Tags") .LocalNav() ).Add(S[tag.Name]); }); // Return view return(View((LayoutViewModel)await _tagViewProvider.ProvideDisplayAsync(new Tag(tag), this))); }
public async Task <IActionResult> Index(EntityIndexOptions opts, PagerOptions pager) { // Build options if (opts == null) { opts = new EntityIndexOptions(); } // Build pager if (pager == null) { pager = new PagerOptions(); } // Get category var category = await _categoryStore.GetByIdAsync(opts.CategoryId); // If supplied ensure category exists if (category == null && opts.CategoryId > 0) { return(NotFound()); } // Get default options var defaultViewOptions = new EntityIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (opts.Filter != defaultViewOptions.Filter) { this.RouteData.Values.Add("opts.filter", opts.Filter); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(category, opts, pager); // Add view model to context HttpContext.Items[typeof(EntityIndexViewModel <Question>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0 && !pager.Enabled) { return(View("GetQuestions", viewModel)); } } // Return Url for authentication purposes ViewData["ReturnUrl"] = _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = "Plato.Questions.Categories", ["controller"] = "Home", ["action"] = "Index", ["opts.categoryId"] = category != null ? category.Id.ToString() : "", ["opts.alias"] = category != null ? category.Alias.ToString() : "" }); // Build page title if (category != null) { _pageTitleBuilder.AddSegment(S[category.Name], int.MaxValue); } // Build breadcrumb _breadCrumbManager.Configure(async builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Questions"], home => home .Action("Index", "Home", "Plato.Questions") .LocalNav() ); // Build breadcrumb var parents = category != null ? await _categoryStore.GetParentsByIdAsync(category.Id) : null; if (parents == null) { builder.Add(S["Categories"]); } else { builder.Add(S["Categories"], channels => channels .Action("Index", "Home", "Plato.Questions.Categories", new RouteValueDictionary() { ["opts.categoryId"] = null, ["opts.alias"] = null }) .LocalNav() ); foreach (var parent in parents) { if (parent.Id != category.Id) { builder.Add(S[parent.Name], channel => channel .Action("Index", "Home", "Plato.Questions.Categories", new RouteValueDictionary { ["opts.categoryId"] = parent.Id, ["opts.alias"] = parent.Alias, }) .LocalNav() ); } else { builder.Add(S[parent.Name]); } } } }); // Return view return(View((LayoutViewModel)await _viewProvider.ProvideIndexAsync(category, this))); }
// ------------ // Index // ------------ public async Task <IActionResult> Index(LabelIndexOptions opts, PagerOptions pager) { //if (!await _authorizationService.AuthorizeAsync(User, PermissionsProvider.ManageRoles)) //{ // return Unauthorized(); //} if (opts == null) { opts = new LabelIndexOptions(); } if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new LabelIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(opts, pager); // Add view model to context HttpContext.Items[typeof(LabelIndexViewModel <Label>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetLabels", viewModel)); } } // Breadcrumb _breadCrumbManager.Configure(builder => { builder .Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav()) .Add(S["Questions"], questions => questions .Action("Index", "Admin", "Plato.Questions") .LocalNav()) .Add(S["Labels"]); }); // Return view return(View((LayoutViewModel)await _viewProvider.ProvideIndexAsync(new Label(), this))); }
// -------------- // Manage Users // -------------- public async Task <IActionResult> Index(int offset, UserIndexOptions opts, PagerOptions pager) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(HttpContext.User, Permissions.ManageUsers)) { return(Unauthorized()); } // default options if (opts == null) { opts = new UserIndexOptions(); } // default pager if (pager == null) { pager = new PagerOptions(); } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); // Get default options var defaultViewOptions = new UserIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { RouteData.Values.Add("pager.size", pager.Size); } // Enable edit options for admin view opts.EnableEdit = true; var viewModel = new UserIndexViewModel() { Options = opts, Pager = pager }; // Add view options to context for use within view adapters HttpContext.Items[typeof(UserIndexViewModel)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetUsers", viewModel)); } } // Build breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav() ).Add(S["Users"]); }); // Return view return(View((LayoutViewModel)await _viewProvider.ProvideIndexAsync(new User(), this))); }
async Task <EntityIndexViewModel <Doc> > GetIndexViewModelAsync(EntityIndexOptions options, PagerOptions pager) { // Get current feature var feature = await _featureFacade.GetFeatureByIdAsync(RouteData.Values["area"].ToString()); // Restrict results to current feature if (feature != null) { options.FeatureId = feature.Id; } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); // Return updated model return(new EntityIndexViewModel <Doc>() { Options = options, Pager = pager }); }
public async Task <IPagedResults <TModel> > GetResultsAsync(EntityIndexOptions options, PagerOptions pager) { if (options == null) { options = new EntityIndexOptions(); } if (pager == null) { pager = new PagerOptions(); } // Special edge case for popular entities if (options.Sort == SortBy.Popular) { options.AddSortColumn(SortBy.Participants.ToString(), options.Order); options.AddSortColumn(SortBy.Replies.ToString(), options.Order); options.AddSortColumn(SortBy.Views.ToString(), options.Order); options.AddSortColumn(SortBy.LastReply.ToString(), options.Order); } else { options.AddSortColumn(options.Sort.ToString(), options.Order); } // Get authenticated user var user = await _contextFacade.GetAuthenticatedUserAsync(); // Return tailored results return(await _entityStore.QueryAsync() .Take(pager.Page, pager.Size, pager.CountTotal) .Configure(_configureDb) .Select <SimpleEntityQueryParams>(q => { // ---------------- // Set current authenticated user id // This is required for various security checks // i.e. Role based security & displaying private entities // ---------------- q.UserId.Equals(user?.Id ?? 0); // ---------------- // Basic parameters // ---------------- if (options.FeatureId != null && options.FeatureId.Value > 0) { q.FeatureId.Equals(options.FeatureId.Value); } if (!string.IsNullOrEmpty(options.Search)) { q.Keywords.Like(options.Search); } // Multiple categories if (options.CategoryIds != null) { q.CategoryId.IsIn(options.CategoryIds); } else { // A single category if (options.CategoryId >= 0) { q.CategoryId.Equals(options.CategoryId); } } if (options.LabelId > 0) { q.LabelId.Equals(options.LabelId); } if (options.TagId > 0) { q.TagId.Equals(options.TagId); } if (options.CreatedByUserId > 0) { q.CreatedUserId.Equals(options.CreatedByUserId); } // ---------------- // Filters // ---------------- switch (options.Filter) { case FilterBy.Started: if (user != null) { q.CreatedUserId.Equals(user.Id); } break; case FilterBy.Participated: if (user != null) { q.ParticipatedUserId.Equals(user.Id); } break; case FilterBy.Following: if (user != null) { q.FollowUserId.Equals(user.Id); } break; case FilterBy.Starred: if (user != null) { q.StarUserId.Equals(user.Id); } break; case FilterBy.NoReplies: q.TotalReplies.Equals(0); break; } // ---------------- // Additional parameter configuration // ---------------- _configureParams?.Invoke(q); }) .OrderBy(options.SortColumns) .ToList()); }
async Task <EntityIndexViewModel <Article> > GetDisplayViewModelAsync(EntityIndexOptions options, PagerOptions pager) { // Get articles feature options.FeatureId = await GetFeatureIdAsync(); // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); // Return updated model return(new EntityIndexViewModel <Article>() { Options = options, Pager = pager }); }
// ----------------- // User List // ----------------- public async Task <IActionResult> Index(UserIndexOptions opts, PagerOptions pager) { // Ensure we have permission if (!await _authorizationService.AuthorizeAsync(User, Permissions.ViewUsers)) { return(Unauthorized()); } // default options if (opts == null) { opts = new UserIndexOptions(); } // default pager if (pager == null) { pager = new PagerOptions(); } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); // Get default options var defaultViewOptions = new UserIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = new UserIndexViewModel() { Options = opts, Pager = pager }; // Add view model to context HttpContext.Items[typeof(UserIndexViewModel)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetUsers", viewModel)); } } // Return Url for authentication & canonical url purposes ViewData["ReturnUrl"] = _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = "Plato.Users", ["controller"] = "Home", ["action"] = "Index" }); // Breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Users"]); }); // Return view return(View((LayoutViewModel)await _viewProvider.ProvideIndexAsync(new ProfilePage(), this))); }
public static MvcHtmlString Pager(this AjaxHelper ajax, IPagedList pagedList, string routeName, RouteValueDictionary routeValues, PagerOptions pagerOptions, AjaxOptions ajaxOptions, IDictionary<string, object> htmlAttributes) { if (pagedList == null) return Pager(ajax, pagerOptions, htmlAttributes); return Pager(ajax, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, routeName, pagerOptions, routeValues, ajaxOptions, htmlAttributes); }
public async Task <IActionResult> Index(EntityIndexOptions opts, PagerOptions pager) { // Default options if (opts == null) { opts = new EntityIndexOptions(); } // Default pager if (pager == null) { pager = new PagerOptions(); } // Get user var user = await _platoUserStore.GetByIdAsync(opts.CreatedByUserId); // Ensure user exists if (user == null) { return(NotFound()); } // Get default options var defaultViewOptions = new EntityIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (opts.Filter != defaultViewOptions.Filter) { this.RouteData.Values.Add("opts.filter", opts.Filter); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(opts, pager); // Add view model to context this.HttpContext.Items[typeof(EntityIndexViewModel <Doc>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetDocs", viewModel)); } } // Build page title _pageTitleBuilder .AddSegment(S["Users"]) .AddSegment(S[user.DisplayName]) .AddSegment(S["Docs"]); // Build breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Users"], users => users .Action("Index", "Home", "Plato.Users") .LocalNav() ).Add(S[user.DisplayName], name => name .Action("Display", "Home", "Plato.Users", new RouteValueDictionary() { ["opts.id"] = user.Id, ["opts.alias"] = user.Alias }) .LocalNav() ).Add(S["Docs"]); }); //// Return view return(View((LayoutViewModel)await _userViewProvider.ProvideDisplayAsync(new UserIndex() { Id = user.Id }, this))); }
async Task <EntityViewModel <Idea, IdeaComment> > GetViewModel(EntityOptions options, PagerOptions pager) { var topic = await _entityStore.GetByIdAsync(options.Id); if (topic == null) { throw new ArgumentNullException(); } var results = await _replyService .ConfigureQuery(async q => { // Hide private? if (!await _authorizationService.AuthorizeAsync(HttpContext.User, Permissions.ViewHiddenIdeaComments)) { q.HideHidden.True(); } // Hide spam? if (!await _authorizationService.AuthorizeAsync(HttpContext.User, Permissions.ViewSpamIdeaComments)) { q.HideSpam.True(); } // Hide deleted? if (!await _authorizationService.AuthorizeAsync(HttpContext.User, Permissions.ViewDeletedIdeaComments)) { q.HideDeleted.True(); } }) .GetResultsAsync(options, pager); // Set total on pager pager.SetTotal(results?.Total ?? 0); // Return view model return(new EntityViewModel <Idea, IdeaComment> { Options = options, Pager = pager, Entity = topic, Replies = results }); }
public static MvcHtmlString Pager(this AjaxHelper ajax, IPagedList pagedList, PagerOptions pagerOptions, AjaxOptions ajaxOptions) { return pagedList == null ? Pager(ajax, pagerOptions, null) : Pager(ajax, pagedList.TotalItemCount, pagedList.PageSize, pagedList.CurrentPageIndex, null, null, null, pagerOptions, null, ajaxOptions, null); }
//non Ajax pager builder internal PagerBuilder(HtmlHelper helper, string actionName, string controllerName, int totalPageCount, int pageIndex, int totalItemCount, PagerOptions pagerOptions, string routeName, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes) : this(helper, null, actionName, controllerName, totalPageCount, pageIndex, totalItemCount, pagerOptions, routeName, routeValues, null, htmlAttributes) { }
private static MvcHtmlString Pager(HtmlHelper helper, PagerOptions pagerOptions, IDictionary<string, object> htmlAttributes) { return new PagerBuilder(helper, null, pagerOptions, htmlAttributes).RenderPager(); }
// --------------- async Task <LabelIndexViewModel <Label> > GetIndexViewModelAsync(LabelIndexOptions options, PagerOptions pager) { // Get articles feature options.FeatureId = await GetFeatureIdAsync(); if (options.Sort == LabelSortBy.Auto) { options.Sort = LabelSortBy.Entities; options.Order = OrderBy.Desc; } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); return(new LabelIndexViewModel <Label>() { Options = options, Pager = pager }); }
public async Task <IActionResult> Index(ReportOptions opts, PagerOptions pager) { // Default options if (opts == null) { opts = new ReportOptions(); } // Default pager if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new ReportOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Start != defaultViewOptions.Start) { this.RouteData.Values.Add("opts.start", opts.Start); } if (opts.End != defaultViewOptions.End) { this.RouteData.Values.Add("opts.end", opts.End); } if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(opts, pager); // Add view model to context HttpContext.Items[typeof(ReportIndexViewModel <Metric>)] = viewModel; // If we have a pager.page querystring value return paged view if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetMetrics", viewModel)); } } // Build breadcrumb _breadCrumbManager.Configure(builder => { builder .Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav()) .Add(S["Reports"], home => home .Action("Index", "Admin", "Plato.Reports") .LocalNav()) .Add(S["Page Views"], reports => reports .LocalNav()); }); // Return view return(View((LayoutViewModel)await _pageViewsViewProvider.ProvideIndexAsync(new PageViewIndex(), this))); }
public ProductFarmController(IFarmService farmService, IHttpContextAccessor httpContextAccessor, IOptions <PagerOptions> pagerOptions) : base(httpContextAccessor) { _farmService = farmService; _pagerOptions = pagerOptions.Value; }
public async Task <IActionResult> Display(EntityIndexOptions opts, PagerOptions pager) { // Default options if (opts == null) { opts = new EntityIndexOptions(); } // Default pager if (pager == null) { pager = new PagerOptions(); } // Get tag var tag = await _tagStore.GetByIdAsync(opts.TagId); // Ensure tag exists if (tag == null) { return(NotFound()); } // Get default options var defaultViewOptions = new EntityIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order) { this.RouteData.Values.Add("opts.order", opts.Order); } if (opts.Filter != defaultViewOptions.Filter) { this.RouteData.Values.Add("opts.filter", opts.Filter); } if (pager.Page != defaultPagerOptions.Page) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetDisplayViewModelAsync(opts, pager); // Add view model to context HttpContext.Items[typeof(EntityIndexViewModel <Topic>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetTopics", viewModel)); } } // Build page title _pageTitleBuilder.AddSegment(S[tag.Name], int.MaxValue); // Breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Discuss"], discuss => discuss .Action("Index", "Home", "Plato.Discuss") .LocalNav() ).Add(S["Tags"], labels => labels .Action("Index", "Home", "Plato.Discuss.Tags") .LocalNav() ).Add(S[tag.Name]); }); // Return view return(View((LayoutViewModel)await _tagViewProvider.ProvideDisplayAsync(new Tag(tag), this))); }
public async Task <IActionResult> Index(LabelIndexOptions opts, PagerOptions pager) { if (opts == null) { opts = new LabelIndexOptions(); } if (pager == null) { pager = new PagerOptions(); } // Get default options var defaultViewOptions = new LabelIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search && !this.RouteData.Values.ContainsKey("opts.search")) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort && !this.RouteData.Values.ContainsKey("opts.sort")) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order && !this.RouteData.Values.ContainsKey("opts.order")) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page && !this.RouteData.Values.ContainsKey("pager.page")) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size && !this.RouteData.Values.ContainsKey("pager.size")) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetIndexViewModelAsync(opts, pager); // Add view options to context HttpContext.Items[typeof(LabelIndexViewModel <Label>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0) { return(View("GetLabels", viewModel)); } } // Breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Docs"], docs => docs .Action("Index", "Home", "Plato.Docs") .LocalNav() ).Add(S["Labels"]); }); // Return view return(View((LayoutViewModel)await _labelViewProvider.ProvideIndexAsync(new Label(), this))); }
public async Task <IPagedResults <TModel> > GetResultsAsync(EntityOptions options, PagerOptions pager) { // Build sort columns from model var sortColumns = new Dictionary <string, OrderBy>(); if (options.SortColumns != null) { foreach (var column in options.SortColumns) { sortColumns.Add(column.Key, column.Value); } } else { sortColumns.Add(options.Sort, options.Order); } return(await _entityReplyStore.QueryAsync() .Take(pager.Page, pager.Size) .Configure(_configureDb) .Select <EntityReplyQueryParams>(q => { q.EntityId.Equals(options.Id); // Additional parameter configuration _configureParams?.Invoke(q); }) .OrderBy(sortColumns) .ToList()); }
async Task <EntityIndexViewModel <Question> > GetIndexViewModelAsync(Category category, EntityIndexOptions options, PagerOptions pager) { // Get current feature var feature = await _featureFacade.GetFeatureByIdAsync("Plato.Questions"); // Restrict results to current feature if (feature != null) { options.FeatureId = feature.Id; } // Include child channels if (category != null) { if (category.Children.Any()) { // Convert child ids to list and add current id var ids = category .Children .Select(c => c.Id).ToList(); ids.Add(category.Id); options.CategoryIds = ids.ToArray(); } else { options.CategoryId = category.Id; } } // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); // Ensure pinned entities appear first if (options.Sort == SortBy.LastReply) { options.SortColumns.Add(SortBy.IsPinned.ToString(), OrderBy.Desc); } // Return updated model return(new EntityIndexViewModel <Question>() { Options = options, Pager = pager }); }
async Task <LabelIndexViewModel <Label> > GetViewModel(LabelIndexOptions options, PagerOptions pager) { var results = await _labelService .GetResultsAsync(options, pager); // Set total on pager pager.SetTotal(results?.Total ?? 0); // Return view model return(new LabelIndexViewModel <Label> { SortColumns = _defaultSortColumns, SortOrder = _defaultSortOrder, Results = results, Options = options, Pager = pager }); }
public async Task <IActionResult> Display(EntityIndexOptions opts, PagerOptions pager) { // Get label var label = await _labelStore.GetByIdAsync(opts.LabelId); // Ensure label exists if (label == null) { return(NotFound()); } // Get default options var defaultViewOptions = new EntityIndexOptions(); var defaultPagerOptions = new PagerOptions(); // Add non default route data for pagination purposes if (opts.Search != defaultViewOptions.Search && !this.RouteData.Values.ContainsKey("opts.search")) { this.RouteData.Values.Add("opts.search", opts.Search); } if (opts.Sort != defaultViewOptions.Sort && !this.RouteData.Values.ContainsKey("opts.sort")) { this.RouteData.Values.Add("opts.sort", opts.Sort); } if (opts.Order != defaultViewOptions.Order && !this.RouteData.Values.ContainsKey("opts.order")) { this.RouteData.Values.Add("opts.order", opts.Order); } if (pager.Page != defaultPagerOptions.Page && !this.RouteData.Values.ContainsKey("pager.page")) { this.RouteData.Values.Add("pager.page", pager.Page); } if (pager.Size != defaultPagerOptions.Size && !this.RouteData.Values.ContainsKey("pager.size")) { this.RouteData.Values.Add("pager.size", pager.Size); } // Build view model var viewModel = await GetDisplayViewModelAsync(opts, pager); // Add view model to context this.HttpContext.Items[typeof(EntityIndexViewModel <Article>)] = viewModel; // If we have a pager.page querystring value return paged results if (int.TryParse(HttpContext.Request.Query["pager.page"], out var page)) { if (page > 0 && !pager.Enabled) { return(View("GetArticles", viewModel)); } } // Return Url for authentication purposes ViewData["ReturnUrl"] = _contextFacade.GetRouteUrl(new RouteValueDictionary() { ["area"] = "Plato.Articles.Labels", ["controller"] = "Home", ["action"] = "Display", ["opts.labelId"] = label != null ? label.Id.ToString() : "", ["opts.alias"] = label != null ? label.Alias.ToString() : "" }); // Build page title _pageTitleBuilder.AddSegment(S[label.Name], int.MaxValue); // Build breadcrumb _breadCrumbManager.Configure(builder => { builder.Add(S["Home"], home => home .Action("Index", "Home", "Plato.Core") .LocalNav() ).Add(S["Articles"], discuss => discuss .Action("Index", "Home", "Plato.Articles") .LocalNav() ).Add(S["Labels"], labels => labels .Action("Index", "Home", "Plato.Articles.Labels") .LocalNav() ).Add(S[label.Name]); }); // Return view return(View((LayoutViewModel)await _labelViewProvider.ProvideDisplayAsync(label, this))); }
// ------------ async Task <LabelIndexViewModel <Label> > GetIndexViewModelAsync(LabelIndexOptions options, PagerOptions pager) { // Get questions feature options.FeatureId = await GetFeatureIdAsync(); if (options.Sort == LabelSortBy.Auto) { options.Sort = LabelSortBy.Modified; options.Order = OrderBy.Desc; } // Indicate administrator view options.EnableEdit = true; // Set pager call back Url pager.Url = _contextFacade.GetRouteUrl(pager.Route(RouteData)); return(new LabelIndexViewModel <Label>() { Options = options, Pager = pager }); }
/// <summary> /// Generates a page link item for the pager with filter and order information /// </summary> /// <typeparam name="TModel">The type of the object that will be used to generate a url querystring</typeparam> /// <typeparam name="TList">The type of the object the PagedList collection should contain</typeparam> /// <param name="pagedList">The PagedList object instance</param> /// <param name="filterModel">The object instance that will be used to generate a url querystring</param> /// <param name="page">The page number of the pager item</param> /// <param name="pageType">The type of the pager item</param> /// <param name="urlFunction">A function that takes the page number and returns the page url</param> /// <param name="pagerOptions">Formating options</param> /// <returns>Page link item HTML string for the pager with filter and order information</returns> private static string GeneratePageLink <TModel, TList>(PagedList <TList> pagedList, TModel filterModel, int page, PageType pageType, Func <int, string> urlFunction, PagerOptions pagerOptions) { TagBuilder li = new TagBuilder("li"); TagBuilder a = new TagBuilder("a"); a.AddCssClass("pager-action"); if (filterModel == null) { a.Attributes.Add("href", urlFunction(page)); } else { a.Attributes.Add("href", "javascript:GetSignals(" + page + ")"); } if (pageType == PageType.First) { if (pagedList.ActualPage == 1) { if (!string.IsNullOrWhiteSpace(pagerOptions.NoPreviousPageContainerCssClass)) { li.AddCssClass(pagerOptions.NoPreviousPageContainerCssClass); } else { li.AddCssClass("disabled"); } if (!string.IsNullOrWhiteSpace(pagerOptions.NoPreviousPageLinkCssClass)) { a.AddCssClass(pagerOptions.NoPreviousPageLinkCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.NoPreviousPageContent)) { a.InnerHtml = pagerOptions.NoPreviousPageContent; } else { a.InnerHtml = "<<"; } } else { if (!string.IsNullOrWhiteSpace(pagerOptions.PreviousPageContainerCssClass)) { li.AddCssClass(pagerOptions.PreviousPageContainerCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.PreviousPageLinkCssClass)) { a.AddCssClass(pagerOptions.PreviousPageLinkCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.PreviousPageContent)) { a.InnerHtml = pagerOptions.PreviousPageContent; } else { a.InnerHtml = "<<"; } } } else if (pageType == PageType.Last) { if (pagedList.ActualPage == pagedList.PageCount || pagedList.PageCount == 1) { if (!string.IsNullOrWhiteSpace(pagerOptions.NextPageContainerCssClass)) { li.AddCssClass(pagerOptions.NextPageContainerCssClass); } else { li.AddCssClass("disabled"); } if (!string.IsNullOrWhiteSpace(pagerOptions.NoNextPageLinkCssClass)) { a.AddCssClass(pagerOptions.NoNextPageLinkCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.NoNextPageContent)) { a.InnerHtml = pagerOptions.NoNextPageContent; } else { a.InnerHtml = ">>"; } } else { if (!string.IsNullOrWhiteSpace(pagerOptions.NextPageContainerCssClass)) { li.AddCssClass(pagerOptions.NextPageContainerCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.NextPageLinkCssClass)) { a.AddCssClass(pagerOptions.NextPageLinkCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.NextPageContent)) { a.InnerHtml = pagerOptions.NextPageContent; } else { a.InnerHtml = ">>"; } } } else { if (page == pagedList.ActualPage) { if (!string.IsNullOrWhiteSpace(pagerOptions.ActualPageContainerCssClass)) { li.AddCssClass(pagerOptions.ActualPageContainerCssClass); } else { li.AddCssClass("active"); } if (!string.IsNullOrWhiteSpace(pagerOptions.ActualPageLinkCssClass)) { a.AddCssClass(pagerOptions.ActualPageLinkCssClass); } } else { if (!string.IsNullOrWhiteSpace(pagerOptions.PageContainerCssClass)) { li.AddCssClass(pagerOptions.PageContainerCssClass); } if (!string.IsNullOrWhiteSpace(pagerOptions.PageLinkCssClass)) { a.AddCssClass(pagerOptions.PageLinkCssClass); } } a.SetInnerText(page.ToString()); } li.InnerHtml = a.ToString(); return(li.ToString()); }