From 00ad45f436ece644c8214f2dd45857f9d2c84dec Mon Sep 17 00:00:00 2001 From: Damiaan Peeters Date: Sat, 13 Jun 2015 11:37:14 +0200 Subject: [PATCH 1/2] Fix for U4-6642 (Sort order messing up after deleting a node) --- .../Persistence/Repositories/ContentRepository.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index 203393391a..b159b0009a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -337,8 +337,8 @@ namespace Umbraco.Core.Persistence.Repositories var parent = Database.First("WHERE id = @ParentId", new { ParentId = entity.ParentId }); int level = parent.Level + 1; int sortOrder = - Database.ExecuteScalar("SELECT COUNT(*) FROM umbracoNode WHERE parentID = @ParentId AND nodeObjectType = @NodeObjectType", - new { ParentId = entity.ParentId, NodeObjectType = NodeObjectTypeId }); + Database.ExecuteScalar("SELECT ISNULL( MAX(sortOrder) + 1 , 0) FROM umbracoNode WHERE parentID = @ParentId", + new { ParentId = entity.ParentId }); //Create the (base) node data - umbracoNode var nodeDto = dto.ContentVersionDto.ContentDto.NodeDto; From d35b47b960a102ba05d6157076cf0eea17bce7f9 Mon Sep 17 00:00:00 2001 From: Damiaan Peeters Date: Sun, 14 Jun 2015 00:52:37 +0200 Subject: [PATCH 2/2] MYSQL doesn't handle the same way. So used the same code as in PersistUpdatedItem() --- .../Persistence/Repositories/ContentRepository.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index b159b0009a..afe0fe464e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -336,9 +336,11 @@ namespace Umbraco.Core.Persistence.Repositories //Logic for setting Path, Level and SortOrder var parent = Database.First("WHERE id = @ParentId", new { ParentId = entity.ParentId }); int level = parent.Level + 1; - int sortOrder = - Database.ExecuteScalar("SELECT ISNULL( MAX(sortOrder) + 1 , 0) FROM umbracoNode WHERE parentID = @ParentId", - new { ParentId = entity.ParentId }); + var maxSortOrder = + Database.ExecuteScalar( + "SELECT coalesce(max(sortOrder),0) FROM umbracoNode WHERE parentid = @ParentId AND nodeObjectType = @NodeObjectType", + new { ParentId = entity.ParentId, NodeObjectType = NodeObjectTypeId }); + var sortOrder = maxSortOrder + 1; //Create the (base) node data - umbracoNode var nodeDto = dto.ContentVersionDto.ContentDto.NodeDto;