// --------------- async Task <TagIndexViewModel <Tag> > GetIndexViewModelAsync(TagIndexOptions options, PagerOptions pager) { // Get current feature var feature = await _featureFacade.GetFeatureByIdAsync("Plato.Discuss"); // 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 <IViewComponentResult> InvokeAsync(TagIndexOptions options, PagerOptions pager) { if (options == null) { options = new TagIndexOptions(); } if (pager == null) { pager = new PagerOptions(); } return(View(await GetViewModel(options, pager))); }
public async Task <IPagedResults <TModel> > GetResultsAsync(TagIndexOptions options, PagerOptions pager) { return(await _tagStore.QueryAsync() .Take(pager.Page, pager.Size) .Select <TagQueryParams>(q => { q.FeatureId.Equals(options.FeatureId); if (!String.IsNullOrEmpty(options.Search)) { q.Keywords.Like(options.Search); } }) .OrderBy(options.Sort.ToString(), options.Order) .ToList()); }
async Task <TagIndexViewModel <Tag> > GetViewModel(TagIndexOptions options, PagerOptions pager) { // Get tags var results = await _tagService.GetResultsAsync(options, pager); // Set total on pager pager.SetTotal(results?.Total ?? 0); // Return view model return(new TagIndexViewModel <Tag>() { Results = results, Options = options, Pager = pager }); }
// ------------ async Task <TagIndexViewModel <Tag> > GetIndexViewModelAsync(TagIndexOptions options, PagerOptions pager) { // Get feature options.FeatureId = await GetFeatureIdAsync(); if (options.Sort == TagSortBy.Auto) { options.Sort = TagSortBy.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 TagIndexViewModel <Tag>() { Options = options, Pager = pager }); }
// ------------ // Index // ------------ public async Task <IActionResult> Index(TagIndexOptions opts, PagerOptions pager) { //if (!await _authorizationService.AuthorizeAsync(User, PermissionsProvider.ManageRoles)) //{ // return Unauthorized(); //} if (opts == null) { opts = new TagIndexOptions(); } 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)); } } // Breadcrumb _breadCrumbManager.Configure(builder => { builder .Add(S["Home"], home => home .Action("Index", "Admin", "Plato.Admin") .LocalNav()) .Add(S["Articles"], discuss => discuss .Action("Index", "Admin", "Plato.Articles") .LocalNav()) .Add(S["Tags"]); }); // Return view return(View((LayoutViewModel)await _viewProvider.ProvideIndexAsync(new Tag(), this))); }
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.Discuss.Tags", ["controller"] = "Home", ["action"] = "Index" }); // 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"]); }); // Return view return(View((LayoutViewModel)await _tagViewProvider.ProvideIndexAsync(new Tag(), this))); }