コード例 #1
0
ファイル: HomeController.cs プロジェクト: azgas/plato
        // ---------------

        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
            });
        }
コード例 #2
0
        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)));
        }
コード例 #3
0
ファイル: TagService.cs プロジェクト: vdandrade/Plato
 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());
 }
コード例 #4
0
        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
            });
        }
コード例 #5
0
        // ------------

        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
            });
        }
コード例 #6
0
        // ------------
        // 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)));
        }
コード例 #7
0
ファイル: HomeController.cs プロジェクト: azgas/plato
        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)));
        }