Exemplo n.º 1
0
        public void BreadcrumbLink_ViewModel_Test()
        {
            BreadcrumbLink breadcrumbLink = new BreadcrumbLink("www.testurl.com", "Test Url");

            Assert.AreEqual("www.testurl.com", breadcrumbLink.Url);
            Assert.AreEqual("Test Url", breadcrumbLink.Text);
        }
        /// <summary>
        /// Gets the job profile details view.
        /// </summary>
        /// <param name="urlName">The urlname.</param>
        /// <returns>ActionResult</returns>
        private ActionResult GetBreadcrumbView(string urlName)
        {
            var breadCrumbLink = new BreadcrumbLink();
            var model          = new DfcBreadcrumbViewModel
            {
                HomepageText    = HomepageText,
                HomepageLink    = HomepageLink,
                BreadcrumbLinks = new List <BreadcrumbLink>
                {
                    breadCrumbLink
                }
            };

            // We get the page node we are on
            var currentPageNode = sitefinityCurrentContext.GetCurrentDfcPageNode();

            if (currentPageNode != null)
            {
                var nodeUrl = currentPageNode.Url.OriginalString;
                switch (nodeUrl.ToUpperInvariant())
                {
                case var jobCategoriesPage when !string.IsNullOrEmpty(urlName) && jobCategoriesPage.Contains(JobCategoriesPathSegment):
                {
                    var category = categoryRepo.GetByUrlName(urlName);
                    breadCrumbLink.Text = (category == null) ? currentPageNode.Title : category.Title;
                    break;
                }

                case var jobProfilePage when !string.IsNullOrEmpty(urlName) && jobProfilePage.Contains(JobProfilesPathSegment):
                {
                    var jobProfile = jobProfileRepository.GetByUrlName(urlName);
                    breadCrumbLink.Text = (jobProfile == null) ? currentPageNode.Title : jobProfile.Title;
                    break;
                }

                case var alertsPage when alertsPage.Contains(AlertsPathSegment):
                {
                    breadCrumbLink.Text = AlertsPageText;
                    break;
                }

                default:
                {
                    model.BreadcrumbLinks = sitefinityCurrentContext.BreadcrumbToParent();

                    //the current page should not be linked
                    model.BreadcrumbLinks.FirstOrDefault().Link = null;
                    model.BreadcrumbLinks = model.BreadcrumbLinks.Reverse().ToList();
                    break;
                }
                }
            }

            return(View(model));
        }
        /// <summary>
        /// Gets the HomePage Text or Link.
        /// </summary>
        /// <param name="htmlDom">The HTML DOM.</param>
        /// <param name="position">the number of li elements to skip before getting link</param>
        /// <returns>Homepage Text or Link</returns>
        private static BreadcrumbLink GetLinkAtPosition(HtmlDocument htmlDom, int position)
        {
            var breadCrumbLink = new BreadcrumbLink();
            var crumbElement   = htmlDom.DocumentNode.Descendants("li").Skip(position).FirstOrDefault();

            if (crumbElement != null)
            {
                var anchorElement = crumbElement.Descendants("a").FirstOrDefault();
                if (anchorElement != null)
                {
                    breadCrumbLink.Text = anchorElement.InnerText;
                    breadCrumbLink.Link = anchorElement.GetAttributeValue("href", HrefNotFound);
                }
                else
                {
                    breadCrumbLink.Text = crumbElement.InnerText.Trim();
                    breadCrumbLink.Link = HrefNotFound;
                }
            }

            return(breadCrumbLink);
        }
Exemplo n.º 4
0
        public IList <BreadcrumbLink> BreadcrumbToParent()
        {
            var breadcrumbLinks = new List <BreadcrumbLink>();
            var pageNode        = CurrentNode;

            while (pageNode.ParentNode != null)
            {
                if (pageNode.NodeType == NodeType.Standard && pageNode.Visible)
                {
                    var pageBreadCrumbLink = new BreadcrumbLink
                    {
                        Text = pageNode.Title,
                        Link = pageNode.Url.Replace("~/", "/")
                    };
                    breadcrumbLinks.Add(pageBreadCrumbLink);
                }

                pageNode = pageNode.ParentNode as PageSiteNode;
            }

            return(breadcrumbLinks);
        }