コード例 #1
0
        public override SiteMapNode GetParentNode(SiteMapNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }
            CheckStaticSiteMap();

            // Look up the table.

            SiteMapNode parentNode;

            if (_currentState.ParentNodes.TryGetValue(node, out parentNode))
            {
                return(parentNode);
            }

            // Ask the parent provider.

            if (parentNode == null && ParentProvider != null)
            {
                return(ParentProvider.GetParentNode(node));
            }
            else
            {
                return(null);
            }
        }
コード例 #2
0
        /// <exclude />
        public override SiteMapNode GetParentNode(SiteMapNode node)
        {
            Verify.ArgumentNotNull(node, "node");

            var pageSiteMapNode = (CmsPageSiteMapNode)node;

            IPage parentPage = null;

            using (new DataScope(pageSiteMapNode.Culture))
            {
                Guid parentPageId = PageManager.GetParentId(pageSiteMapNode.Page.Id);
                if (parentPageId != Guid.Empty)
                {
                    parentPage = PageManager.GetPageById(parentPageId);
                }
            }

            SiteMapNode parentNode;

            if (parentPage != null)
            {
                parentNode = new CmsPageSiteMapNode(this, parentPage);
            }
            else
            {
                parentNode = ParentProvider?.GetParentNode(node);
            }

            return(parentNode != null && parentNode.IsAccessibleToUser(HttpContext.Current) ? parentNode : null);
        }
コード例 #3
0
        /// <exclude />
        public override SiteMapNode GetParentNode(SiteMapNode node)
        {
            Verify.ArgumentNotNull(node, "node");

            SiteMapNode parentNode;
            var         culture = node is CompositeC1SiteMapNode
                ? ((CompositeC1SiteMapNode)node).Culture
                : LocalizationScopeManager.CurrentLocalizationScope;

            var container = GetContainer(culture);

            container.ParentNodesMap.TryGetValue(node.Key, out parentNode);

            if (parentNode == null && ParentProvider != null)
            {
                parentNode = ParentProvider.GetParentNode(node);
            }

            if (parentNode == null)
            {
                return(null);
            }
            if (!parentNode.IsAccessibleToUser(HttpContext.Current))
            {
                return(null);
            }

            return(parentNode);
        }
コード例 #4
0
        public override SiteMapNode GetParentNode(SiteMapNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            BuildSiteMap();
            SiteMapNode parent = (SiteMapNode)ParentNodeTable[node];

            if (parent == null)
            {
                // Try to find the original node in the table using the key
                SiteMapNode fallbackNode = (SiteMapNode)KeyTable[node.Key];
                if (fallbackNode != null)
                {
                    parent = (SiteMapNode)ParentNodeTable[fallbackNode];
                }
            }

            // Try the parent providers.
            if (parent == null && ParentProvider != null)
            {
                parent = ParentProvider.GetParentNode(node);
            }

            return(ReturnNodeIfAccessible(parent));
        }
コード例 #5
0
        public override SiteMapNode GetParentNode(SiteMapNode node)
        {
            if (node.Key == rootPath)
            {
                return(ParentProvider.GetParentNode(node));
            }

            return(directoryFactory.CreateNodeFromPath(Path.GetDirectoryName(node.Key)));
        }