diff --git a/umbraco/presentation/umbraco/Trees/BaseContentTree.cs b/umbraco/presentation/umbraco/Trees/BaseContentTree.cs
index 7c31331c32..6e39346bd0 100644
--- a/umbraco/presentation/umbraco/Trees/BaseContentTree.cs
+++ b/umbraco/presentation/umbraco/Trees/BaseContentTree.cs
@@ -187,8 +187,9 @@ function openContent(id) {
if (node != null)
{
Tree.Add(node);
+ OnAfterNodeRender(ref Tree, ref node, EventArgs.Empty);
}
- OnAfterNodeRender(ref Tree, ref node, EventArgs.Empty);
+
}
}
}
diff --git a/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs b/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs
index fac401638d..312def0895 100644
--- a/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs
+++ b/umbraco/presentation/umbraco/Trees/BaseMediaTree.cs
@@ -142,8 +142,9 @@ function openMedia(id) {
if (xNode != null)
{
tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
}
- OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/BaseTree.cs b/umbraco/presentation/umbraco/Trees/BaseTree.cs
index a143bd69d2..3506610014 100644
--- a/umbraco/presentation/umbraco/Trees/BaseTree.cs
+++ b/umbraco/presentation/umbraco/Trees/BaseTree.cs
@@ -380,7 +380,9 @@ namespace umbraco.cms.presentation.Trees
this.id = id;
else
this.NodeKey = nodeId;
- this.Render(ref xTree);
+
+ this.Render(ref xTree);
+
return xTree.ToString();
}
@@ -460,18 +462,18 @@ namespace umbraco.cms.presentation.Trees
return treeCaption;
}
- //EVENTS
- ///
- /// The before node render event handler
- ///
+
+ #region Events
+
+ //These events are poorly designed because they cannot be implemented in the tree inheritance structure,
+ //it would be up to the individual trees to ensure they launch the events which is poor design.
+ //they are also named in appropriately in regards to standards and because everything is by ref, there is no need to
+ //have 2 events, makes no difference if you want to modify the contents of the data.
public delegate void BeforeNodeRenderEventHandler(ref XmlTree sender, ref XmlTreeNode node, EventArgs e);
-
- ///
- /// The after node render event handler
- ///
public delegate void AfterNodeRenderEventHandler(ref XmlTree sender, ref XmlTreeNode node, EventArgs e);
-
public static event BeforeNodeRenderEventHandler BeforeNodeRender;
+ public static event AfterNodeRenderEventHandler AfterNodeRender;
+
///
/// Raises the event.
///
@@ -482,7 +484,7 @@ namespace umbraco.cms.presentation.Trees
BeforeNodeRender(ref sender, ref node, e);
}
- public static event AfterNodeRenderEventHandler AfterNodeRender;
+
///
/// Raises the event.
///
@@ -493,6 +495,10 @@ namespace umbraco.cms.presentation.Trees
AfterNodeRender(ref sender, ref node, e);
}
+ #endregion
+
+
+
}
-}
+}
\ No newline at end of file
diff --git a/umbraco/presentation/umbraco/Trees/FileSystemTree.cs b/umbraco/presentation/umbraco/Trees/FileSystemTree.cs
index 49dbc82c06..51f0840971 100644
--- a/umbraco/presentation/umbraco/Trees/FileSystemTree.cs
+++ b/umbraco/presentation/umbraco/Trees/FileSystemTree.cs
@@ -65,9 +65,16 @@ namespace umbraco.cms.presentation.Trees
xDirNode.Icon = FolderIcon;
xDirNode.OpenIcon = FolderIconOpen;
xDirNode.HasChildren = dir.GetFiles().Length > 0 || dir.GetDirectories().Length > 0;
+
OnRenderFolderNode(ref xDirNode);
-
- tree.Add(xDirNode);
+ OnBeforeNodeRender(ref tree, ref xDirNode, EventArgs.Empty);
+ if (xDirNode != null)
+ {
+ tree.Add(xDirNode);
+ OnAfterNodeRender(ref tree, ref xDirNode, EventArgs.Empty);
+ }
+
+
}
}
FileInfo[] fileInfo = dirInfo.GetFiles(FileSearchPattern);
@@ -86,8 +93,14 @@ namespace umbraco.cms.presentation.Trees
xFileNode.OpenIcon = "doc.gif";
OnRenderFileNode(ref xFileNode);
+ OnBeforeNodeRender(ref tree, ref xFileNode, EventArgs.Empty);
+ if (xFileNode != null)
+ {
+ tree.Add(xFileNode);
+ OnAfterNodeRender(ref tree, ref xFileNode, EventArgs.Empty);
+ }
+
- tree.Add(xFileNode);
}
}
}
diff --git a/umbraco/presentation/umbraco/Trees/MediaRecycleBin.cs b/umbraco/presentation/umbraco/Trees/MediaRecycleBin.cs
index e0be6c9313..483f955b4f 100644
--- a/umbraco/presentation/umbraco/Trees/MediaRecycleBin.cs
+++ b/umbraco/presentation/umbraco/Trees/MediaRecycleBin.cs
@@ -6,6 +6,7 @@ using System.IO;
using System.Text;
using System.Web;
using System.Xml;
+using System.Linq;
using System.Configuration;
using umbraco.BasePages;
using umbraco.BusinessLogic;
diff --git a/umbraco/presentation/umbraco/Trees/NullTree.cs b/umbraco/presentation/umbraco/Trees/NullTree.cs
index dcb3eee763..0186d8f0f8 100644
--- a/umbraco/presentation/umbraco/Trees/NullTree.cs
+++ b/umbraco/presentation/umbraco/Trees/NullTree.cs
@@ -35,7 +35,14 @@ namespace umbraco.cms.presentation.Trees
XmlTreeNode xNode = XmlTreeNode.Create(this);
xNode.Text = "Error";
xNode.Menu = null;
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
protected override void CreateRootNode(ref XmlTreeNode rootNode)
diff --git a/umbraco/presentation/umbraco/Trees/UserPermissions.cs b/umbraco/presentation/umbraco/Trees/UserPermissions.cs
index 44c58351f0..01c5b1785b 100644
--- a/umbraco/presentation/umbraco/Trees/UserPermissions.cs
+++ b/umbraco/presentation/umbraco/Trees/UserPermissions.cs
@@ -52,8 +52,14 @@ namespace umbraco.cms.presentation.Trees
node.Text = user.Name;
node.Action = "javascript:openUserPermissions('" + user.Id.ToString() + "');";
node.Icon = "user.gif";
+
+ OnBeforeNodeRender(ref tree, ref node, EventArgs.Empty);
+ if (node != null)
+ {
+ tree.Add(node);
+ OnAfterNodeRender(ref tree, ref node, EventArgs.Empty);
+ }
- tree.Add(node);
}
}
}
diff --git a/umbraco/presentation/umbraco/Trees/UserTypes.cs b/umbraco/presentation/umbraco/Trees/UserTypes.cs
index 54229d07d1..3fd781e2ba 100644
--- a/umbraco/presentation/umbraco/Trees/UserTypes.cs
+++ b/umbraco/presentation/umbraco/Trees/UserTypes.cs
@@ -39,8 +39,13 @@ function openUserTypes(id) {
node.Action = string.Format("javascript:openUserTypes({0})", userType.Id.ToString());
node.Icon = "user.gif";
node.Text = userType.Alias;
-
- tree.Add(node);
+
+ OnBeforeNodeRender(ref tree, ref node, EventArgs.Empty);
+ if (node != null)
+ {
+ tree.Add(node);
+ OnAfterNodeRender(ref tree, ref node, EventArgs.Empty);
+ }
}
}
}
diff --git a/umbraco/presentation/umbraco/Trees/XmlTree.cs b/umbraco/presentation/umbraco/Trees/XmlTree.cs
index 048eceff79..ea2d94fd07 100644
--- a/umbraco/presentation/umbraco/Trees/XmlTree.cs
+++ b/umbraco/presentation/umbraco/Trees/XmlTree.cs
@@ -101,12 +101,6 @@ namespace umbraco.cms.presentation.Trees
return "";
}
- [System.Runtime.InteropServices.DispIdAttribute(-4)]
- public IEnumerator GetEnumerator()
- {
- return treeCollection.GetEnumerator();
- }
-
public void Add(XmlTreeNode obj)
{
treeCollection.Add(obj);
@@ -155,7 +149,13 @@ namespace umbraco.cms.presentation.Trees
set { __treeCollection = value; }
}
- }
+ [System.Runtime.InteropServices.DispIdAttribute(-4)]
+ public IEnumerator GetEnumerator()
+ {
+ return (treeCollection as IEnumerable).GetEnumerator();
+ }
+
+ }
///
/// Used for serializing data to XML as the data structure for the JavaScript tree
diff --git a/umbraco/presentation/umbraco/Trees/loadCache.cs b/umbraco/presentation/umbraco/Trees/loadCache.cs
index e8b0d29b74..8120e2d921 100644
--- a/umbraco/presentation/umbraco/Trees/loadCache.cs
+++ b/umbraco/presentation/umbraco/Trees/loadCache.cs
@@ -72,7 +72,14 @@ namespace umbraco
xNode.Icon = "developerCacheTypes.gif";
xNode.OpenIcon = "developerCacheTypes.gif";
xNode.HasChildren = itemCount > 0;
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadCacheItem.cs b/umbraco/presentation/umbraco/Trees/loadCacheItem.cs
index fe72e8f231..e114f56109 100644
--- a/umbraco/presentation/umbraco/Trees/loadCacheItem.cs
+++ b/umbraco/presentation/umbraco/Trees/loadCacheItem.cs
@@ -80,8 +80,14 @@ function openCacheItem(id) {
xNode.Action = "javascript:openCacheItem('" + a[i] + "');";
xNode.Icon = "developerCacheItem.gif";
xNode.OpenIcon = "developerCacheItem.gif";
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
- tree.Add(xNode);
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadDataTypes.cs b/umbraco/presentation/umbraco/Trees/loadDataTypes.cs
index d5f67b94f4..6d0e4aaaae 100644
--- a/umbraco/presentation/umbraco/Trees/loadDataTypes.cs
+++ b/umbraco/presentation/umbraco/Trees/loadDataTypes.cs
@@ -64,8 +64,14 @@ function openDataType(id) {
xNode.Action = "javascript:openDataType(" + dt.Id + ");";
xNode.Icon = "developerDatatype.gif";
xNode.OpenIcon = "developerDatatype.gif";
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
- tree.Add(xNode);
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadDictionary.cs b/umbraco/presentation/umbraco/Trees/loadDictionary.cs
index 7c90e43c05..a9ec4f56e8 100644
--- a/umbraco/presentation/umbraco/Trees/loadDictionary.cs
+++ b/umbraco/presentation/umbraco/Trees/loadDictionary.cs
@@ -77,7 +77,14 @@ namespace umbraco
xNode.NodeType = "DictionaryItem"; //this shouldn't be like this, it should be this.TreeAlias but the ui.config file points to this name.
xNode.Source = this.GetTreeServiceUrl(di.id);
xNode.HasChildren = di.hasChildren;
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadLanguages.cs b/umbraco/presentation/umbraco/Trees/loadLanguages.cs
index bbfd7166dc..51cc3893ee 100644
--- a/umbraco/presentation/umbraco/Trees/loadLanguages.cs
+++ b/umbraco/presentation/umbraco/Trees/loadLanguages.cs
@@ -60,8 +60,14 @@ function openDictionary() {
xNode.Action = "javascript:openLanguage(" + l.id + ");";
xNode.Icon = "settingLanguage.gif";
xNode.OpenIcon = "settingLanguage.gif";
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
- tree.Add(xNode);
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadMediaTypes.cs b/umbraco/presentation/umbraco/Trees/loadMediaTypes.cs
index 4ff36edb22..07ad27ab3f 100644
--- a/umbraco/presentation/umbraco/Trees/loadMediaTypes.cs
+++ b/umbraco/presentation/umbraco/Trees/loadMediaTypes.cs
@@ -56,7 +56,13 @@ function openMediaType(id) {
xNode.Icon = "settingDataType.gif";
xNode.OpenIcon = "settingDataType.gif";
- tree.Add(xNode);
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadMemberGroups.cs b/umbraco/presentation/umbraco/Trees/loadMemberGroups.cs
index 907278a132..4153f3c513 100644
--- a/umbraco/presentation/umbraco/Trees/loadMemberGroups.cs
+++ b/umbraco/presentation/umbraco/Trees/loadMemberGroups.cs
@@ -75,7 +75,13 @@ function openMemberGroup(id) {
{
xNode.Menu = null;
}
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ }
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadNodeTypes.cs b/umbraco/presentation/umbraco/Trees/loadNodeTypes.cs
index 485988187a..c826acade7 100644
--- a/umbraco/presentation/umbraco/Trees/loadNodeTypes.cs
+++ b/umbraco/presentation/umbraco/Trees/loadNodeTypes.cs
@@ -91,7 +91,14 @@ function openNodeType(id) {
xNode.Icon = "settingMasterDataType.gif";
xNode.OpenIcon = "settingMasterDataType.gif";
}
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadStylesheetProperty.cs b/umbraco/presentation/umbraco/Trees/loadStylesheetProperty.cs
index f9c4bc9fa6..f23e367911 100644
--- a/umbraco/presentation/umbraco/Trees/loadStylesheetProperty.cs
+++ b/umbraco/presentation/umbraco/Trees/loadStylesheetProperty.cs
@@ -59,7 +59,13 @@ namespace umbraco
xNode.Icon = "settingCssItem.gif";
xNode.OpenIcon = "settingCssItem.gif";
- tree.Add(xNode);
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadStylesheets.cs b/umbraco/presentation/umbraco/Trees/loadStylesheets.cs
index 9ba7d54cdf..f29a5f989c 100644
--- a/umbraco/presentation/umbraco/Trees/loadStylesheets.cs
+++ b/umbraco/presentation/umbraco/Trees/loadStylesheets.cs
@@ -69,7 +69,14 @@ namespace umbraco
xNode.Icon = "settingCss.gif";
xNode.OpenIcon = "settingCss.gif";
xNode.NodeType = "stylesheet"; //this shouldn't be like this, it should be this.TreeAlias but the ui.config file points to this name.
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadTemplates.cs b/umbraco/presentation/umbraco/Trees/loadTemplates.cs
index be58072842..0b547fdece 100644
--- a/umbraco/presentation/umbraco/Trees/loadTemplates.cs
+++ b/umbraco/presentation/umbraco/Trees/loadTemplates.cs
@@ -69,7 +69,14 @@ function openTemplate(id) {
xNode.Icon = "settingMasterTemplate.gif";
xNode.OpenIcon = "settingMasterTemplate.gif";
}
- tree.Add(xNode);
+
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadTranslationTasks.cs b/umbraco/presentation/umbraco/Trees/loadTranslationTasks.cs
index 68c79c3fe0..a285aa229a 100644
--- a/umbraco/presentation/umbraco/Trees/loadTranslationTasks.cs
+++ b/umbraco/presentation/umbraco/Trees/loadTranslationTasks.cs
@@ -69,7 +69,13 @@ namespace umbraco {
xNode.Icon = ".sprTreeSettingLanguage";
xNode.OpenIcon = ".sprTreeSettingLanguage";
- tree.Add(xNode);
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
@@ -114,7 +120,13 @@ namespace umbraco {
xNode.Icon = ".sprTreeSettingLanguage";
xNode.OpenIcon = ".sprTreeSettingLanguage";
- tree.Add(xNode);
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}
diff --git a/umbraco/presentation/umbraco/Trees/loadUsers.cs b/umbraco/presentation/umbraco/Trees/loadUsers.cs
index e58616054c..50977a0536 100644
--- a/umbraco/presentation/umbraco/Trees/loadUsers.cs
+++ b/umbraco/presentation/umbraco/Trees/loadUsers.cs
@@ -98,7 +98,13 @@ function openUser(id) {
xNode.Icon = "user.gif";
xNode.OpenIcon = "user.gif";
- tree.Add(xNode);
+ OnBeforeNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ if (xNode != null)
+ {
+ tree.Add(xNode);
+ OnAfterNodeRender(ref tree, ref xNode, EventArgs.Empty);
+ }
+
}
}