コード例 #1
0
 private static void Initialize()
 {
     if (_providers == null)
     {
         HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, "Feature_not_supported_at_this_level");
         lock (_lockObject)
         {
             if (_providers == null)
             {
                 SiteMapSection siteMap = RuntimeConfig.GetAppConfig().SiteMap;
                 if (siteMap == null)
                 {
                     _providers = new SiteMapProviderCollection();
                 }
                 else
                 {
                     if (!siteMap.Enabled)
                     {
                         throw new InvalidOperationException(System.Web.SR.GetString("SiteMap_feature_disabled", new object[] { "system.web/siteMap" }));
                     }
                     siteMap.ValidateDefaultProvider();
                     _providers = siteMap.ProvidersInternal;
                     _provider = _providers[siteMap.DefaultProvider];
                     _providers.SetReadOnly();
                 }
             }
         }
     }
 }
コード例 #2
0
        public static SiteMapNode GetCurrentNode(SiteMapProvider selectedSiteMapProvider)
        {
            // get the node matching the current URL location
            var currentNode = selectedSiteMapProvider.CurrentNode;

            // if there is no node matching the current URL path,
            // remove parts until we get a hit
            if (currentNode == null)
            {
                var url = HttpContext.Current.Request.Url.LocalPath;

                while (url.Length > 0)
                {
                    // see if we can find a matching node
                    currentNode = selectedSiteMapProvider.FindSiteMapNode(url);

                    // if we get a hit, stop
                    if (currentNode != null) break;

                    // if not, remove the last path item
                    var lastSlashlocation = url.LastIndexOf("/");
                    if (lastSlashlocation < 0) break; // protects us from malformed URLs
                    url = url.Remove(lastSlashlocation);
                }
            }

            return currentNode;
        }
コード例 #3
0
        protected internal override void AddNode(SiteMapNode node, SiteMapNode parentNode)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            if (parentNode == null)
            {
                throw new ArgumentNullException("parentNode");
            }

            SiteMapProvider nodeProvider = node.Provider;

            if (nodeProvider != this)
            {
                throw new ArgumentException("SiteMapNode '" + node + "' cannot be found in current provider, only nodes in the same provider can be added.",
                                            "node");
            }

            SiteMapProvider parentNodeProvider = parentNode.Provider;

            if (nodeProvider != parentNodeProvider)
            {
                throw new ArgumentException("SiteMapNode '" + parentNode + "' cannot be found in current provider, only nodes in the same provider can be added.",
                                            "parentNode");
            }

            AddNodeNoCheck(node, parentNode);
        }
コード例 #4
0
 public FileSiteMapNode(SiteMapProvider provider, string url) 
     : base(provider, url)
 {
     Url = url;
     Title = VirtualPathUtility.GetFileName(url);
     FileExtension = VirtualPathUtility.GetExtension(url).TrimStart('.');
 }
コード例 #5
0
        public SiteMapNode(SiteMapProvider provider, string key, string url, string title, string description,
            IList roles, NameValueCollection attributes, NameValueCollection explicitResourceKeys, string implicitResourceKey) {

            _provider = provider;
            _title = title;
            _description = description;
            _roles = roles;
            _attributes = attributes;
            _key = key;
            _resourceKeys = explicitResourceKeys;
            _resourceKey = implicitResourceKey;

            if (url != null) {
                _url = url.Trim();
            }

            _virtualPath = CreateVirtualPathFromUrl(_url);

            if (_key == null) {
                throw new ArgumentNullException("key");
            }

            if (_provider == null) {
                throw new ArgumentNullException("provider");
            }
        }
コード例 #6
0
 private static void Initialize()
 {
     if (_providers == null)
     {
         HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, "Feature_not_supported_at_this_level");
         lock (_lockObject)
         {
             if (_providers == null)
             {
                 SiteMapSection siteMap = RuntimeConfig.GetAppConfig().SiteMap;
                 if (siteMap == null)
                 {
                     _providers = new SiteMapProviderCollection();
                 }
                 else
                 {
                     if (!siteMap.Enabled)
                     {
                         throw new InvalidOperationException(System.Web.SR.GetString("SiteMap_feature_disabled", new object[] { "system.web/siteMap" }));
                     }
                     siteMap.ValidateDefaultProvider();
                     _providers = siteMap.ProvidersInternal;
                     _provider  = _providers[siteMap.DefaultProvider];
                     _providers.SetReadOnly();
                 }
             }
         }
     }
 }
コード例 #7
0
        protected internal override void RemoveNode(SiteMapNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }
            SiteMapProvider provider = node.Provider;

            if (provider != this)
            {
                for (SiteMapProvider provider2 = provider.ParentProvider; provider2 != this; provider2 = provider2.ParentProvider)
                {
                    if (provider2 == null)
                    {
                        throw new InvalidOperationException(System.Web.SR.GetString("XmlSiteMapProvider_cannot_remove_node", new object[] { node.ToString(), this.Name, provider.Name }));
                    }
                }
            }
            if (node.Equals(provider.GetRootNodeCore()))
            {
                throw new InvalidOperationException(System.Web.SR.GetString("SiteMapProvider_cannot_remove_root_node"));
            }
            if (provider != this)
            {
                provider.RemoveNode(node);
            }
            base.RemoveNode(node);
        }
コード例 #8
0
        /// <summary>
        /// Determines whether node is accessible to user.
        /// </summary>
        /// <param name="controllerTypeResolver">The controller type resolver.</param>
        /// <param name="provider">The provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="node">The node.</param>
        /// <returns>
        /// 	<c>true</c> if accessible to user; otherwise, <c>false</c>.
        /// </returns>
        public virtual bool IsAccessibleToUser(IControllerTypeResolver controllerTypeResolver, SiteMapProvider provider, HttpContext context, SiteMapNode node)
        {
            // Is security trimming enabled?
            if (!provider.SecurityTrimmingEnabled)
            {
                return true;
            }

            // Use child modules
            bool result = true;
            foreach (var module in ChildModules)
            {
                try
                {
                    result &= module.IsAccessibleToUser(controllerTypeResolver, provider, context, node);
                }
                catch (AclModuleNotSupportedException)
                {
                    result &= true; // Convention throughout the provider: if the IAclModule can not authenticate a user, true is returned.
                }
                if (result == false)
                {
                    return false;
                }
            }

            // Return
            return result;
        }
コード例 #9
0
        private SiteMapNode GetNodeFromProvider(string providerName)
        {
            SiteMapProvider providerFromName = this.GetProviderFromName(providerName);
            SiteMapNode     rootNodeCore     = null;

            if (providerFromName is XmlSiteMapProvider)
            {
                XmlSiteMapProvider provider2 = (XmlSiteMapProvider)providerFromName;
                StringCollection   strings   = new StringCollection();
                if (this._parentSiteMapFileCollection != null)
                {
                    foreach (string str in this._parentSiteMapFileCollection)
                    {
                        strings.Add(str);
                    }
                }
                provider2.BuildSiteMap();
                strings.Add(this._normalizedVirtualPath.VirtualPathString);
                if (strings.Contains(VirtualPath.GetVirtualPathString(provider2._normalizedVirtualPath)))
                {
                    throw new InvalidOperationException(System.Web.SR.GetString("XmlSiteMapProvider_FileName_already_in_use", new object[] { provider2._virtualPath }));
                }
                provider2._parentSiteMapFileCollection = strings;
            }
            rootNodeCore = providerFromName.GetRootNodeCore();
            if (rootNodeCore == null)
            {
                throw new InvalidOperationException(System.Web.SR.GetString("XmlSiteMapProvider_invalid_GetRootNodeCore", new object[] { providerFromName.Name }));
            }
            this.ChildProviderTable.Add(providerFromName, rootNodeCore);
            this._childProviderList         = null;
            providerFromName.ParentProvider = this;
            return(rootNodeCore);
        }
コード例 #10
0
ファイル: SiteMapNode.cs プロジェクト: dox0/DotNet471RS3
        public SiteMapNode(SiteMapProvider provider, string key, string url, string title, string description,
                           IList roles, NameValueCollection attributes, NameValueCollection explicitResourceKeys, string implicitResourceKey)
        {
            _provider     = provider;
            _title        = title;
            _description  = description;
            _roles        = roles;
            _attributes   = attributes;
            _key          = key;
            _resourceKeys = explicitResourceKeys;
            _resourceKey  = implicitResourceKey;

            if (url != null)
            {
                _url = url.Trim();
            }

            _virtualPath = CreateVirtualPathFromUrl(_url);

            if (_key == null)
            {
                throw new ArgumentNullException("key");
            }

            if (_provider == null)
            {
                throw new ArgumentNullException("provider");
            }
        }
コード例 #11
0
        protected internal override void AddNode(SiteMapNode node, SiteMapNode parentNode)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }
            if (parentNode == null)
            {
                throw new ArgumentNullException("parentNode");
            }
            SiteMapProvider provider  = node.Provider;
            SiteMapProvider provider2 = parentNode.Provider;

            if (provider != this)
            {
                throw new ArgumentException(System.Web.SR.GetString("XmlSiteMapProvider_cannot_add_node", new object[] { node.ToString() }), "node");
            }
            if (provider2 != this)
            {
                throw new ArgumentException(System.Web.SR.GetString("XmlSiteMapProvider_cannot_add_node", new object[] { parentNode.ToString() }), "parentNode");
            }
            lock (base._lock)
            {
                this.RemoveNode(node);
                this.AddNodeInternal(node, parentNode, null);
            }
        }
コード例 #12
0
        protected internal override void AddNode(SiteMapNode node, SiteMapNode parentNode)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            if (parentNode == null)
            {
                throw new ArgumentNullException("parentNode");
            }

            SiteMapProvider ownerProvider       = node.Provider;
            SiteMapProvider parentOwnerProvider = parentNode.Provider;

            if (ownerProvider != this)
            {
                throw new ArgumentException(SR.GetString(SR.XmlSiteMapProvider_cannot_add_node, node.ToString()), "node");
            }

            if (parentOwnerProvider != this)
            {
                throw new ArgumentException(SR.GetString(SR.XmlSiteMapProvider_cannot_add_node, parentNode.ToString()), "parentNode");
            }

            lock (_lock) {
                // First remove it from its current location.
                RemoveNode(node);
                AddNodeInternal(node, parentNode, null);
            }
        }
コード例 #13
0
 public static SiteMapNode FindSiteMapNode(this SiteMapProvider provider, Uri uri)
 {
     if (uri == null)
     {
         throw new ArgumentNullException("uri");
     }
     return(provider.FindSiteMapNode((!uri.IsAbsoluteUri ? uri.OriginalString : uri.LocalPath)));
 }
コード例 #14
0
 public void Add(SiteMapProvider provider)
 {
     if (provider == null)
     {
         throw new ArgumentNullException("provider");
     }
     base.Add(provider);
 }
コード例 #15
0
 public TridionSiteMapNode(SiteMapProvider provider, string key, string uri, string url, string title, string description, IList roles, NameValueCollection attributes, NameValueCollection explicitResourceKeys, string implicitResourceKey) : base(provider, key, url, title, description, roles, attributes, explicitResourceKeys, implicitResourceKey)
 {
     if (url.StartsWith("tcm:"))
     {
         this.Url = this.MakeDummyUrl(url);
     }
     this.Uri = uri;
 }
 public void Add(SiteMapProvider provider)
 {
     if (provider == null)
     {
         throw new ArgumentNullException("provider");
     }
     base.Add(provider);
 }
コード例 #17
0
ファイル: MvcSiteMapNode.cs プロジェクト: VlaTo/EmpRe.NET
        /*public MvcSiteMapNode(SiteMapProvider provider, string key, ISiteMapUrlResolver urlResolver)
            : base(provider, key)
        {
            this.urlResolver = urlResolver;
        }*/

        public MvcSiteMapNode(SiteMapProvider provider, string key, string url, string title, string description,
            IList roles, NameValueCollection attributes, NameValueCollection explicitResourceKeys,
            string implicitResourceKey, ISiteMapUrlResolver urlResolver, string controllerName, string actionName)
            : base(provider, key, url, title, description, roles, attributes, explicitResourceKeys, implicitResourceKey)
        {
            this.urlResolver = urlResolver;
            Controller = controllerName;
            Action = actionName;
        }
コード例 #18
0
        private SiteMapProvider GetProviderFromName(string providerName)
        {
            SiteMapProvider provider = SiteMap.Providers[providerName];

            if (provider == null)
            {
                throw new ProviderException(System.Web.SR.GetString("Provider_Not_Found", new object[] { providerName }));
            }
            return(provider);
        }
コード例 #19
0
        void AddNodeNoCheck(SiteMapNode node, SiteMapNode parentNode)
        {
            base.AddNode(node, parentNode);
            SiteMapProvider nodeProvider = node.Provider;

            if (nodeProvider != this)
            {
                RegisterChildProvider(nodeProvider.Name, nodeProvider);
            }
        }
コード例 #20
0
        public IEnumerable<SiteMapNode> GetVirtualNodes(SiteMapProvider provider)
        {
            List<SiteMapNode> list = new List<SiteMapNode>();

            var siteMapNode = new SiteMapNode(
                provider, Guid.NewGuid().ToString(), string.Empty, DummySiteMapNodeTitle, "description");
            list.Add(siteMapNode);

            return list;
        }
コード例 #21
0
ファイル: Security.cs プロジェクト: thaond/vdms-sym-project
        public static bool IsDeniedURLWithProvider(string url, string app, SiteMapProvider smProvider)
        {
            if (url.ToLower().EndsWith("accessdeny.aspx") || url.ToLower().EndsWith("changepassword.aspx") || url.ToLower().EndsWith("default.aspx") || url.ToLower().EndsWith("profile.aspx")) return false;
            //if (UserHelper.Username == "admin" || UserHelper.IsAdmin) return false;
            if (UserHelper.IsSysAdmin) return false;
            if ((smProvider != null) && (smProvider.CurrentNode == null)) return true;

            //foreach (string role in RoleDAO.GetRolesForUser(app, UserHelper.Username))
            //    if (IsDeniedURL(url, app, role)) return true;
            return !PermissionDAO.IsAnyRoleInPath(app, RoleDAO.GetRolesForUser(app, UserHelper.Username), url);
        }
コード例 #22
0
        void RegisterChildProvider(string name, SiteMapProvider smp)
        {
            Dictionary <string, bool> childProvidersPresent = ChildProvidersPresent;

            if (childProvidersPresent.ContainsKey(name))
            {
                return;
            }

            childProvidersPresent.Add(name, true);
            ChildProviders.Add(smp);
        }
コード例 #23
0
        ///<summary>
        ///Initializes the provider.
        ///</summary>
        ///
        ///<param name="config">A collection of the name/value pairs representing the provider-specific 
        /// attributes specified in the configuration for this provider.
        /// The <c>providerId</c> attribute may be used to override the name being used for looking up an object definition.
        /// </param>
        ///<param name="name">The friendly name of the provider.</param>
        ///<exception cref="T:System.ArgumentNullException">The <paramref name="name"/> or <paramref name="config"/> is null.</exception>
        ///<exception cref="T:System.InvalidOperationException">An attempt is made to call <see cref="M:System.Configuration.Provider.ProviderBase.Initialize(System.String,System.Collections.Specialized.NameValueCollection)"></see> on a provider after the provider has already been initialized.</exception>
        ///<exception cref="T:System.ArgumentException">The <paramref name="name"/> has a length of zero or providerId attribute is not set.</exception>
        public override void Initialize(string name, NameValueCollection config)
        {
            if (config == null) throw new ArgumentNullException("config");                        
            
            string providerId = config["providerId"];            
            if (String.IsNullOrEmpty(providerId)) 
                providerId = name;
            config.Remove("providerId");

            this.wrappedProvider = (System.Web.SiteMapProvider)WebApplicationContext.GetRootContext().GetObject(providerId);
            this.wrappedProvider.Initialize(name,config);
        }
 public override void RefreshSchema(bool preferSilent)
 {
     try
     {
         this.SuppressDataSourceEvents();
         this._siteMapProvider = null;
         this.OnDataSourceChanged(EventArgs.Empty);
     }
     finally
     {
         this.ResumeDataSourceEvents();
     }
 }
コード例 #25
0
 /// <summary>
 /// Gets the current site map node for child action.
 /// </summary>
 /// <param name="controller">The controller.</param>
 /// <param name="provider">The provider.</param>
 /// <returns></returns>
 public static SiteMapNode GetCurrentSiteMapNodeForChildAction(this ControllerBase controller, SiteMapProvider provider)
 {
     // Is DefaultSiteMapProvider in use?
     DefaultSiteMapProvider mvcProvider = provider as DefaultSiteMapProvider;
     if (mvcProvider != null && controller.ControllerContext.IsChildAction)
     {
         return mvcProvider.FindSiteMapNode(controller.ControllerContext);
     }
     else
     {
         return provider.CurrentNode;
     }
 }
コード例 #26
0
        private SiteMapProvider GetProviderFromName(string providerName)
        {
            Debug.Assert(providerName != null);

            SiteMapProvider provider = SiteMap.Providers[providerName];

            if (provider == null)
            {
                throw new ProviderException(SR.GetString(SR.Provider_Not_Found, providerName));
            }

            return(provider);
        }
 public void AddArray(SiteMapProvider[] providerArray)
 {
     if (providerArray == null)
     {
         throw new ArgumentNullException("providerArray");
     }
     foreach (SiteMapProvider provider in providerArray)
     {
         if (this[provider.Name] != null)
         {
             throw new ArgumentException(System.Web.SR.GetString("SiteMapProvider_Multiple_Providers_With_Identical_Name", new object[] { provider.Name }));
         }
         this.Add(provider);
     }
 }
コード例 #28
0
		public SiteMapNode (SiteMapProvider provider, string key, string url, string title, string description, IList roles, NameValueCollection attributes, NameValueCollection explicitResourceKeys, string implicitResourceKey)
		{
			if (provider == null)
				throw new ArgumentNullException ("provider");
			if (key == null)
				throw new ArgumentNullException ("key");
			
			this.provider = provider;
			this.key = key;
			this.url = url;
			this.title = title;
			this.description = description;
			this.roles = roles;
			this.attributes = attributes;
			this.resourceKeys = explicitResourceKeys;
			this.implicitResourceKey = implicitResourceKey;
		}
コード例 #29
0
        /// <summary>
        /// Determines whether node is accessible to user.
        /// </summary>
        /// <param name="controllerTypeResolver">The controller type resolver.</param>
        /// <param name="provider">The provider.</param>
        /// <param name="context">The context.</param>
        /// <param name="node">The node.</param>
        /// <returns>
        /// 	<c>true</c> if accessible to user; otherwise, <c>false</c>.
        /// </returns>
        public bool IsAccessibleToUser(IControllerTypeResolver controllerTypeResolver, SiteMapProvider provider, HttpContext context, SiteMapNode node)
        {
            // Is security trimming enabled?
            if (!provider.SecurityTrimmingEnabled)
            {
                return true;
            }

            // Is it a regular node?
            var mvcNode = node as MvcSiteMapNode;
            if (mvcNode == null)
            {
                if (provider.ParentProvider != null)
                {
                    return provider.ParentProvider.IsAccessibleToUser(context, node);
                }
            }

            // If we have roles assigned, check them against the roles defined in the sitemap
            if (node.Roles != null && node.Roles.Count > 0)
            {
                    // if there is an authenticated user and the role allows anyone authenticated ("*"), show it
                if ((context.User.Identity.IsAuthenticated) && node.Roles.Contains("*"))
                {
                    return true;
                }

                    // if there is no user, but the role allows unauthenticated users ("?"), show it
                if ((!context.User.Identity.IsAuthenticated) && node.Roles.Contains("?"))
                    {
                        return true;
                    }

                    // if the user is in one of the listed roles, show it
                if (node.Roles.OfType<string>().Any(role => context.User.IsInRole(role)))
                    {
                        return true;
                    }

                    // if we got this far, deny showing
                    return false;
            }

            // Everything seems OK...
            return true;
        }
コード例 #30
0
        private SiteMapNode GetNodeFromProvider(string providerName)
        {
            SiteMapProvider provider = GetProviderFromName(providerName);
            SiteMapNode     node     = null;

            // Check infinite recursive sitemap files
            if (provider is XmlSiteMapProvider)
            {
                XmlSiteMapProvider xmlProvider = (XmlSiteMapProvider)provider;

                StringCollection parentSiteMapFileCollection = new StringCollection();
                if (_parentSiteMapFileCollection != null)
                {
                    foreach (string filename in _parentSiteMapFileCollection)
                    {
                        parentSiteMapFileCollection.Add(filename);
                    }
                }

                // Make sure the provider is initialized before adding to the collection.
                xmlProvider.BuildSiteMap();

                parentSiteMapFileCollection.Add(_normalizedVirtualPath.VirtualPathString);
                if (parentSiteMapFileCollection.Contains(VirtualPath.GetVirtualPathString(xmlProvider._normalizedVirtualPath)))
                {
                    throw new InvalidOperationException(SR.GetString(SR.XmlSiteMapProvider_FileName_already_in_use, xmlProvider._virtualPath));
                }

                xmlProvider._parentSiteMapFileCollection = parentSiteMapFileCollection;
            }

            node = provider.GetRootNodeCore();
            if (node == null)
            {
                throw new InvalidOperationException(
                          SR.GetString(SR.XmlSiteMapProvider_invalid_GetRootNodeCore, ((ProviderBase)provider).Name));
            }

            ChildProviderTable.Add(provider, node);
            _childProviderList = null;

            provider.ParentProvider = this;

            return(node);
        }
コード例 #31
0
 protected virtual void RemoveProvider(string providerName)
 {
     if (providerName == null)
     {
         throw new ArgumentNullException("providerName");
     }
     lock (base._lock)
     {
         SiteMapProvider providerFromName = this.GetProviderFromName(providerName);
         SiteMapNode     node             = (SiteMapNode)this.ChildProviderTable[providerFromName];
         if (node == null)
         {
             throw new InvalidOperationException(System.Web.SR.GetString("XmlSiteMapProvider_cannot_find_provider", new object[] { providerFromName.Name, this.Name }));
         }
         providerFromName.ParentProvider = null;
         this.ChildProviderTable.Remove(providerFromName);
         this._childProviderList = null;
         base.RemoveNode(node);
     }
 }
コード例 #32
0
 public mojoSiteMapNode(
     SiteMapProvider provider,
     string key,
     string url,
     string title,
     string description,
     IList roles,
     NameValueCollection attributes,
     NameValueCollection explicitResourceKeys,
     string implicitResourceKey)
     : base(provider, key,
         url,
         title,
         description,
         roles,
         attributes,
         explicitResourceKeys,
         implicitResourceKey)
 {
 }
コード例 #33
0
        protected internal override void RemoveNode(SiteMapNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            SiteMapProvider ownerProvider = node.Provider;

            if (ownerProvider != this)
            {
                // Only nodes defined in this provider tree can be removed.
                SiteMapProvider parentProvider = ownerProvider.ParentProvider;
                while (parentProvider != this)
                {
                    if (parentProvider == null)
                    {
                        // Cannot remove nodes defined in other providers
                        throw new InvalidOperationException(
                                  SR.GetString(SR.XmlSiteMapProvider_cannot_remove_node, node.ToString(),
                                               this.Name, ownerProvider.Name));
                    }

                    parentProvider = parentProvider.ParentProvider;
                }
            }

            if (node.Equals(ownerProvider.GetRootNodeCore()))
            {
                throw new InvalidOperationException(SR.GetString(SR.SiteMapProvider_cannot_remove_root_node));
            }

            if (ownerProvider != this)
            {
                // Remove node from the owner provider.
                ownerProvider.RemoveNode(node);
            }

            base.RemoveNode(node);
        }
コード例 #34
0
        protected virtual void AddProvider(string providerName, SiteMapNode parentNode)
        {
            if (parentNode == null)
            {
                throw new ArgumentNullException("parentNode");
            }

            if (parentNode.Provider != this)
            {
                throw new ArgumentException("The Provider property of the parentNode does not reference the current provider.", "parentNode");
            }

            SiteMapProvider smp = SiteMap.Providers [providerName];

            if (smp == null)
            {
                throw new ProviderException("Provider with name [" + providerName + "] was not found.");
            }

            AddNode(smp.GetRootNodeCore());
            RegisterChildProvider(providerName, smp);
        }
コード例 #35
0
        protected virtual void RemoveProvider(string providerName)
        {
            if (providerName == null)
            {
                throw new ArgumentNullException("providerName");
            }

            lock (_lock) {
                SiteMapProvider provider = GetProviderFromName(providerName);
                SiteMapNode     rootNode = (SiteMapNode)ChildProviderTable[provider];

                if (rootNode == null)
                {
                    throw new InvalidOperationException(SR.GetString(SR.XmlSiteMapProvider_cannot_find_provider, provider.Name, this.Name));
                }

                provider.ParentProvider = null;
                ChildProviderTable.Remove(provider);
                _childProviderList = null;

                base.RemoveNode(rootNode);
            }
        }
コード例 #36
0
ファイル: SiteMapNode.cs プロジェクト: pmq20/mono_forked
        public SiteMapNode(SiteMapProvider provider, string key, string url, string title, string description,
                           IList roles, NameValueCollection attributes, NameValueCollection explicitResourceKeys,
                           string implicitResourceKey)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }
            if (key == null)
            {
                throw new ArgumentNullException("key");
            }

            this.provider     = provider;
            this.key          = key;
            this.url          = url;
            this.title        = title;
            this.description  = description;
            this.roles        = roles;
            this.attributes   = attributes;
            this.resourceKeys = explicitResourceKeys;
            this.resourceKey  = implicitResourceKey;
        }
コード例 #37
0
        private static void Initialize()
        {
            if (_providers != null)
            {
                return;
            }

            HttpRuntime.CheckAspNetHostingPermission(AspNetHostingPermissionLevel.Low, SR.Feature_not_supported_at_this_level);

            lock (_lockObject) {
                if (_providers != null)
                {
                    return;
                }

                SiteMapSection config = RuntimeConfig.GetAppConfig().SiteMap;
                if (config == null)
                {
                    // just return an empty collection so that designer will work.
                    _providers = new SiteMapProviderCollection();
                    return;
                }

                if (!config.Enabled)
                {
                    throw new InvalidOperationException(SR.GetString(SR.SiteMap_feature_disabled, SiteMap.SectionName));
                }

                // Make sure the default provider exists.
                config.ValidateDefaultProvider();

                _providers = config.ProvidersInternal;
                _provider  = _providers[config.DefaultProvider];
                _providers.SetReadOnly();
            }
        }
コード例 #38
0
 public SiteMapNode(SiteMapProvider provider, string key)
 {
 }
コード例 #39
0
        private void EnsureChildSiteMapProviderUpToDate(SiteMapProvider childProvider)
        {
            SiteMapNode oldNode = (SiteMapNode)ChildProviderTable[childProvider];

            SiteMapNode newNode = childProvider.GetRootNodeCore();

            if (newNode == null)
            {
                throw new ProviderException(SR.GetString(SR.XmlSiteMapProvider_invalid_sitemapnode_returned, childProvider.Name));
            }

            // child providers have been updated.
            if (!oldNode.Equals(newNode))
            {
                // If the child provider table has been updated, simply return null.
                // This will happen when the current provider's sitemap file is changed or Clear() is called;
                if (oldNode == null)
                {
                    return;
                }

                lock (_lock) {
                    oldNode = (SiteMapNode)ChildProviderTable[childProvider];
                    // If the child provider table has been updated, simply return null. See above.
                    if (oldNode == null)
                    {
                        return;
                    }

                    newNode = childProvider.GetRootNodeCore();
                    if (newNode == null)
                    {
                        throw new ProviderException(SR.GetString(SR.XmlSiteMapProvider_invalid_sitemapnode_returned, childProvider.Name));
                    }

                    if (!oldNode.Equals(newNode))
                    {
                        // If the current provider does not contain any nodes but one child provider
                        // ie. _siteMapNode == oldNode
                        // the oldNode needs to be removed from Url table and the new node will be added.
                        if (_siteMapNode.Equals(oldNode))
                        {
                            UrlTable.Remove(oldNode.Url);
                            KeyTable.Remove(oldNode.Key);

                            UrlTable.Add(newNode.Url, newNode);
                            KeyTable.Add(newNode.Key, newNode);

                            _siteMapNode = newNode;
                        }

                        // First find the parent node
                        SiteMapNode parent = (SiteMapNode)ParentNodeTable[oldNode];

                        // parent is null when the provider does not contain any static nodes, ie.
                        // it only contains definition to include one child provider.
                        if (parent != null)
                        {
                            // Update the child nodes table
                            SiteMapNodeCollection list = (SiteMapNodeCollection)ChildNodeCollectionTable[parent];

                            // Add the newNode to where the oldNode is within parent node's collection.
                            int index = list.IndexOf(oldNode);
                            if (index != -1)
                            {
                                list.Remove(oldNode);
                                list.Insert(index, newNode);
                            }
                            else
                            {
                                list.Add(newNode);
                            }

                            // Update the parent table
                            ParentNodeTable[newNode] = parent;
                            ParentNodeTable.Remove(oldNode);

                            // Update the Url table
                            UrlTable.Remove(oldNode.Url);
                            KeyTable.Remove(oldNode.Key);

                            UrlTable.Add(newNode.Url, newNode);
                            KeyTable.Add(newNode.Key, newNode);
                        }
                        else
                        {
                            // Notify the parent provider to update its child provider collection.
                            XmlSiteMapProvider provider = ParentProvider as XmlSiteMapProvider;
                            if (provider != null)
                            {
                                provider.EnsureChildSiteMapProviderUpToDate(this);
                            }
                        }

                        // Update provider nodes;
                        ChildProviderTable[childProvider] = newNode;
                        _childProviderList = null;
                    }
                }
            }
        }
コード例 #40
0
 public void Add(SiteMapProvider provider)
 {
     Add((ProviderBase)provider);
 }
コード例 #41
0
 public void Add(SiteMapProvider provider)
 {
 }
コード例 #42
0
 protected virtual ISiteMapNode GetRootNode(ISiteMap siteMap, SiteMapProvider provider)
 {
     var root = provider.RootNode;
     return GetSiteMapNodeFromProviderNode(siteMap, root, null);
 }
コード例 #43
0
ファイル: SiteMapHandler.cs プロジェクト: Orckestra/C1-CMS
        private void WriteFullSiteMap(XmlWriter writer, SiteMapProvider provider)
        {
            writer.WriteStartElement("urlset", SiteMapNamespace);

            WriteElement(writer, provider.RootNode, new HashSet<string>());

            writer.WriteEndElement();
        }
コード例 #44
0
 public SiteMapResolveEventArgs(HttpContext context, SiteMapProvider provider)
 {
     _context  = context;
     _provider = provider;
 }
コード例 #45
0
		public SiteMapNode (SiteMapProvider provider, string key, string url, string title, string description)
			: this (provider, key, url, title, description, null, null, null, null) {}
コード例 #46
0
ファイル: SiteMapPageNode.cs プロジェクト: BclEx/BclEx-Web
 /// <summary>
 /// Initializes a new instance of the <see cref="SiteMapPageNode"/> class.
 /// </summary>
 /// <param name="provider">The provider.</param>
 /// <param name="key">The key.</param>
 /// <param name="url">The URL.</param>
 /// <param name="title">The title.</param>
 public SiteMapPageNode(SiteMapProvider provider, string key, string url, string title)
     : base(provider, key, url, title)
 {
 }
コード例 #47
0
		public void AddArray (SiteMapProvider[] providerArray)
		{
			foreach (SiteMapProvider p in providerArray)
				Add (p);
		}
コード例 #48
0
ファイル: SiteMapProvider.cs プロジェクト: pmq20/mono_forked
 protected static SiteMapNode GetRootNodeCoreFromProvider(SiteMapProvider provider)
 {
     return(provider.GetRootNodeCore());
 }
コード例 #49
0
 /// <summary>
 /// Creates a new MvcSiteMapNode instance
 /// </summary>
 public MvcSiteMapNode(SiteMapProvider provider, string key)
     : base(provider, key)
 {
     Id = key;
 }
コード例 #50
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MvcSiteMapNode"/> class.
 /// </summary>
 /// <param name="provider">The provider.</param>
 /// <param name="key">The key.</param>
 /// <param name="explicitResourceKeys">The explicit resource keys.</param>
 /// <param name="implicitResourceKey">The implicit resource key.</param>
 public MvcSiteMapNode(SiteMapProvider provider, string key, NameValueCollection explicitResourceKeys, string implicitResourceKey)
     : base(provider, key, "", "", "", new ArrayList(), new NameValueCollection(), explicitResourceKeys, implicitResourceKey)
 {
 }
コード例 #51
0
ファイル: RootNode.cs プロジェクト: Jobu/n2cms
 public RootNode(SiteMapProvider provider, string url)
     : base(provider, url)
 {
     Title = "/";
 }
コード例 #52
0
ファイル: SiteMapNode.cs プロジェクト: dox0/DotNet471RS3
 public SiteMapNode(SiteMapProvider provider, string key, string url, string title) :
     this(provider, key, url, title, null, null, null, null, null)
 {
 }
コード例 #53
0
		/// <summary>
		/// Called by the framework once the component instance
		/// is initialized
		/// </summary>
		public override void Initialize()
		{
			if (providerName == null)
			{
				targetProvider = providerAccessor.DefaultProvider;
			}
			else
			{
				targetProvider = providerAccessor[providerName];
			}

			if (targetProvider == null)
			{
				throw new ViewComponentException("Could not obtain provider instance");
			}

			base.Initialize();
		}
コード例 #54
0
ファイル: SiteMapNode.cs プロジェクト: dox0/DotNet471RS3
 public SiteMapNode(SiteMapProvider provider, string key, string url, string title, string description) :
     this(provider, key, url, title, description, null, null, null, null)
 {
 }
 public void Add(SiteMapProvider provider)
 {
 }
コード例 #56
0
        void BuildSiteMapRecursive(XmlNode xmlNode, SiteMapNode parent)
        {
            if (xmlNode.Name != "siteMapNode")
            {
                throw new ConfigurationException("incorrect element name", xmlNode);
            }

            string attrValue = GetNonEmptyOptionalAttribute(xmlNode, "provider");

            if (attrValue != null)
            {
                SiteMapProvider provider = SiteMap.Providers [attrValue];
                if (provider == null)
                {
                    throw new ProviderException("Provider with name [" + attrValue + "] was not found.");
                }

                provider.ParentProvider = this;
                SiteMapNode providerRoot = provider.GetRootNodeCore();

                if (parent == null)
                {
                    root = providerRoot;
                }
                else
                {
                    AddNodeNoCheck(providerRoot, parent);
                }
                return;
            }

            attrValue = GetNonEmptyOptionalAttribute(xmlNode, "siteMapFile");
            if (attrValue != null)
            {
                var nvc = new NameValueCollection();
                nvc.Add("siteMapFile", attrValue);

                string description = GetOptionalAttribute(xmlNode, "description");
                if (!String.IsNullOrEmpty(description))
                {
                    nvc.Add("description", description);
                }

                string name     = MapUrl(attrValue);
                var    provider = new XmlSiteMapProvider();
                provider.Initialize(name, nvc);

                SiteMapNode providerRoot = provider.GetRootNodeCore();
                if (parent == null)
                {
                    root = providerRoot;
                }
                else
                {
                    AddNodeNoCheck(providerRoot, parent);
                }
                return;
            }

            SiteMapNode curNode = ConvertToSiteMapNode(xmlNode);

            if (parent == null)
            {
                root = curNode;
            }
            else
            {
                AddNodeNoCheck(curNode, parent);
            }

            XmlNodeList childNodes = xmlNode.ChildNodes;

            if (childNodes == null || childNodes.Count < 1)
            {
                return;
            }

            foreach (XmlNode child in childNodes)
            {
                if (child.NodeType != XmlNodeType.Element)
                {
                    continue;
                }

                BuildSiteMapRecursive(child, curNode);
            }
        }
コード例 #57
0
		public void Add (SiteMapProvider provider)
		{
			Add ((ProviderBase)provider);
		}
 public void AddArray(SiteMapProvider[] providerArray)
 {
 }
コード例 #59
0
		public SiteMapNode (SiteMapProvider provider, string key, string url, string title)
			: this (provider, key, url, title, null, null, null, null, null) {}
コード例 #60
0
ファイル: SiteMapNode.cs プロジェクト: dox0/DotNet471RS3
 public SiteMapNode(SiteMapProvider provider, string key) :
     this(provider, key, null, null, null, null, null, null, null)
 {
 }