Author: mhabersack
Date: 2007-04-26 20:01:40 -0400 (Thu, 26 Apr 2007)
New Revision: 76362

Modified:
   trunk/mcs/class/System.Web/System.Web/ChangeLog
   trunk/mcs/class/System.Web/System.Web/XmlSiteMapProvider.cs
Log:
2007-04-27  Marek Habersack  <[EMAIL PROTECTED]>

        * XmlSiteMapProvider.cs: add support for siteMapFile attribute.



Modified: trunk/mcs/class/System.Web/System.Web/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web/ChangeLog     2007-04-26 23:11:08 UTC 
(rev 76361)
+++ trunk/mcs/class/System.Web/System.Web/ChangeLog     2007-04-27 00:01:40 UTC 
(rev 76362)
@@ -1,3 +1,7 @@
+2007-04-27  Marek Habersack  <[EMAIL PROTECTED]>
+
+       * XmlSiteMapProvider.cs: add support for siteMapFile attribute.
+
 2007-04-24  Marek Habersack  <[EMAIL PROTECTED]>
 
        * CapabilitiesLoader.cs: Hashtables used as property containers

Modified: trunk/mcs/class/System.Web/System.Web/XmlSiteMapProvider.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web/XmlSiteMapProvider.cs 2007-04-26 
23:11:08 UTC (rev 76361)
+++ trunk/mcs/class/System.Web/System.Web/XmlSiteMapProvider.cs 2007-04-27 
00:01:40 UTC (rev 76362)
@@ -60,6 +60,24 @@
                        throw new NotImplementedException ();
                }
 
+               XmlNode FindStartingNode (string file, out bool 
enableLocalization)
+               {
+                       XmlDocument d = new XmlDocument ();
+                       d.Load (file);
+
+                       XmlNode enloc = d.DocumentElement.Attributes 
["enableLocalization"];
+                       if (enloc != null && !String.IsNullOrEmpty 
(enloc.Value))
+                               enableLocalization = (bool) Convert.ChangeType 
(enloc.Value, typeof (bool));
+                       else
+                               enableLocalization = false;
+                                       
+                       XmlNode nod = d.DocumentElement ["siteMapNode"];
+                       if (nod == null)
+                               throw new HttpException ("Invalid site map 
file: " + Path.GetFileName (file));
+
+                       return nod;
+               }
+               
                public override SiteMapNode BuildSiteMap ()
                {
                        if (root != null)
@@ -74,19 +92,12 @@
                                        building = true;
                                        if (root != null)
                                                return root;
-                                       XmlDocument d = new XmlDocument ();
-                                       d.Load (file);
 
-                                       XmlNode enloc = 
d.DocumentElement.Attributes ["enableLocalization"];
-                                       if (enloc != null && 
!String.IsNullOrEmpty (enloc.Value))
-                                               EnableLocalization = (bool) 
Convert.ChangeType (enloc.Value, typeof (bool));
-                                       
-                                       XmlNode nod = d.DocumentElement 
["siteMapNode"];
-                                       if (nod == null)
-                                               throw new HttpException 
("Invalid site map file: " + Path.GetFileName (file));
+                                       bool enableLocalization;
+                                       XmlNode node = FindStartingNode (file, 
out enableLocalization);
+                                       EnableLocalization = enableLocalization;
+                                       root = BuildSiteMapRecursive (node, 
EnableLocalization);
                                                
-                                       root = BuildSiteMapRecursive (nod);
-                                               
                                        AddNode (root);
                                } finally {
                                        building = false;
@@ -177,7 +188,7 @@
                        }
                }
                
-               SiteMapNode BuildSiteMapRecursive (XmlNode xmlNode)
+               SiteMapNode BuildSiteMapRecursive (XmlNode xmlNode, bool 
localize)
                {
                        if (xmlNode.Name != "siteMapNode")
                                throw new ConfigurationException ("incorrect 
element name", xmlNode);
@@ -194,9 +205,11 @@
                                }
                                throw new ConfigurationException("Provider with 
name [" + provider + "] was not found.");
                        } else if (siteMapFile != null) {
-                               throw new NotImplementedException ();
+                               bool enableLocalization;
+                               XmlNode node = FindStartingNode 
(HttpContext.Current.Request.MapPath (siteMapFile),
+                                                                out 
enableLocalization);
+                               return BuildSiteMapRecursive (node, 
enableLocalization);
                        } else {
-
                                string url = GetOptionalAttribute (xmlNode, 
"url");
                                string title = GetOptionalAttribute (xmlNode, 
"title");
                                string description = GetOptionalAttribute 
(xmlNode, "description");
@@ -229,7 +242,7 @@
 
                                NameValueCollection attributes = null;
                                NameValueCollection explicitResourceKeys = null;
-                               if (EnableLocalization)
+                               if (localize)
                                        CollectLocalizationInfo (xmlNode, ref 
title, ref description, ref attributes,
                                                                 ref 
explicitResourceKeys);
                                else
@@ -246,7 +259,7 @@
                                foreach (XmlNode child in xmlNode.ChildNodes) {
                                        if (child.NodeType != 
XmlNodeType.Element)
                                                continue;
-                                       AddNode (BuildSiteMapRecursive (child), 
node);
+                                       AddNode (BuildSiteMapRecursive (child, 
EnableLocalization), node);
                                }
                                
                                return node;
@@ -314,10 +327,12 @@
                {
                        throw new NotImplementedException ();
                }
+
                void OnFileChanged (object sender, FileSystemEventArgs args)
                {
                        Clear ();
                }
+
                public override SiteMapNode RootNode {
                        get {
                                BuildSiteMap ();

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to