diff --git a/umbraco/presentation/umbraco.presentation.csproj b/umbraco/presentation/umbraco.presentation.csproj
index 8602638de9..9768ea356b 100644
--- a/umbraco/presentation/umbraco.presentation.csproj
+++ b/umbraco/presentation/umbraco.presentation.csproj
@@ -1239,6 +1239,7 @@
+
MacroContainerService.asmx
diff --git a/umbraco/presentation/umbraco/Trees/BaseContentTree.cs b/umbraco/presentation/umbraco/Trees/BaseContentTree.cs
index 3046f905fe..bd52b3f9f1 100644
--- a/umbraco/presentation/umbraco/Trees/BaseContentTree.cs
+++ b/umbraco/presentation/umbraco/Trees/BaseContentTree.cs
@@ -159,6 +159,9 @@ function openContent(id) {
//get documents to render
Document[] docs = Document.GetChildrenForTree(m_id);
+ var args = new TreeEventArgs(Tree);
+ OnBeforeTreeRender(docs, args);
+
foreach (Document dd in docs)
{
List allowedUserOptions = GetUserActionsForNode(dd);
@@ -175,9 +178,10 @@ function openContent(id) {
Tree.Add(node);
OnAfterNodeRender(ref Tree, ref node, EventArgs.Empty);
}
-
}
}
+ //args = new TreeEventArgs(Tree);
+ OnAfterTreeRender(docs, args);
}
#region Tree Attribute Setter Methods
diff --git a/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs b/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs
index b3a6081b1f..928223af6e 100644
--- a/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs
+++ b/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs
@@ -1,36 +1,17 @@
using System;
-using System.Collections;
using System.Collections.Generic;
-using System.Data;
-using System.IO;
using System.Text;
-using System.Web;
-using System.Xml;
-using System.Configuration;
using umbraco.BasePages;
using umbraco.BusinessLogic;
-using umbraco.cms.businesslogic;
-using umbraco.cms.businesslogic.cache;
-using umbraco.cms.businesslogic.contentitem;
-using umbraco.cms.businesslogic.datatype;
-using umbraco.cms.businesslogic.language;
-using umbraco.cms.businesslogic.media;
-using umbraco.cms.businesslogic.member;
-using umbraco.cms.businesslogic.property;
-using umbraco.cms.businesslogic.web;
-using umbraco.interfaces;
-using umbraco.DataLayer;
using umbraco.BusinessLogic.Actions;
-using umbraco.BusinessLogic.Utils;
-using umbraco.cms.presentation.Trees;
-using umbraco.IO;
+using umbraco.cms.businesslogic.media;
+using umbraco.cms.businesslogic.property;
+using umbraco.interfaces;
namespace umbraco.cms.presentation.Trees
{
public abstract class BaseMediaTree : BaseTree
{
-
-
public BaseMediaTree(string application)
: base(application)
{
@@ -74,7 +55,10 @@ function openMedia(id) {
public override void Render(ref XmlTree tree)
{
Media[] docs = new Media(m_id).Children;
-
+
+ var args = new TreeEventArgs(tree);
+ OnBeforeTreeRender(docs, args);
+
foreach (Media dd in docs)
{
XmlTreeNode xNode = XmlTreeNode.Create(this);
@@ -131,8 +115,8 @@ function openMedia(id) {
tree.Add(xNode);
OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
}
-
}
+ OnAfterTreeRender(docs, args);
}
///
diff --git a/umbraco/presentation/umbraco/Trees/BaseTree.cs b/umbraco/presentation/umbraco/Trees/BaseTree.cs
index 44cc648228..dab394ff1c 100644
--- a/umbraco/presentation/umbraco/Trees/BaseTree.cs
+++ b/umbraco/presentation/umbraco/Trees/BaseTree.cs
@@ -1,27 +1,11 @@
using System;
-using System.Collections;
using System.Collections.Generic;
-using System.Data;
-using System.IO;
+using System.ComponentModel;
using System.Text;
-using System.Web;
using System.Xml;
-using System.Configuration;
-using umbraco.BasePages;
using umbraco.BusinessLogic;
-using umbraco.cms.businesslogic;
-using umbraco.cms.businesslogic.cache;
-using umbraco.cms.businesslogic.contentitem;
-using umbraco.cms.businesslogic.datatype;
-using umbraco.cms.businesslogic.language;
-using umbraco.cms.businesslogic.media;
-using umbraco.cms.businesslogic.member;
-using umbraco.cms.businesslogic.property;
-using umbraco.cms.businesslogic.web;
-using umbraco.interfaces;
-using umbraco.DataLayer;
-using umbraco.BusinessLogic.Utils;
using umbraco.BusinessLogic.Actions;
+using umbraco.interfaces;
namespace umbraco.cms.presentation.Trees
{
@@ -490,7 +474,9 @@ namespace umbraco.cms.presentation.Trees
public delegate void AfterNodeRenderEventHandler(ref XmlTree sender, ref XmlTreeNode node, EventArgs e);
public static event BeforeNodeRenderEventHandler BeforeNodeRender;
public static event AfterNodeRenderEventHandler AfterNodeRender;
-
+
+ public static event EventHandler BeforeTreeRender;
+ public static event EventHandler AfterTreeRender;
///
/// Raises the event.
@@ -502,7 +488,6 @@ namespace umbraco.cms.presentation.Trees
BeforeNodeRender(ref sender, ref node, e);
}
-
///
/// Raises the event.
///
@@ -513,6 +498,18 @@ namespace umbraco.cms.presentation.Trees
AfterNodeRender(ref sender, ref node, e);
}
+ protected virtual void OnBeforeTreeRender(object sender, TreeEventArgs e)
+ {
+ if (BeforeTreeRender != null)
+ BeforeTreeRender(sender, e);
+ }
+
+ protected virtual void OnAfterTreeRender(object sender, TreeEventArgs e)
+ {
+ if (AfterTreeRender != null)
+ AfterTreeRender(sender, e);
+ }
+
///
/// Event that is raised once actions are assigned to nodes
///
diff --git a/umbraco/presentation/umbraco/Trees/FileSystemTree.cs b/umbraco/presentation/umbraco/Trees/FileSystemTree.cs
index 51f0840971..84514d3a39 100644
--- a/umbraco/presentation/umbraco/Trees/FileSystemTree.cs
+++ b/umbraco/presentation/umbraco/Trees/FileSystemTree.cs
@@ -52,6 +52,10 @@ namespace umbraco.cms.presentation.Trees
DirectoryInfo dirInfo = new DirectoryInfo(path);
DirectoryInfo[] dirInfos = dirInfo.GetDirectories();
+
+ var args = new TreeEventArgs(tree);
+ OnBeforeTreeRender(dirInfo, args);
+
foreach (DirectoryInfo dir in dirInfos)
{
if ((dir.Attributes & FileAttributes.Hidden) == 0)
@@ -103,9 +107,7 @@ namespace umbraco.cms.presentation.Trees
}
}
- }
-
-
-
+ OnAfterTreeRender(dirInfo, args);
+ }
}
}
diff --git a/umbraco/presentation/umbraco/Trees/TreeEventArgs.cs b/umbraco/presentation/umbraco/Trees/TreeEventArgs.cs
new file mode 100644
index 0000000000..54dbc18622
--- /dev/null
+++ b/umbraco/presentation/umbraco/Trees/TreeEventArgs.cs
@@ -0,0 +1,26 @@
+using System;
+using umbraco.cms.businesslogic.web;
+
+namespace umbraco.cms.presentation.Trees
+{
+ ///
+ ///
+ ///
+ public class TreeEventArgs : EventArgs
+ {
+ ///
+ /// Gets the tree.
+ ///
+ /// The tree.
+ public XmlTree Tree { get; private set; }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The tree which the event is for.
+ public TreeEventArgs(XmlTree tree)
+ {
+ this.Tree = tree;
+ }
+ }
+}