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; + } + } +}