Distinguish between default zero and intentional zero sort order for new documents (#17517)

* Distinguish between default value and initial zero

* Update special value comment documentation

* Redid solution with dirty/new entity tracking

* rework copy branch sortorder fix

* Change == false to is false

---------

Co-authored-by: Mole <nikolajlauridsen@protonmail.ch>
This commit is contained in:
Sven Geusens
2024-11-21 09:07:22 +01:00
committed by nikolajlauridsen
parent ec8e10f406
commit 9febbc7db1
2 changed files with 6 additions and 2 deletions

View File

@@ -2760,6 +2760,9 @@ public class ContentService : RepositoryService, IContentService
descendantCopy.CreatorId = userId;
descendantCopy.WriterId = userId;
// since the repository relies on the dirty state to figure out whether it needs to update the sort order, we mark it dirty here
descendantCopy.SortOrder = descendantCopy.SortOrder;
// save and flush (see above)
_documentRepository.Save(descendantCopy);

View File

@@ -900,9 +900,10 @@ public class DocumentRepository : ContentRepositoryBase<int, IContent, DocumentR
NodeDto parent = GetParentNodeDto(entity.ParentId);
var level = parent.Level + 1;
var sortOrderExists = SortorderExists(entity.ParentId, entity.SortOrder);
var calculateSortOrder = (entity is { HasIdentity: false, SortOrder: 0 } && entity.IsPropertyDirty(nameof(entity.SortOrder)) is false) // SortOrder was not updated from it's default value
|| SortorderExists(entity.ParentId, entity.SortOrder);
// if the sortorder of the entity already exists get a new one, else use the sortOrder of the entity
var sortOrder = sortOrderExists ? GetNewChildSortOrder(entity.ParentId, 0) : entity.SortOrder;
var sortOrder = calculateSortOrder ? GetNewChildSortOrder(entity.ParentId, 0) : entity.SortOrder;
// persist the node dto
NodeDto nodeDto = dto.ContentDto.NodeDto;