diff --git a/src/Umbraco.Core/Models/UmbracoEntity.cs b/src/Umbraco.Core/Models/UmbracoEntity.cs
index f3ab2b71e0..5b0696bec1 100644
--- a/src/Umbraco.Core/Models/UmbracoEntity.cs
+++ b/src/Umbraco.Core/Models/UmbracoEntity.cs
@@ -171,7 +171,7 @@ namespace Umbraco.Core.Models
public bool IsDraft
{
- get { return _isPublished; }
+ get { return _isDraft; }
set
{
SetPropertyValueAndDetectChanges(o =>
diff --git a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs
index e26b43f5a6..28c21d5ec9 100644
--- a/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs
+++ b/src/Umbraco.Core/Persistence/Factories/UmbracoEntityFactory.cs
@@ -28,12 +28,9 @@ namespace Umbraco.Core.Persistence.Factories
UmbracoFile = dto.UmbracoFile ?? string.Empty
};
- entity.IsPublished = dto.PublishedVersion != default(Guid) ||
- (dto.NewestVersion != default(Guid) && dto.PublishedVersion == dto.NewestVersion);
- entity.IsDraft = dto.NewestVersion != default(Guid) &&
- (dto.PublishedVersion == default(Guid) || dto.PublishedVersion != dto.NewestVersion);
- entity.HasPendingChanges = dto.PublishedVersion != default(Guid) && dto.NewestVersion != default(Guid) &&
- dto.PublishedVersion != dto.NewestVersion;
+ entity.IsPublished = dto.PublishedVersion != default(Guid) || (dto.NewestVersion != default(Guid) && dto.PublishedVersion == dto.NewestVersion);
+ entity.IsDraft = dto.NewestVersion != default(Guid) && (dto.PublishedVersion == default(Guid) || dto.PublishedVersion != dto.NewestVersion);
+ entity.HasPendingChanges = (dto.PublishedVersion != default(Guid) && dto.NewestVersion != default(Guid)) && dto.PublishedVersion != dto.NewestVersion;
return entity;
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs
index 2a898006e4..7dc4286a44 100644
--- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs
@@ -262,7 +262,7 @@ namespace Umbraco.Core.Persistence.Repositories
[Column("publishedVerison")]
public Guid PublishedVersion { get; set; }
- [Column("newestVerison")]
+ [Column("newestVersion")]
public Guid NewestVersion { get; set; }
[Column("alias")]
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs
index 369d681629..fe91131981 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseContentTree.cs
@@ -1,27 +1,15 @@
using System;
-using System.Collections;
using System.Collections.Generic;
-using System.Data;
-using System.IO;
+using System.Globalization;
+using System.Linq;
using System.Text;
using System.Web;
-using System.Xml;
-using System.Configuration;
+using Umbraco.Core.Models;
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.IO;
namespace umbraco.cms.presentation.Trees
@@ -72,31 +60,74 @@ function openContent(id) {
}
}
-
///
- /// Creates the link for the current document
- ///
- ///
- ///
- protected string CreateNodeLink(Document dd)
+ /// Renders the specified tree item.
+ ///
+ /// The tree.
+ /*public override void Render(ref XmlTree Tree)
{
- string nodeLink = library.NiceUrl(dd.Id);
- if (nodeLink == "")
+ //get documents to render
+ Document[] docs = Document.GetChildrenForTree(m_id);
+
+ var args = new TreeEventArgs(Tree);
+ OnBeforeTreeRender(docs, args);
+
+ foreach (Document dd in docs)
{
- nodeLink = "/" + dd.Id;
- if (!GlobalSettings.UseDirectoryUrls)
- nodeLink += ".aspx";
+ List allowedUserOptions = GetUserActionsForNode(dd);
+ if (CanUserAccessNode(dd, allowedUserOptions))
+ {
+
+ XmlTreeNode node = CreateNode(dd, allowedUserOptions);
+
+ OnRenderNode(ref node, dd);
+
+ OnBeforeNodeRender(ref Tree, ref node, EventArgs.Empty);
+ if (node != null)
+ {
+ Tree.Add(node);
+ OnAfterNodeRender(ref Tree, ref node, EventArgs.Empty);
+ }
+ }
}
- return nodeLink;
+ OnAfterTreeRender(docs, args);
+ }*/
+ public override void Render(ref XmlTree Tree)
+ {
+ //get documents to render
+ var entities = Services.EntityService.GetChildren(m_id, UmbracoObjectTypes.Document).ToArray();
+
+ var args = new TreeEventArgs(Tree);
+ OnBeforeTreeRender(entities, args, true);
+
+ foreach (var entity in entities)
+ {
+ var e = entity as UmbracoEntity;
+ List allowedUserOptions = GetUserActionsForNode(e);
+ if (CanUserAccessNode(e, allowedUserOptions))
+ {
+ XmlTreeNode node = CreateNode(e, allowedUserOptions);
+
+ OnRenderNode(ref node, new Document(entity));
+
+ OnBeforeNodeRender(ref Tree, ref node, EventArgs.Empty);
+ if (node != null)
+ {
+ Tree.Add(node);
+ OnAfterNodeRender(ref Tree, ref node, EventArgs.Empty);
+ }
+ }
+ }
+ OnAfterTreeRender(entities, args, true);
}
+ #region Tree Create-node-helper Methods - Legacy
///
- /// Inheritors override this method to modify the content node being created
+ /// Creates an XmlTreeNode based on the passed in Document
///
- ///
- ///
- protected virtual void OnRenderNode(ref XmlTreeNode xNode, Document doc) { }
-
+ ///
+ ///
+ ///
protected XmlTreeNode CreateNode(Document dd, List allowedUserOptions)
{
XmlTreeNode node = XmlTreeNode.Create(this);
@@ -121,6 +152,30 @@ function openContent(id) {
return node;
}
+
+ ///
+ /// Creates the link for the current document
+ ///
+ ///
+ ///
+ protected string CreateNodeLink(Document dd)
+ {
+ string nodeLink = library.NiceUrl(dd.Id);
+ if (nodeLink == "")
+ {
+ nodeLink = "/" + dd.Id;
+ if (GlobalSettings.UseDirectoryUrls == false)
+ nodeLink += ".aspx";
+ }
+ return nodeLink;
+ }
+
+ ///
+ /// Inheritors override this method to modify the content node being created
+ ///
+ ///
+ ///
+ protected virtual void OnRenderNode(ref XmlTreeNode xNode, Document doc) { }
///
/// Determins if the user has access to view the node/document
@@ -149,47 +204,99 @@ function openContent(id) {
List actions = umbraco.BusinessLogic.Actions.Action.FromString(CurrentUser.GetPermissions(dd.Path));
// A user is allowed to delete their own stuff
- if (dd.UserId == CurrentUser.Id && !actions.Contains(ActionDelete.Instance))
+ if (dd.UserId == CurrentUser.Id && actions.Contains(ActionDelete.Instance) == false)
actions.Add(ActionDelete.Instance);
return actions;
}
+ #endregion
+
+ #region Tree Create-node-helper Methods - UmbracoEntity equivalent
///
- /// Renders the specified tree item.
- ///
- /// The tree.
- public override void Render(ref XmlTree Tree)
+ /// Creates an XmlTreeNode based on the passed in UmbracoEntity
+ ///
+ ///
+ ///
+ ///
+ internal XmlTreeNode CreateNode(UmbracoEntity dd, List allowedUserOptions)
{
- //get documents to render
- Document[] docs = Document.GetChildrenForTree(m_id);
-
- var args = new TreeEventArgs(Tree);
- OnBeforeTreeRender(docs, args);
-
- foreach (Document dd in docs)
+ XmlTreeNode node = XmlTreeNode.Create(this);
+ SetMenuAttribute(ref node, allowedUserOptions);
+ node.NodeID = dd.Id.ToString();
+ node.Text = dd.Name;
+ SetNonPublishedAttribute(ref node, dd);
+ SetProtectedAttribute(ref node, dd);
+ SetActionAttribute(ref node, dd);
+ SetSourcesAttributes(ref node, dd);
+ if (dd.ContentTypeIcon != null)
{
- List allowedUserOptions = GetUserActionsForNode(dd);
- if (CanUserAccessNode(dd, allowedUserOptions))
- {
-
- XmlTreeNode node = CreateNode(dd, allowedUserOptions);
-
- OnRenderNode(ref node, dd);
-
- OnBeforeNodeRender(ref Tree, ref node, EventArgs.Empty);
- if (node != null)
- {
- Tree.Add(node);
- OnAfterNodeRender(ref Tree, ref node, EventArgs.Empty);
- }
- }
+ node.Icon = dd.ContentTypeIcon;
+ node.OpenIcon = dd.ContentTypeIcon;
}
- //args = new TreeEventArgs(Tree);
- OnAfterTreeRender(docs, args);
+
+ if (dd.IsPublished == false)
+ node.Style.DimNode();
+
+ if (dd.HasPendingChanges)
+ node.Style.HighlightNode();
+
+ return node;
}
- #region Tree Attribute Setter Methods
+ ///
+ /// Creates the link for the current UmbracoEntity
+ ///
+ ///
+ ///
+ internal string CreateNodeLink(UmbracoEntity dd)
+ {
+ string nodeLink = library.NiceUrl(dd.Id);
+ if (nodeLink == "")
+ {
+ nodeLink = "/" + dd.Id;
+ if (GlobalSettings.UseDirectoryUrls == false)
+ nodeLink += ".aspx";
+ }
+ return nodeLink;
+ }
+
+ ///
+ /// Determins if the user has access to view the node/document
+ ///
+ /// The Document to check permissions against
+ /// A list of IActions that the user has permissions to execute on the current document
+ /// By default the user must have Browse permissions to see the node in the Content tree
+ ///
+ internal virtual bool CanUserAccessNode(UmbracoEntity doc, List allowedUserOptions)
+ {
+ if (allowedUserOptions.Contains(ActionBrowse.Instance))
+ return true;
+
+ return false;
+ }
+
+ ///
+ /// Builds a string of actions that the user is able to perform on the current document.
+ /// The list of actions is subject to the user's rights assigned to the document and also
+ /// is dependant on the type of node.
+ ///
+ ///
+ ///
+ internal List GetUserActionsForNode(UmbracoEntity dd)
+ {
+ List actions = umbraco.BusinessLogic.Actions.Action.FromString(CurrentUser.GetPermissions(dd.Path));
+
+ // A user is allowed to delete their own stuff
+ if (dd.CreatorId == CurrentUser.Id && actions.Contains(ActionDelete.Instance) == false)
+ actions.Add(ActionDelete.Instance);
+
+ return actions;
+ }
+ #endregion
+
+ #region Tree Attribute Setter Methods - Legacy
+
protected void SetNonPublishedAttribute(ref XmlTreeNode treeElement, Document dd)
{
treeElement.NotPublished = false;
@@ -202,6 +309,7 @@ function openContent(id) {
else
treeElement.NotPublished = true;
}
+
protected void SetProtectedAttribute(ref XmlTreeNode treeElement, Document dd)
{
if (Access.IsProtected(dd.Id, dd.Path))
@@ -209,6 +317,7 @@ function openContent(id) {
else
treeElement.IsProtected = false;
}
+
protected void SetActionAttribute(ref XmlTreeNode treeElement, Document dd)
{
@@ -244,6 +353,7 @@ function openContent(id) {
}
}
}
+
protected void SetSourcesAttributes(ref XmlTreeNode treeElement, Document dd)
{
treeElement.HasChildren = dd.ContentType.IsContainerContentType == false && dd.HasChildren;
@@ -258,6 +368,72 @@ function openContent(id) {
#endregion
+ #region Tree Attribute Setter Methods - UmbracoEntity equivalent
+
+ internal void SetNonPublishedAttribute(ref XmlTreeNode treeElement, UmbracoEntity dd)
+ {
+ treeElement.NotPublished = false;
+ if (dd.IsPublished)
+ treeElement.NotPublished = dd.HasPendingChanges;
+ else
+ treeElement.NotPublished = true;
+ }
+
+ internal void SetProtectedAttribute(ref XmlTreeNode treeElement, UmbracoEntity dd)
+ {
+ if (Access.IsProtected(dd.Id, dd.Path))
+ treeElement.IsProtected = true;
+ else
+ treeElement.IsProtected = false;
+ }
+
+ internal void SetActionAttribute(ref XmlTreeNode treeElement, UmbracoEntity dd)
+ {
+
+ // Check for dialog behaviour
+ if (this.DialogMode == TreeDialogModes.fulllink)
+ {
+ string nodeLink = CreateNodeLink(dd);
+ treeElement.Action = String.Format("javascript:openContent('{0}');", nodeLink);
+ }
+ else if (this.DialogMode == TreeDialogModes.locallink)
+ {
+ string nodeLink = string.Format("{{localLink:{0}}}", dd.Id);
+ string nodeText = dd.Name.Replace("'", "\\'");
+ // try to make a niceurl too
+ string niceUrl = umbraco.library.NiceUrl(dd.Id).Replace("'", "\\'"); ;
+ if (niceUrl != "#" || niceUrl != "")
+ {
+ nodeLink += "|" + niceUrl + "|" + HttpContext.Current.Server.HtmlEncode(nodeText);
+ }
+ else
+ {
+ nodeLink += "||" + HttpContext.Current.Server.HtmlEncode(nodeText);
+ }
+
+ treeElement.Action = String.Format("javascript:openContent('{0}');", nodeLink);
+ }
+ else if (this.DialogMode == TreeDialogModes.id || this.DialogMode == TreeDialogModes.none)
+ {
+ treeElement.Action = String.Format("javascript:openContent('{0}');", dd.Id.ToString(CultureInfo.InvariantCulture));
+ }
+ else if (this.IsDialog == false || (this.DialogMode == TreeDialogModes.id))
+ {
+ if (CurrentUser.GetPermissions(dd.Path).Contains(ActionUpdate.Instance.Letter.ToString(CultureInfo.InvariantCulture)))
+ {
+ treeElement.Action = String.Format("javascript:openContent({0});", dd.Id);
+ }
+ }
+ }
+
+ internal void SetSourcesAttributes(ref XmlTreeNode treeElement, UmbracoEntity dd)
+ {
+ treeElement.HasChildren = dd.HasChildren;
+ treeElement.Source = IsDialog == false ? GetTreeServiceUrl(dd.Id) : GetTreeDialogUrl(dd.Id);
+ }
+
+ #endregion
+
///
/// The returned list is filtered based on the IActions that the user is allowed to perform based on the actions
/// that are allowed for the current tree.
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs
index ab25a34e13..b81f9290d2 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseMediaTree.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
+using System.Linq;
using System.Text;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
@@ -58,15 +59,14 @@ function openMedia(id) {
//Updated Render method for improved performance, but currently not usable because of backwards compatibility
//with the OnBeforeTreeRender/OnAfterTreeRender events, which sends an array for legacy Media items.
- /*public override void Render(ref XmlTree tree)
+ public override void Render(ref XmlTree tree)
{
_timer = DisposableTimer.Start(x => LogHelper.Debug("Media tree loaded" + " (took " + x + "ms)"));
- var service = base.Services.EntityService;
- var entities = service.GetChildren(m_id, UmbracoObjectTypes.Media);
+ var entities = Services.EntityService.GetChildren(m_id, UmbracoObjectTypes.Media).ToArray();
var args = new TreeEventArgs(tree);
- OnBeforeTreeRender(entities, args);
+ OnBeforeTreeRender(entities, args, false);
foreach (UmbracoEntity entity in entities)
{
@@ -124,10 +124,10 @@ function openMedia(id) {
//stop the timer and log the output
_timer.Dispose();
- OnAfterTreeRender(entities, args);
- }*/
+ OnAfterTreeRender(entities, args, false);
+ }
- public override void Render(ref XmlTree tree)
+ /*public override void Render(ref XmlTree tree)
{
//_timer = DisposableTimer.Start(x => LogHelper.Debug("Media tree loaded" + " (took " + x + "ms)"));
@@ -202,7 +202,7 @@ function openMedia(id) {
}
//_timer.Dispose();
OnAfterTreeRender(docs, args);
- }
+ }*/
///
/// Returns the value for a link in WYSIWYG mode, by default only media items that have a
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseTree.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseTree.cs
index 3ea88f38b8..08038f0421 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseTree.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/BaseTree.cs
@@ -1,12 +1,16 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
+using System.Linq;
using System.Text;
using System.Xml;
using Umbraco.Core;
+using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Services;
using umbraco.BusinessLogic;
using umbraco.BusinessLogic.Actions;
+using umbraco.cms.businesslogic.media;
+using umbraco.cms.businesslogic.web;
using umbraco.interfaces;
namespace umbraco.cms.presentation.Trees
@@ -523,6 +527,36 @@ namespace umbraco.cms.presentation.Trees
AfterTreeRender(sender, e);
}
+ protected internal virtual void OnBeforeTreeRender(IEnumerable sender, TreeEventArgs e, bool isContent)
+ {
+ if (BeforeTreeRender != null)
+ {
+ if (isContent)
+ {
+ BeforeTreeRender(sender.Select(x => new Document(x, false)).ToArray(), e);
+ }
+ else
+ {
+ BeforeTreeRender(sender.Select(x => new Media(x, false)).ToArray(), e);
+ }
+ }
+ }
+
+ protected internal virtual void OnAfterTreeRender(IEnumerable sender, TreeEventArgs e, bool isContent)
+ {
+ if (AfterTreeRender != null)
+ {
+ if (isContent)
+ {
+ AfterTreeRender(sender.Select(x => new Document(x, false)).ToArray(), e);
+ }
+ else
+ {
+ AfterTreeRender(sender.Select(x => new Media(x, false)).ToArray(), e);
+ }
+ }
+ }
+
///
/// Event that is raised once actions are assigned to nodes
///
diff --git a/src/umbraco.cms/businesslogic/CMSNode.cs b/src/umbraco.cms/businesslogic/CMSNode.cs
index 1087a5b5ae..76455c1361 100644
--- a/src/umbraco.cms/businesslogic/CMSNode.cs
+++ b/src/umbraco.cms/businesslogic/CMSNode.cs
@@ -1105,7 +1105,7 @@ order by level,sortOrder";
_isTrashed = dr.GetBoolean("trashed");
}
- internal protected void PopulateCMSNodeFromContentBase(IContentBase content, Guid objectType)
+ internal protected void PopulateCMSNodeFromUmbracoEntity(IUmbracoEntity content, Guid objectType)
{
_uniqueID = content.Key;
_nodeObjectType = objectType;
@@ -1120,21 +1120,6 @@ order by level,sortOrder";
_entity = content;
}
- internal protected void PopulateCMSNodeFromContentTypeBase(IContentTypeBase contentType, Guid objectType)
- {
- _uniqueID = contentType.Key;
- _nodeObjectType = objectType;
- _level = contentType.Level;
- _path = contentType.Path;
- _parentid = contentType.ParentId;
- _text = contentType.Name;
- _sortOrder = contentType.SortOrder;
- _userId = contentType.CreatorId;
- _createDate = contentType.CreateDate;
- _isTrashed = false;
- _entity = contentType;
- }
-
#endregion
#region Private Methods
diff --git a/src/umbraco.cms/businesslogic/Content.cs b/src/umbraco.cms/businesslogic/Content.cs
index 8babb076fd..786a7b2f6b 100644
--- a/src/umbraco.cms/businesslogic/Content.cs
+++ b/src/umbraco.cms/businesslogic/Content.cs
@@ -6,6 +6,7 @@ using Umbraco.Core;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
+using Umbraco.Core.Models.EntityBase;
using umbraco.cms.businesslogic.property;
using umbraco.DataLayer;
using System.Runtime.CompilerServices;
@@ -53,6 +54,8 @@ namespace umbraco.cms.businesslogic
protected Content(Guid id, bool noSetup) : base(id, noSetup) { }
+ protected internal Content(IUmbracoEntity entity) : base(entity) { }
+
protected internal Content(IContentBase contentBase)
: base(contentBase)
{
@@ -121,7 +124,7 @@ namespace umbraco.cms.businesslogic
if (o == null)
return null;
int contentTypeId;
- if (!int.TryParse(o.ToString(), out contentTypeId))
+ if (int.TryParse(o.ToString(), out contentTypeId) == false)
return null;
try
{
diff --git a/src/umbraco.cms/businesslogic/media/Media.cs b/src/umbraco.cms/businesslogic/media/Media.cs
index 302e01cc47..252d8cd799 100644
--- a/src/umbraco.cms/businesslogic/media/Media.cs
+++ b/src/umbraco.cms/businesslogic/media/Media.cs
@@ -54,6 +54,13 @@ namespace umbraco.cms.businesslogic.media
public Media(Guid id, bool noSetup) : base(id, noSetup) { }
+ internal Media(IUmbracoEntity entity, bool noSetup = true)
+ : base(entity)
+ {
+ if (noSetup == false)
+ setupNode();
+ }
+
internal Media(IMedia media) : base(media)
{
SetupNode(media);
@@ -376,7 +383,7 @@ namespace umbraco.cms.businesslogic.media
MediaItem = media;
//Setting private properties from IContentBase replacing CMSNode.setupNode() / CMSNode.PopulateCMSNodeFromReader()
- base.PopulateCMSNodeFromContentBase(MediaItem, _objectType);
+ base.PopulateCMSNodeFromUmbracoEntity(MediaItem, _objectType);
//If the version is empty we update with the latest version from the current IContent.
if (Version == Guid.Empty)
diff --git a/src/umbraco.cms/businesslogic/media/MediaType.cs b/src/umbraco.cms/businesslogic/media/MediaType.cs
index f3b41415ed..12059a7a20 100644
--- a/src/umbraco.cms/businesslogic/media/MediaType.cs
+++ b/src/umbraco.cms/businesslogic/media/MediaType.cs
@@ -182,7 +182,7 @@ namespace umbraco.cms.businesslogic.media
_mediaType = mediaType;
base.PopulateContentTypeFromContentTypeBase(_mediaType);
- base.PopulateCMSNodeFromContentTypeBase(_mediaType, _objectType);
+ base.PopulateCMSNodeFromUmbracoEntity(_mediaType, _objectType);
}
#endregion
diff --git a/src/umbraco.cms/businesslogic/web/Document.cs b/src/umbraco.cms/businesslogic/web/Document.cs
index 3ddfd31d18..7cb7c9090d 100644
--- a/src/umbraco.cms/businesslogic/web/Document.cs
+++ b/src/umbraco.cms/businesslogic/web/Document.cs
@@ -106,6 +106,21 @@ namespace umbraco.cms.businesslogic.web
}
}
+ ///
+ /// Internal initialization of a legacy Document object using the new IUmbracoEntity object
+ ///
+ ///
+ ///
+ internal Document(IUmbracoEntity entity, bool noSetup = true) : base(entity)
+ {
+ if(noSetup == false)
+ setupNode();
+ }
+
+ ///
+ /// Internal initialization of a legacy Document object using the new IContent object
+ ///
+ ///
internal Document(IContent content) : base(content)
{
SetupNode(content);
@@ -1384,7 +1399,7 @@ namespace umbraco.cms.businesslogic.web
{
Content = content;
//Setting private properties from IContentBase replacing CMSNode.setupNode() / CMSNode.PopulateCMSNodeFromReader()
- base.PopulateCMSNodeFromContentBase(Content, _objectType);
+ base.PopulateCMSNodeFromUmbracoEntity(Content, _objectType);
//If the version is empty we update with the latest version from the current IContent.
if (Version == Guid.Empty)
diff --git a/src/umbraco.cms/businesslogic/web/DocumentType.cs b/src/umbraco.cms/businesslogic/web/DocumentType.cs
index d27f07cd93..1a9e203ada 100644
--- a/src/umbraco.cms/businesslogic/web/DocumentType.cs
+++ b/src/umbraco.cms/businesslogic/web/DocumentType.cs
@@ -642,7 +642,7 @@ namespace umbraco.cms.businesslogic.web
_defaultTemplate = _contentType.DefaultTemplate.Id;
base.PopulateContentTypeFromContentTypeBase(_contentType);
- base.PopulateCMSNodeFromContentTypeBase(_contentType, _objectType);
+ base.PopulateCMSNodeFromUmbracoEntity(_contentType, _objectType);
}
#endregion