Exemple #1
0
        /// <inheritdoc/>
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var controller = (Controller)context.Controller;

            controller.ViewData.InitializeBreadcrumbs();

            if (this.active && !string.IsNullOrEmpty(this.action) && string.IsNullOrEmpty(this.controller))
            {
                this.controller = ((Controller)context.Controller).GetType().Name.Replace("Controller", string.Empty);
            }

            string parentRouteKey   = null;
            string parentRouteValue = null;

            if (!string.IsNullOrEmpty(this.ParentRouteKey) && context.Controller.GetType().GetProperties().Any(x => x.Name == this.ParentRouteKey))
            {
                parentRouteKey = context
                                 .Controller
                                 .GetType()
                                 .GetProperty(this.ParentRouteKey)
                                 .GetValue(context.Controller)?
                                 .ToString();

                if (!string.IsNullOrEmpty(parentRouteKey))
                {
                    parentRouteValue = context.HttpContext.GetRouteValue(parentRouteKey)?.ToString();
                }
            }

            if (this.UseParentController)
            {
                this.controller = ((IChildController)context.Controller).ParentController.Replace("Controller", string.Empty);
            }

            var currentBreadcrumb = new BreadcrumbItemViewModel(context)
            {
                Title                = this.title,
                Controller           = this.controller,
                Action               = this.action,
                ParameterName        = this.parameterName,
                ParameterValue       = this.parameterValue,
                Order                = this.order,
                Active               = this.active,
                ParentReferenceKey   = parentRouteKey,
                ParentReferenceValue = parentRouteValue,
            };

            controller.ViewData.AddBreadcrumb(currentBreadcrumb);

            base.OnActionExecuting(context);
        }
Exemple #2
0
        protected virtual BreadcrumbItemViewModel CreateParentPageItem(IPage parentPage)
        {
            var itemVM = new BreadcrumbItemViewModel
            {
                DisplayName = parentPage.MenuTitle
            };

            var pagesConfiguration = SiteConfiguration.GetPagesConfiguration();

            if (pagesConfiguration != null && parentPage.PageTypeId != pagesConfiguration.FolderId)
            {
                itemVM.Url = _pageService.GetPageUrl(parentPage);
            }

            return(itemVM);
        }
Exemple #3
0
        private static BreadcrumbViewModel BuildBreadcrumb(string segmentPath, BreadcrumbItemModel?jpBreadcrumbItemModel, string jobGroupTitle)
        {
            var viewModel = new BreadcrumbViewModel
            {
                Breadcrumbs = new List <BreadcrumbItemViewModel>()
                {
                    new BreadcrumbItemViewModel()
                    {
                        Route = "/",
                        Title = "Home",
                    },
                },
            };

            if (jpBreadcrumbItemModel?.Title != null &&
                !string.IsNullOrWhiteSpace(jpBreadcrumbItemModel.Route))
            {
                var articlePathViewModel = new BreadcrumbItemViewModel
                {
                    Route = jpBreadcrumbItemModel.Route,
                    Title = jpBreadcrumbItemModel.Title,
                };

                viewModel.Breadcrumbs.Add(articlePathViewModel);
            }

            var finalPathViewModel = new BreadcrumbItemViewModel
            {
                Route = $"/{segmentPath}",
                Title = $"Job group: {jobGroupTitle}",
            };

            viewModel.Breadcrumbs.Add(finalPathViewModel);

            viewModel.Breadcrumbs.Last().AddHyperlink = false;

            return(viewModel);
        }
Exemple #4
0
        protected static BreadcrumbViewModel BuildBreadcrumb(string segmentPath, BreadcrumbItemModel?breadcrumbItemModel)
        {
            const string BradcrumbTitle = "Contact us";
            var          viewModel      = new BreadcrumbViewModel
            {
                Breadcrumbs = new List <BreadcrumbItemViewModel>()
                {
                    new BreadcrumbItemViewModel()
                    {
                        Route = "/",
                        Title = "Home",
                    },
                    new BreadcrumbItemViewModel()
                    {
                        Route = $"/{segmentPath}",
                        Title = BradcrumbTitle,
                    },
                },
            };

            if (breadcrumbItemModel?.Title != null &&
                !breadcrumbItemModel.Title.Equals(BradcrumbTitle, StringComparison.OrdinalIgnoreCase) &&
                !string.IsNullOrWhiteSpace(breadcrumbItemModel.Route))
            {
                var articlePathViewModel = new BreadcrumbItemViewModel
                {
                    Route = $"/{segmentPath}/{breadcrumbItemModel.Route}",
                    Title = breadcrumbItemModel.Title,
                };

                viewModel.Breadcrumbs.Add(articlePathViewModel);
            }

            viewModel.Breadcrumbs.Last().AddHyperlink = false;

            return(viewModel);
        }
Exemple #5
0
        /// <summary>
        /// Add a breadcrumb into the ViewData.
        /// </summary>
        /// <param name="viewData"></param>
        /// <param name="breadcrumb"></param>
        /// <returns></returns>
        public static ViewDataDictionary AddBreadcrumb(this ViewDataDictionary viewData, BreadcrumbItemViewModel breadcrumb)
        {
            if (viewData[BreadcrumbsKey] != null)
            {
                ((List <BreadcrumbItemViewModel>)viewData[BreadcrumbsKey]).Add(breadcrumb);
            }

            return(viewData);
        }