Ejemplo n.º 1
0
        public async Task <IActionResult> Index(string contentitemid = "/", string type = "root")
        {
            //if (!Services.Authorizer.Authorize(StandardPermissions.AccessAdminPanel,
            //    T("Not allowed to access admin panel")))
            //    return new HttpUnauthorizedResult();

            var node = await GetTreeNode(contentitemid, type) ?? new BreadCrumbNode
            {
                Id = "/", Type = "root", Title = "Root"
            };

            //https://stackoverflow.com/questions/18602923/selectmany-cannot-infer-type-argument-why-not
            //var level0 = _breadcrumbNodeProviders.Select(  p =>    p.GetChildren(type, contentitemid).Result.Select(x=>x)) ;
            //var children = level0.SelectMany(x => x);
            var children = await _breadCrumbNodeProvider.GetChildren(type, contentitemid);

            //  var children =     _treeNodeProviders.Select(x=> x).SelectMany(p => p.GetChildren(type, id).Result);
            //  var children = await  _treeNodeProviders.SelectMany(p => p.GetChildren(type, id));
            var model = new AdvancedBreadCrumbPartViewModel
            {
                Node     = node,
                Children = children
            };

            if (Request.IsAjaxRequest())
            {
                return(new JsonResult(new { Data = model }));
            }
            return(View(model));
        }
Ejemplo n.º 2
0
//        public override IDisplayResult Edit(AdvancedBreadCrumbPart part)
//        {
//            return Initialize<AdvancedBreadCrumbPartViewModel>("AdvancedBreadCrumbPart_Edit",   m => BuildViewModel(m, part))
//                .Location("Detail", "Content:10")
//                .Location("SummaryAdmin", "Content:5")
//                .Location("DetailAdmin", "Content:before");
//        }
//
//        public override async Task<IDisplayResult> UpdateAsync(AdvancedBreadCrumbPart model, IUpdateModel updater)
//        {
//            //   var settings = GetDisqusPartSettings(model);
//
//            await updater.TryUpdateModelAsync(model, Prefix, t => t);// t => t.ShowComments);
//
//            return Edit(model);
//        }



        //http://www.hexacta.com/2016/06/01/task-run-vs-async-await/
        //private Task BuildViewModel(AdvancedBreadCrumbPartViewModel model, AdvancedBreadCrumbPart part)
        private Task BuildViewModel(AdvancedBreadCrumbPartViewModel model, AdvancedBreadCrumbPart part)
        {
            model.ContentItem            = part.ContentItem;
            model.AdvancedBreadCrumbPart = part;
            GetRootNode(part.ContentItem.ContentItemId, model);

            //await Task.Run(() =>
            //{
            //    model.ContentItem = part.ContentItem;
            //    model.AdvancedBreadCrumbPart = part;
            //    GetRootNode(part.ContentItem.ContentItemId, model);

            //});

            //   var settings = GetDisqusPartSettings(part);
            //  var vm = new AdvancedBreadCrumbPartViewModel();

            //model.ShortName = settings.ShortName;
            //model.ShowComments = part.ShowComments;

            // model.Settings = settings;

            // var task=  GetRootNode(part.ContentItem.ContentItemId, model);
            //  task.RunSynchronously();

            //  return vm;
            return(Task.CompletedTask);
        }
Ejemplo n.º 3
0
        //http://www.hexacta.com/2016/06/01/task-run-vs-async-await/
        private async void GetRootNode(string id, AdvancedBreadCrumbPartViewModel model, string type = "root")
        {
            //if (!Services.Authorizer.Authorize(StandardPermissions.AccessAdminPanel,
            //    T("Not allowed to access admin panel")))
            //    return new HttpUnauthorizedResult();
            //https://stackoverflow.com/questions/35011656/async-await-in-linq-select
            var node = await GetBreadCrumbNode(id, type);

            //var node = await  task;
            if (node == null)
            {
                node = new BreadCrumbNode
                {
                    Id    = "/",
                    Type  = "root",
                    Title = T["Root"].Value
                };
                //  var node =await  GetBreadCrumbNode(id, type) ?? new  BreadCrumbNode { Id = "/", Type = "root", Title = T["Root"].Value };

                //https://stackoverflow.com/questions/18602923/selectmany-cannot-infer-type-argument-why-not
                var children = await _breadCrumbNodeProvider.GetChildren(type, id);

                // var levell0 = children0.Select(x => x);
                //var levell0 = _breadcrumbNodeProviders.OfType<AdvancedBreadCrumbNodeProvider>()
                //    .Select(p => p.GetChildren(type, id).Result.Select(x => x));

                //  var children = levell0.SelectMany(x => x);
                model.Node     = node;
                model.Children = children;
                //var model = new TreeExplorerViewModel
                //{
                //    Node = node,
                //    Children = children
                //};
                //if (Request.IsAjaxRequest())
                //{
                //    return new JsonResult { Data = model };
                //}

                //  return model;
            }
            // return Task.CompletedTask;
        }