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); }
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); }