From 4df79ce55b5bf3578aa3c01c1c2b4d7228fc2beb Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 30 Sep 2013 13:47:19 +1000 Subject: [PATCH] re-enables LoadMinimalDocument and adds this to the optimized check, even in optimized model the OnRenderNode can still execute with a minimal doc. --- .../Trees/BaseContentTreeTests.cs | 105 +++++++----------- src/Umbraco.Tests/Trees/BaseMediaTreeTests.cs | 65 +++++++++++ src/Umbraco.Tests/Umbraco.Tests.csproj | 1 + .../umbraco/Trees/BaseContentTree.cs | 8 +- .../umbraco/Trees/ContentRecycleBin.cs | 1 - .../umbraco/Trees/loadContent.cs | 1 - .../FilteredContentTree.cs | 1 - 7 files changed, 110 insertions(+), 72 deletions(-) create mode 100644 src/Umbraco.Tests/Trees/BaseMediaTreeTests.cs diff --git a/src/Umbraco.Tests/Trees/BaseContentTreeTests.cs b/src/Umbraco.Tests/Trees/BaseContentTreeTests.cs index 70c4ed9326..4a2c856a15 100644 --- a/src/Umbraco.Tests/Trees/BaseContentTreeTests.cs +++ b/src/Umbraco.Tests/Trees/BaseContentTreeTests.cs @@ -7,67 +7,6 @@ using umbraco.cms.presentation.Trees; namespace Umbraco.Tests.Trees { - - [TestFixture] - public class BaseMediaTreeTests - { - - [TearDown] - public void TestTearDown() - { - BaseTree.AfterTreeRender -= EventHandler; - BaseTree.BeforeTreeRender -= EventHandler; - } - - [Test] - public void Run_Optimized() - { - var tree = new MyOptimizedMediaTree("media"); - - Assert.IsTrue(tree.UseOptimizedRendering); - } - - [Test] - public void Not_Optimized_Events_AfterRender() - { - var tree = new MyOptimizedMediaTree("media"); - - BaseTree.AfterTreeRender += EventHandler; - - Assert.IsFalse(tree.UseOptimizedRendering); - } - - [Test] - public void Not_Optimized_Events_BeforeRender() - { - var tree = new MyOptimizedMediaTree("media"); - - BaseTree.BeforeTreeRender += EventHandler; - - Assert.IsFalse(tree.UseOptimizedRendering); - } - - private void EventHandler(object sender, TreeEventArgs treeEventArgs) - { - - } - - public class MyOptimizedMediaTree : BaseMediaTree - { - public MyOptimizedMediaTree(string application) - : base(application) - { - } - - protected override void CreateRootNode(ref XmlTreeNode rootNode) - { - - } - } - - - } - [TestFixture] public class BaseContentTreeTests { @@ -82,15 +21,17 @@ namespace Umbraco.Tests.Trees [Test] public void Run_Optimized() { - var tree = new MyOptimizedContentTree("content"); + var tree1 = new MyOptimizedContentTree1("content"); + var tree2 = new MyOptimizedContentTree2("content"); - Assert.IsTrue(tree.UseOptimizedRendering); + Assert.IsTrue(tree1.UseOptimizedRendering); + Assert.IsTrue(tree2.UseOptimizedRendering); } [Test] public void Not_Optimized_Events_AfterRender() { - var tree = new MyOptimizedContentTree("content"); + var tree = new MyOptimizedContentTree1("content"); BaseTree.AfterTreeRender += EventHandler; @@ -100,7 +41,7 @@ namespace Umbraco.Tests.Trees [Test] public void Not_Optimized_Events_BeforeRender() { - var tree = new MyOptimizedContentTree("content"); + var tree = new MyOptimizedContentTree1("content"); BaseTree.BeforeTreeRender += EventHandler; @@ -120,17 +61,42 @@ namespace Umbraco.Tests.Trees } - public class MyOptimizedContentTree : BaseContentTree + //optimized because we are not overriding OnRenderNode + public class MyOptimizedContentTree1 : BaseContentTree { - public MyOptimizedContentTree(string application) + public MyOptimizedContentTree1(string application) : base(application) { } + protected override void CreateRootNode(ref XmlTreeNode rootNode) + { + + } + } + + public class MyOptimizedContentTree2 : BaseContentTree + { + public MyOptimizedContentTree2(string application) + : base(application) + { + } + + protected override bool LoadMinimalDocument + { + get { return true; } + } + protected override void CreateRootNode(ref XmlTreeNode rootNode) { } + + //even if we override it will still be optimized because of the LoadMinimalDocument flag + protected override void OnRenderNode(ref XmlTreeNode xNode, umbraco.cms.businesslogic.web.Document doc) + { + base.OnRenderNode(ref xNode, doc); + } } public class MyNotOptimizedContentTree : BaseContentTree @@ -145,6 +111,11 @@ namespace Umbraco.Tests.Trees } + protected override bool LoadMinimalDocument + { + get { return false; } + } + protected override void OnRenderNode(ref XmlTreeNode xNode, umbraco.cms.businesslogic.web.Document doc) { base.OnRenderNode(ref xNode, doc); diff --git a/src/Umbraco.Tests/Trees/BaseMediaTreeTests.cs b/src/Umbraco.Tests/Trees/BaseMediaTreeTests.cs new file mode 100644 index 0000000000..0e93b3db78 --- /dev/null +++ b/src/Umbraco.Tests/Trees/BaseMediaTreeTests.cs @@ -0,0 +1,65 @@ +using NUnit.Framework; +using umbraco.cms.presentation.Trees; + +namespace Umbraco.Tests.Trees +{ + [TestFixture] + public class BaseMediaTreeTests + { + + [TearDown] + public void TestTearDown() + { + BaseTree.AfterTreeRender -= EventHandler; + BaseTree.BeforeTreeRender -= EventHandler; + } + + [Test] + public void Run_Optimized() + { + var tree = new MyOptimizedMediaTree("media"); + + Assert.IsTrue(tree.UseOptimizedRendering); + } + + [Test] + public void Not_Optimized_Events_AfterRender() + { + var tree = new MyOptimizedMediaTree("media"); + + BaseTree.AfterTreeRender += EventHandler; + + Assert.IsFalse(tree.UseOptimizedRendering); + } + + [Test] + public void Not_Optimized_Events_BeforeRender() + { + var tree = new MyOptimizedMediaTree("media"); + + BaseTree.BeforeTreeRender += EventHandler; + + Assert.IsFalse(tree.UseOptimizedRendering); + } + + private void EventHandler(object sender, TreeEventArgs treeEventArgs) + { + + } + + public class MyOptimizedMediaTree : BaseMediaTree + { + public MyOptimizedMediaTree(string application) + : base(application) + { + } + + protected override void CreateRootNode(ref XmlTreeNode rootNode) + { + + } + } + + + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 003b7611a3..a37a253e9b 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -363,6 +363,7 @@ + diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs index 31f65e3dde..81a97ab593 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs @@ -27,7 +27,6 @@ namespace umbraco.cms.presentation.Trees private User _user; - [Obsolete("This is no longer used and has no effect")] protected virtual bool LoadMinimalDocument { get; set; } /// @@ -118,6 +117,11 @@ function openContent(id) { { var node = CreateNode(e, allowedUserOptions); + //in optimized mode the LoadMinimalDocument will ALWAYS be true, if it is not true then we will + // be rendering in non-optimized mode and this code will not get executed so we don't need to worry + // about performance here. + OnRenderNode(ref node, new Document(e, LoadMinimalDocument)); + OnBeforeNodeRender(ref Tree, ref node, EventArgs.Empty); if (node != null) { @@ -495,7 +499,7 @@ function openContent(id) { //now we need to check if the current tree type has OnRenderNode overridden with a custom implementation //Strangely - this even works in med trust! var method = this.GetType().GetMethod("OnRenderNode", BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(XmlTreeNode).MakeByRefType(), typeof(Document) }, null); - if (TypeHelper.IsOverride(method)) + if (TypeHelper.IsOverride(method) && LoadMinimalDocument == false) { return false; } diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/ContentRecycleBin.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/ContentRecycleBin.cs index c8ef6f2b2f..31dc820127 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/ContentRecycleBin.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/ContentRecycleBin.cs @@ -20,7 +20,6 @@ namespace umbraco.cms.presentation.Trees public ContentRecycleBin(string application) : base(application) { } - [Obsolete("This is no longer used and has no effect")] protected override bool LoadMinimalDocument { get diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadContent.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadContent.cs index 15b7a2dfad..3eb086debc 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadContent.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/loadContent.cs @@ -56,7 +56,6 @@ namespace umbraco } } - [Obsolete("This is no longer used and has no effect")] protected override bool LoadMinimalDocument { get diff --git a/src/umbraco.editorControls/MultiNodeTreePicker/FilteredContentTree.cs b/src/umbraco.editorControls/MultiNodeTreePicker/FilteredContentTree.cs index c05f9849d9..664282ec89 100644 --- a/src/umbraco.editorControls/MultiNodeTreePicker/FilteredContentTree.cs +++ b/src/umbraco.editorControls/MultiNodeTreePicker/FilteredContentTree.cs @@ -36,7 +36,6 @@ namespace umbraco.editorControls.MultiNodeTreePicker /// private int? m_DeterminedStartNodeId = null; - [Obsolete("This is no longer used and has no effect")] protected override bool LoadMinimalDocument { get