2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Web / System.Web / SiteMapProvider.cs
index bc4a83043a39dd6c16ae6cbe13d2b55c9fa06600..42e37a8caa96dbb5f4b632a0bb94f0f9786578c6 100644 (file)
@@ -7,7 +7,28 @@
 // (C) 2003 Ben Maurer
 //
 
-#if NET_1_2
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
 using System.Collections;
 using System.Collections.Specialized;
 using System.Text;
@@ -16,7 +37,9 @@ using System.Web.Util;
 using System.Globalization;
 
 namespace System.Web {
-       public abstract class SiteMapProvider : ISiteMapProvider, IProvider {
+       public abstract class SiteMapProvider : ProviderBase {
+               
+               bool enableLocalization;
                
                public void AddNode (SiteMapNode node)
                {
@@ -32,9 +55,11 @@ namespace System.Web {
                                string url = node.Url;
                                if (url != null && url.Length > 0) {
                                        
-                                               url = UrlUtils.ResolveVirtualPathFromAppAbsolute (url);
-                                               if (UrlUtils.IsRooted (url))
+                                       
+                                               if (UrlUtils.IsRelativeUrl (url))
                                                        url = UrlUtils.Combine (HttpRuntime.AppDomainAppVirtualPath, url);
+                                               else
+                                                       url = UrlUtils.ResolveVirtualPathFromAppAbsolute (url);
                                                
                                                if (FindSiteMapNode (url) != null)
                                                        throw new InvalidOperationException ();
@@ -163,9 +188,8 @@ namespace System.Web {
                        }
                }
 
-               public virtual void Initialize (string name, NameValueCollection attributes)
+               public override void Initialize (string name, NameValueCollection attributes)
                { 
-                       this.name = name;
                        if (attributes != null)
                                description = attributes ["description"];
                
@@ -192,24 +216,19 @@ namespace System.Web {
                        get { return description != null ? description : "SiteMapProvider"; }
                }
                
-               string name;
-               public virtual string Name {
-                       get { return name; }
-               }
-               
-               ISiteMapProvider parentProvider;
-               public virtual ISiteMapProvider ParentProvider {
+               SiteMapProvider parentProvider;
+               public virtual SiteMapProvider ParentProvider {
                        get { return parentProvider; }
                        set { parentProvider = value; }
                }
                
-               ISiteMapProvider rootProviderCache;
-               public virtual ISiteMapProvider RootProvider {
+               SiteMapProvider rootProviderCache;
+               public virtual SiteMapProvider RootProvider {
                        get {
                                if (rootProviderCache == null) {
                                        lock (this) {
                                                if (rootProviderCache == null) {
-                                                       ISiteMapProvider current = this;
+                                                       SiteMapProvider current = this;
                                                        while (current.ParentProvider != null)
                                                                current = current.ParentProvider;
                                                        
@@ -220,6 +239,11 @@ namespace System.Web {
                                return rootProviderCache;
                        }
                }
+               
+               public bool EnableLocalization {
+                       get { return enableLocalization; }
+                       set { enableLocalization = value; }
+               }
 
                public abstract SiteMapNode BuildSiteMap ();
                public abstract SiteMapNode RootNode { get; }