コード例 #1
0
        /// <summary>
        /// Generate the breadcrumbs for the file view/upload.
        /// </summary>
        /// <param name="folderId">Folder Id to get parent folder heirarchy.</param>
        /// <param name="slug"></param>
        /// <param name="filename">Name of file to append as non clickable text</param>
        /// <returns></returns>
        private BreadcrumbsViewModel GetBreadcrumbs(Guid?folderId, string slug, string filename = null)
        {
            var breadCrumbs = new BreadcrumbsViewModel()
            {
                BreadcrumbLinks = new List <BreadCrumbItem>()
            };
            var x = @Url.RouteUrl("GroupUrls", new { slug = slug, tab = Constants.GroupFilesTab });

            breadCrumbs.BreadcrumbLinks.Add(new BreadCrumbItem()
            {
                Url = @Url.RouteUrl("GroupUrls", new { slug = slug, tab = Constants.GroupFilesTab }), Name = "Files"
            });
            if (folderId.HasValue)
            {
                var bc = _folderService.GenerateBreadcrumbTrailAsync(folderId.Value, CancellationToken.None).Result;

                if (bc != null)
                {
                    if (bc.Count() == 4)
                    {
                        bc.First().Name = "...";
                    }
                    breadCrumbs.BreadcrumbLinks.AddRange(bc.Select(b => new BreadCrumbItem {
                        Name = b.Name, Url = @Url.RouteUrl("GroupUrls", new { slug = slug, tab = Constants.GroupFilesTab, folder = b.Id })
                    }));
                }
            }
            breadCrumbs.LastEntry = filename;

            return(breadCrumbs);
        }
コード例 #2
0
        public IViewComponentResult Invoke(string additional)
        {
            var currentPage = ViewContext.GetCurrentItem();

            var model = new BreadcrumbsViewModel(currentPage, additional);

            return(View(model));
        }
コード例 #3
0
        public IViewComponentResult Invoke()
        {
            var model = new BreadcrumbsViewModel()
            {
                Breadcrumbs = BuildBreadcrumbs()
            };

            return(View(model));
        }
コード例 #4
0
        public ActionResult Index()
        {
            IList <BreadcrumbsViewModel> breadcrumbs = new List <BreadcrumbsViewModel>();
            Category lastCategory = null;
            Product  product      = CatalogContext.CurrentProduct;

            foreach (var category in CatalogContext.CurrentCategories)
            {
                var breadcrumb = new BreadcrumbsViewModel
                {
                    BreadcrumbName = category.DisplayName,
                    BreadcrumbUrl  = UrlService.GetUrl(CatalogContext.CurrentCatalog, new[] { category })
                };
                lastCategory = category;
                breadcrumbs.Add(breadcrumb);
            }

            if (product != null)
            {
                var breadcrumb = new BreadcrumbsViewModel
                {
                    BreadcrumbName = product.DisplayName,
                    BreadcrumbUrl  = UrlService.GetUrl(CatalogContext.CurrentCatalog,
                                                       new[] { lastCategory }.Compact().ToArray(),
                                                       product)
                };
                breadcrumbs.Add(breadcrumb);
            }

            if (product == null && lastCategory == null)
            {
                var currentNode = CurrentPage;
                foreach (var level in currentNode.Ancestors().Where(IsVisible))
                {
                    var breadcrumb = new BreadcrumbsViewModel()
                    {
                        BreadcrumbName = level.Name,
                        BreadcrumbUrl  = level.Url
                    };
                    breadcrumbs.Add(breadcrumb);
                }

                var currentBreadcrumb = new BreadcrumbsViewModel()
                {
                    BreadcrumbName = currentNode.Name,
                    BreadcrumbUrl  = currentNode.Url
                };
                breadcrumbs.Add(currentBreadcrumb);
            }

            return(View("/Views/PartialView/Breadcrumbs.cshtml", breadcrumbs));
        }
コード例 #5
0
        public ActionResult Index()
        {
            IList <BreadcrumbsViewModel> breadcrumbs = new List <BreadcrumbsViewModel>();
            Category lastCategory = null;
            Product  product      = SiteContext.Current.CatalogContext.CurrentProduct;

            foreach (var category in SiteContext.Current.CatalogContext.CurrentCategories)
            {
                var breadcrumb = new BreadcrumbsViewModel
                {
                    BreadcrumbName = category.DisplayName(),
                    BreadcrumbUrl  = CatalogLibrary.GetNiceUrlForCategory(category)
                };
                lastCategory = category;
                breadcrumbs.Add(breadcrumb);
            }

            if (product != null)
            {
                var breadcrumb = new BreadcrumbsViewModel
                {
                    BreadcrumbName = product.DisplayName(),
                    BreadcrumbUrl  = CatalogLibrary.GetNiceUrlForProduct(product, lastCategory)
                };
                breadcrumbs.Add(breadcrumb);
            }

            if (product == null && lastCategory == null)
            {
                var currentNode = CurrentPage;
                foreach (var level in currentNode.Ancestors().Where(IsVisible))
                {
                    var breadcrumb = new BreadcrumbsViewModel()
                    {
                        BreadcrumbName = level.Name,
                        BreadcrumbUrl  = level.Url
                    };
                    breadcrumbs.Add(breadcrumb);
                }
                var currentBreadcrumb = new BreadcrumbsViewModel()
                {
                    BreadcrumbName = currentNode.Name,
                    BreadcrumbUrl  = currentNode.Url
                };
                breadcrumbs.Add(currentBreadcrumb);
            }

            return(View("/Views/PartialView/Breadcrumbs.cshtml", breadcrumbs));
        }
コード例 #6
0
        public ActionResult RenderBreadcrumbs()
        {
            var visibleOrderedAncestors = CurrentPage.Ancestors()
                                          .Where(x => x.IsVisible())
                                          .OrderBy(x => x.Level)
                                          .ToList();

            var viewModel = new BreadcrumbsViewModel()
            {
                Ancestors   = _navigationItemService.GetViewModels(visibleOrderedAncestors),
                CurrentPage = CurrentPage.Name
            };

            return(PartialView("~/Views/Partials/Breadcrumbs.cshtml", viewModel));
        }
コード例 #7
0
        private async Task <BreadcrumbsViewModel> GetBreadcrumbsAsync(Guid?folderId, string slug, string lastEntry = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            var breadCrumbs = new BreadcrumbsViewModel()
            {
                BreadcrumbLinks = new List <BreadCrumbItem>()
            };

            if (!folderId.HasValue)
            {
                return(breadCrumbs);
            }
            // Only add the root item if there is a folder Id, if it's null then we're at the root folder and no need to show breadcrumbs
            breadCrumbs.BreadcrumbLinks.Add(new BreadCrumbItem()
            {
                Url = @Url.RouteUrl("GroupUrls", new { slug = slug, tab = Constants.GroupFilesTab }), Name = "Files"
            });

            var bc = await _folderService.GenerateBreadcrumbTrailAsync(folderId.Value, cancellationToken);

            if (!(bc is null))
            {
                if (bc.Count() == 4)
                {
                    bc.First().Name = "...";
                }
                if (!string.IsNullOrWhiteSpace(lastEntry))
                {
                    // Last entry not passed in use all the folder heirarchy as links with last entry - add only
                    breadCrumbs.BreadcrumbLinks.AddRange(bc.Select(b => new BreadCrumbItem {
                        Name = b.Name, Url = @Url.RouteUrl("GroupUrls", new { slug = slug, tab = Constants.GroupFilesTab, folder = b.Id })
                    }));
                    breadCrumbs.LastEntry = lastEntry;
                }
                else
                {
                    // Exclude the last folder as this is the folder being viewed and should not be clickable, add last folder as non clickable
                    breadCrumbs.BreadcrumbLinks.AddRange(bc.Take(bc.Count() - 1).Select(b => new BreadCrumbItem {
                        Name = b.Name, Url = @Url.RouteUrl("GroupUrls", new { slug = slug, tab = Constants.GroupFilesTab, folder = b.Id })
                    }));
                    breadCrumbs.LastEntry = bc.Last().Name;
                }
            }

            return(breadCrumbs);
        }
コード例 #8
0
ファイル: SeoHelper.cs プロジェクト: adnanzameer/SEOBOOST
        public static List <BreadcrumbItemListElementViewModel> GetBreadcrumbItemList(this PageData pageData, ContentReference startPageReference = null)
        {
            if (IsBlockContext)
            {
                return(new List <BreadcrumbItemListElementViewModel>());
            }

            if (pageData == null)
            {
                return(new List <BreadcrumbItemListElementViewModel>());
            }

            var reference = startPageReference;

            if (reference == null || ContentReference.IsNullOrEmpty(reference))
            {
                reference = ContentReference.StartPage;
            }

            var breadcrumbModel = new BreadcrumbsViewModel(pageData, reference);

            return(breadcrumbModel.BreadcrumbItemList);
        }
コード例 #9
0
 public static IHtmlContent GovUkBreadcrumbs(
     this IHtmlHelper htmlHelper,
     BreadcrumbsViewModel breadcrumbsViewModel)
 {
     return(htmlHelper.Partial("/GovUkDesignSystemComponents/Breadcrumbs.cshtml", breadcrumbsViewModel));
 }
コード例 #10
0
 public static IHtmlContent GovUkBreadcrumbs(
     this IHtmlHelper htmlHelper,
     BreadcrumbsViewModel breadcrumbsViewModel)
 {
     return(htmlHelper.Partial("~/Partials/Breadcrumbs.cshtml", breadcrumbsViewModel));
 }