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