protected override void CreateControlHierarchy() { if (HttpContext.Current != null) { WebTrace.Write(this.GetType().ToString(), "CreateControlHierarchy, CategoryId " + this.CategoryId); WebTrace.Write(this.GetType().ToString(), "CurrentNodeId: " + CurrentNodeId); WebTrace.Write(this.GetType().ToString(), "CurrentNodeType: " + CurrentNodeType); SiteMapNodeItemType itemType; List <CmsPathNode> cmsPath = CmsPath.GetCmsPath(CategoryId, CurrentNodeId, CurrentNodeType); int pathIndex = 0; int nodeIndex = 1; foreach (CmsPathNode node in cmsPath) { if (nodeIndex == cmsPath.Count) { WebTrace.Write(node.Title + ": Current"); itemType = SiteMapNodeItemType.Current; } else if (nodeIndex == 1) { WebTrace.Write(node.Title + ": Root"); itemType = SiteMapNodeItemType.Root; } else { WebTrace.Write(node.Title + ": Parent"); itemType = SiteMapNodeItemType.Parent; } if (nodeIndex > 1) { this.CreateItemFromCmsPathNode(pathIndex, SiteMapNodeItemType.PathSeparator, null); pathIndex++; } CreateItemFromCmsPathNode(pathIndex, itemType, node); pathIndex++; nodeIndex++; } } else { base.CreateControlHierarchy(); } }
public bool Equals(ContentItemPublicContract input) { if (input == null) { return(false); } return (( ContentId == input.ContentId || (ContentId.Equals(input.ContentId)) ) && ( CType == input.CType || (CType != null && CType.Equals(input.CType)) ) && ( CmsPath == input.CmsPath || (CmsPath != null && CmsPath.Equals(input.CmsPath)) ) && ( CreationDate == input.CreationDate || (CreationDate != null && CreationDate.Equals(input.CreationDate)) ) && ( ModifyDate == input.ModifyDate || (ModifyDate != null && ModifyDate.Equals(input.ModifyDate)) ) && ( AllowComments == input.AllowComments || (AllowComments != null && AllowComments.Equals(input.AllowComments)) ) && ( HasAgeGate == input.HasAgeGate || (HasAgeGate != null && HasAgeGate.Equals(input.HasAgeGate)) ) && ( MinimumAge == input.MinimumAge || (MinimumAge.Equals(input.MinimumAge)) ) && ( RatingImagePath == input.RatingImagePath || (RatingImagePath != null && RatingImagePath.Equals(input.RatingImagePath)) ) && ( Author == input.Author || (Author != null && Author.Equals(input.Author)) ) && ( AutoEnglishPropertyFallback == input.AutoEnglishPropertyFallback || (AutoEnglishPropertyFallback != null && AutoEnglishPropertyFallback.Equals(input.AutoEnglishPropertyFallback)) ) && ( Properties == input.Properties || (Properties != null && Properties.SequenceEqual(input.Properties)) ) && ( Representations == input.Representations || (Representations != null && Representations.SequenceEqual(input.Representations)) ) && ( Tags == input.Tags || (Tags != null && Tags.SequenceEqual(input.Tags)) ) && ( CommentSummary == input.CommentSummary || (CommentSummary != null && CommentSummary.Equals(input.CommentSummary)) )); }
public override SiteMapNode FindSiteMapNode(string rawUrl) { //FIRST CHECK WHETHER THIS PAGE IS SPECIFICALLY KEYED IN THE CONFIG FILE SiteMapNode baseNode = base.FindSiteMapNode(rawUrl); if (baseNode != null) { if (_EnableHiding) { return(FindVisibleNode(baseNode)); } return(baseNode); } //PAGE NOT FOUND, CHECK WHETHER THIS URL MATCHES KNOWN CMS PAGES int categoryId = -1; WebTrace.Write(this.GetType().ToString(), "FindSiteMapNode: " + rawUrl + ", Check For CategoryId"); Match urlMatch = Regex.Match(rawUrl, "(?<baseUrl>.*)\\?(?:.*&)?CategoryId=(?<categoryId>[^&]*)", (RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase)); if (urlMatch.Success) { //CATEGORYID PROVIDED IN URL categoryId = AlwaysConvert.ToInt(urlMatch.Groups[2].Value); } else { WebTrace.Write(this.GetType().ToString(), "FindSiteMapNode: " + rawUrl + ", Check For Catalog Object Id"); urlMatch = Regex.Match(rawUrl, "(?<baseUrl>.*)\\?(?:.*&)?(?<nodeType>ProductId|WebpageId|LinkId)=(?<catalogId>[^&]*)", (RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase)); if (urlMatch.Success) { string objectType = urlMatch.Groups[2].Value; switch (objectType) { case "ProductId": categoryId = CatalogDataSource.GetCategoryId(AlwaysConvert.ToInt(urlMatch.Groups[3].Value), CatalogNodeType.Product); break; case "WebpageId": categoryId = CatalogDataSource.GetCategoryId(AlwaysConvert.ToInt(urlMatch.Groups[3].Value), CatalogNodeType.Webpage); break; default: categoryId = CatalogDataSource.GetCategoryId(AlwaysConvert.ToInt(urlMatch.Groups[3].Value), CatalogNodeType.Link); break; } WebTrace.Write("Found catalogobjectid, type: " + objectType + ", id: " + categoryId.ToString()); } } if (categoryId > -1) { //FIND BASE NODE WebTrace.Write(this.GetType().ToString(), "CategoryId Detected, Find Base Node"); baseNode = base.FindSiteMapNode(urlMatch.Groups[1].Value); if (baseNode != null) { WebTrace.Write(this.GetType().ToString(), "Base Node Found, Inject Catalog Path"); List <SiteMapNode> pathNodes = this.GetSiteMapPathNodes(baseNode); WebTrace.Write("default pathnodes count: " + pathNodes.Count.ToString()); int catalogNodeIndex = this.GetCatalogNodeIndex(pathNodes); //IF CATALOG NODE IS NOT FOUND, RETURN THE BASE NODE FOUND BY PROVIDER if (catalogNodeIndex < 0) { return(baseNode); } WebTrace.Write(this.GetType().ToString(), "Catalog Node Obtained, Building Dynamic Path"); //APPEND CMS PATH TO THE List <SiteMapNode> dynamicNodes = new List <SiteMapNode>(); List <CmsPathNode> activeCatalogPath = CmsPath.GetCmsPath(0, categoryId, CatalogNodeType.Category); //IF THERE ARE IS NO PATH INFORMATION BEYOND THE ROOT NODE, RETURN THE BASE NODE FOUND BY PROVIDER if ((activeCatalogPath == null) || (activeCatalogPath.Count < 1)) { return(baseNode); } WebTrace.Write("ActivePathCount: " + activeCatalogPath.Count.ToString()); for (int i = 0; i < activeCatalogPath.Count; i++) { SiteMapNode newDynamicNode = new SiteMapNode(baseNode.Provider, activeCatalogPath[i].NodeId.ToString(), activeCatalogPath[i].Url, activeCatalogPath[i].Title, activeCatalogPath[i].Description); if (dynamicNodes.Count > 0) { newDynamicNode.ParentNode = dynamicNodes[dynamicNodes.Count - 1]; } dynamicNodes.Add(newDynamicNode); } dynamicNodes[0].ParentNode = pathNodes[catalogNodeIndex]; if (catalogNodeIndex == pathNodes.Count - 1) { //THERE ARE NO PATH NODES FOLLOWING CATALOG, RETURN LAST DYNAMIC NODE WebTrace.Write("return last dynamic node"); return(dynamicNodes[dynamicNodes.Count - 1]); } else { //THERE WERE PATH NODES FOLLOWING CATALOG, UPDATE PARENT TO LAST DYNAMIC NODE WebTrace.Write("append nodes following catalog"); //GET NODE THAT SHOULD BE LINKED FROM LAST DYNAMIC PATH NODE //CLONE THE NODE TO PREVENT CACHING, THEN SET PARENT TO DYNAMIC NODE SiteMapNode dynamicNextPathNode = pathNodes[catalogNodeIndex + 1].Clone(false); pathNodes[catalogNodeIndex + 1] = dynamicNextPathNode; dynamicNextPathNode.ReadOnly = false; dynamicNextPathNode.ParentNode = dynamicNodes[dynamicNodes.Count - 1]; //LOOP THROUGH REMAINING PATH NODES, CLONE THEM AND SET PARENT TO PREVIOUS DYNAMIC NODE for (int i = catalogNodeIndex + 2; i < pathNodes.Count; i++) { dynamicNextPathNode = pathNodes[i].Clone(false); pathNodes[i] = dynamicNextPathNode; dynamicNextPathNode.ReadOnly = false; dynamicNextPathNode.ParentNode = pathNodes[i - 1]; } //NOW RETURN LAST PATH NODE return(pathNodes[pathNodes.Count - 1]); } } } //THIS PATH TO THIS PAGE CANNOT BE DETERMINED return(null); }