diff --git a/src/Umbraco.Web/Models/XmlDocument.cs b/src/Umbraco.Web/Models/XmlDocument.cs index 87d9cafeca..cf782d642a 100644 --- a/src/Umbraco.Web/Models/XmlDocument.cs +++ b/src/Umbraco.Web/Models/XmlDocument.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Xml; using System.Xml.Serialization; using System.Xml.XPath; +using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Models; @@ -263,7 +264,7 @@ namespace Umbraco.Web.Models public IDocumentProperty GetProperty(string alias) { - return Properties.FirstOrDefault(p => p.Alias == alias); + return Properties.FirstOrDefault(p => p.Alias.InvariantEquals(alias)); } private void InitializeStructure() diff --git a/src/Umbraco.Web/UmbracoModule.cs b/src/Umbraco.Web/UmbracoModule.cs index 7e5b6f117a..8a8e4731fc 100644 --- a/src/Umbraco.Web/UmbracoModule.cs +++ b/src/Umbraco.Web/UmbracoModule.cs @@ -164,6 +164,7 @@ namespace Umbraco.Web { if (content.Instance.IsXmlQueuedForPersistenceToFile) { + content.Instance.RemoveXmlFilePersistenceQueue(); content.Instance.PersistXmlToFile(); } } diff --git a/src/Umbraco.Web/umbraco.presentation/content.cs b/src/Umbraco.Web/umbraco.presentation/content.cs index 60e24cabd4..7372bc41d3 100644 --- a/src/Umbraco.Web/umbraco.presentation/content.cs +++ b/src/Umbraco.Web/umbraco.presentation/content.cs @@ -896,6 +896,16 @@ namespace umbraco internal const string PersistenceFlagContextKey = "vnc38ykjnkjdnk2jt98ygkxjng"; + /// + /// Removes the flag that queues the file for persistence + /// + internal void RemoveXmlFilePersistenceQueue() + { + HttpContext.Current.Application.Lock(); + HttpContext.Current.Application[PersistenceFlagContextKey] = null; + HttpContext.Current.Application.UnLock(); + } + internal bool IsXmlQueuedForPersistenceToFile { get @@ -915,9 +925,7 @@ namespace umbraco } else { - HttpContext.Current.Application.Lock(); - HttpContext.Current.Application[PersistenceFlagContextKey] = null; - HttpContext.Current.Application.UnLock(); + RemoveXmlFilePersistenceQueue(); } } catch diff --git a/src/Umbraco.Web/umbraco.presentation/library.cs b/src/Umbraco.Web/umbraco.presentation/library.cs index f9b23f0b21..398e313145 100644 --- a/src/Umbraco.Web/umbraco.presentation/library.cs +++ b/src/Umbraco.Web/umbraco.presentation/library.cs @@ -191,17 +191,33 @@ namespace umbraco /// Publishes a Document by adding it to the runtime xml index. Note, prior to this the Document should be /// marked published by calling Publish(User u) on the document object. /// - /// The Id of the Document to be published - public static void UpdateDocumentCache(int DocumentId) + /// The Id of the Document to be published + public static void UpdateDocumentCache(int documentId) { - if (UmbracoSettings.UseDistributedCalls) - dispatcher.Refresh( - new Guid("27ab3022-3dfa-47b6-9119-5945bc88fd66"), - DocumentId); - else - content.Instance.UpdateDocumentCache(DocumentId); + var d = new Document(documentId); + UpdateDocumentCache(d); } + /// + /// Publishes a Document by adding it to the runtime xml index. Note, prior to this the Document should be + /// marked published by calling Publish(User u) on the document object. + /// + /// + /// + /// NOTE: This method was created because before it was always calling the method with the documentId as a parameter + /// which means we have to re-look up the document in the db again when we already have it, this should save on a few + /// dozen sql calls when publishing. + /// + internal static void UpdateDocumentCache(Document doc) + { + if (UmbracoSettings.UseDistributedCalls) + dispatcher.Refresh( + new Guid("27ab3022-3dfa-47b6-9119-5945bc88fd66"), + doc.Id); + else + content.Instance.UpdateDocumentCache(doc); + } + /// /// Publishes the single node, this method is obsolete @@ -1563,6 +1579,8 @@ namespace umbraco } } + //TODO: WTF, why is this here? This won't matter if there's an UmbracoContext or not, it will call the same underlying method! + // only difference is that the UmbracoContext way will check if its in preview mode. private static XmlDocument GetThreadsafeXmlDocument() { return UmbracoContext.Current != null diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs index 1f50ddff3b..3c13c92cc5 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/editContent.aspx.cs @@ -315,7 +315,7 @@ namespace umbraco.cms.presentation { ClientTools.ShowSpeechBubble(speechBubbleIcon.save, ui.Text("speechBubbles", "editContentPublishedHeader", null), ui.Text("speechBubbles", "editContentPublishedText", null)); - library.UpdateDocumentCache(_document.Id); + library.UpdateDocumentCache(_document); BusinessLogic.Log.Add(BusinessLogic.LogTypes.Publish, base.getUser(), _document.Id, ""); littPublishStatus.Text = ui.Text("content", "lastPublished", base.getUser()) + ": " + _document.VersionDate.ToString() + "
";