diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs
index 4479ebd3b6..2ee979cdf6 100644
--- a/src/Umbraco.Core/Models/ContentExtensions.cs
+++ b/src/Umbraco.Core/Models/ContentExtensions.cs
@@ -456,6 +456,41 @@ namespace Umbraco.Core.Models
return ApplicationContext.Current.Services.ContentService.HasPublishedVersion(content.Id);
}
+ ///
+ /// Creates the full xml representation for the object and all of it's descendants
+ ///
+ /// to generate xml for
+ /// Xml representation of the passed in
+ internal static XElement ToDeepXml(this IContent content)
+ {
+ var xml = content.ToXml();
+
+ var descendants = content.Descendants().ToArray();
+ var currentChildren = descendants.Where(x => x.ParentId == content.Id);
+ AddChildXml(descendants, currentChildren, xml);
+
+ return xml;
+ }
+
+ private static void AddChildXml(
+ IContent[] originalDescendants,
+ IEnumerable currentChildren,
+ XElement currentXml)
+ {
+ foreach (var child in currentChildren)
+ {
+ //add the child's xml
+ var childXml = child.ToXml();
+ currentXml.Add(childXml);
+ //copy local (out of closure)
+ var c = child;
+ //get this item's children
+ var children = originalDescendants.Where(x => x.ParentId == c.Id);
+ //recurse and add it's children to the child xml element
+ AddChildXml(originalDescendants, children, childXml);
+ }
+ }
+
///
/// Creates the xml representation for the object
///
diff --git a/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx b/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx
index 080041b7c2..3c49b20c10 100644
--- a/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx
+++ b/src/Umbraco.Web.UI/umbraco/dashboard/ExamineManagement.ascx
@@ -45,15 +45,19 @@