diff --git a/umbraco/presentation/content.cs b/umbraco/presentation/content.cs index 2d1104d112..3307551d2b 100644 --- a/umbraco/presentation/content.cs +++ b/umbraco/presentation/content.cs @@ -269,7 +269,7 @@ namespace umbraco if (updateSitemapProvider && SiteMap.Provider is presentation.nodeFactory.UmbracoSiteMapProvider) { presentation.nodeFactory.UmbracoSiteMapProvider prov = (presentation.nodeFactory.UmbracoSiteMapProvider)SiteMap.Provider; - prov.UpdateNode(new umbraco.presentation.nodeFactory.Node(d.Id)); + prov.UpdateNode(new umbraco.presentation.nodeFactory.Node(d.Id, true)); } } } diff --git a/umbraco/presentation/umbraco/nodeFactory/Page.cs b/umbraco/presentation/umbraco/nodeFactory/Page.cs index 86dbf4d720..5244435a00 100644 --- a/umbraco/presentation/umbraco/nodeFactory/Page.cs +++ b/umbraco/presentation/umbraco/nodeFactory/Page.cs @@ -197,6 +197,31 @@ namespace umbraco.presentation.nodeFactory { initialize(); } + /// + /// Special constructor for by-passing published vs. preview xml to use + /// when updating the SiteMapProvider + /// + /// + /// + public Node(int NodeId, bool forcePublishedXml) { + if (forcePublishedXml) { + if (NodeId != -1) + _pageXmlNode = content.Instance.XmlContent.GetElementById(NodeId.ToString()); + else + { + _pageXmlNode = content.Instance.XmlContent.DocumentElement; + + } + initializeStructure(); + initialize(); + } + else + { + throw new ArgumentException("Use Node(int NodeId) if not forcing published xml"); + + } + } + public Node(int NodeId) { if (NodeId != -1) _pageXmlNode = ((IHasXmlNode)library.GetXmlNodeById(NodeId.ToString()).Current).GetNode(); @@ -379,12 +404,14 @@ namespace umbraco.presentation.nodeFactory { } // load data - foreach (XmlNode n in _pageXmlNode.SelectNodes("./data")) + string dataXPath = UmbracoSettings.UseLegacyXmlSchema ? "data" : "* [not(@isDoc)]"; + foreach (XmlNode n in _pageXmlNode.SelectNodes(dataXPath)) _properties.Add(new Property(n)); // load children + string childXPath = UmbracoSettings.UseLegacyXmlSchema ? "node" : "* [@isDoc]"; XPathNavigator nav = _pageXmlNode.CreateNavigator(); - XPathExpression expr = nav.Compile("./node"); + XPathExpression expr = nav.Compile(childXPath); expr.AddSort("@sortOrder", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); XPathNodeIterator iterator = nav.Select(expr); while (iterator.MoveNext()) { @@ -443,7 +470,9 @@ namespace umbraco.presentation.nodeFactory { // For backward compatibility with 2.x (the version attribute has been removed from 3.0 data nodes) if (PropertyXmlData.Attributes.GetNamedItem("versionID") != null) _version = new Guid(PropertyXmlData.Attributes.GetNamedItem("versionID").Value); - _alias = PropertyXmlData.Attributes.GetNamedItem("alias").Value; + _alias = UmbracoSettings.UseLegacyXmlSchema ? + PropertyXmlData.Attributes.GetNamedItem("alias").Value : + PropertyXmlData.Name; _value = xmlHelper.GetNodeValue(PropertyXmlData); } else throw new ArgumentNullException("Property xml source is null"); diff --git a/umbraco/presentation/umbraco/preview/Preview.cs b/umbraco/presentation/umbraco/preview/Preview.cs index 244d2138e1..c7d5777cbd 100644 --- a/umbraco/presentation/umbraco/preview/Preview.cs +++ b/umbraco/presentation/umbraco/preview/Preview.cs @@ -58,7 +58,7 @@ namespace umbraco.presentation.preview { PreviewSet = previewSet; PreviewsetPath = IO.IOHelper.MapPath( - Path.Combine(IO.SystemDirectories.Preview, PreviewSet + ".config")); + Path.Combine(IO.SystemDirectories.Preview, m_userId.ToString() + "_" + PreviewSet + ".config")); } public void LoadPreviewset() @@ -69,6 +69,18 @@ namespace umbraco.presentation.preview public void SavePreviewSet() { + // check for old preview sets and try to clean + foreach (FileInfo file in new DirectoryInfo(IO.IOHelper.MapPath(IO.SystemDirectories.Preview)).GetFiles(m_userId + "_*.config")) + { + try + { + file.Delete(); + } + catch { + Log.Add(LogTypes.Error, User.GetUser(m_userId), -1, String.Format("Couldn't delete preview set: {0}", file.Name)); + } + } + XmlContent.Save(PreviewsetPath); } }