From 85e46cbbe5701ffaed1272f743a538fddaaa4c8e Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 14 Oct 2015 16:54:58 +0200 Subject: [PATCH] Fixes: U4-7251 When changing a data type name to be the same as another we suffix the duplication with a number - this needs to be reflected in the UI --- .../DataTypeDefinitionRepository.cs | 12 +++++----- .../common/services/datatypehelper.service.js | 22 +++++++++++++++++++ .../datatypes/datatype.edit.controller.js | 6 ++++- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs index d00d6dd2ee..c1ad88af3d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs @@ -118,9 +118,9 @@ namespace Umbraco.Core.Persistence.Repositories { var sql = new Sql(); sql.Select(isCount ? "COUNT(*)" : "*") - .From() - .InnerJoin() - .On(left => left.DataTypeId, right => right.NodeId) + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.DataTypeId, right => right.NodeId) .Where(x => x.NodeObjectType == NodeObjectTypeId); return sql; } @@ -338,9 +338,9 @@ AND umbracoNode.id <> @id", { //first just get all pre-values for this data type so we can compare them to see if we need to insert or update or replace var sql = new Sql().Select("*") - .From() + .From(SqlSyntax) .Where(dto => dto.DataTypeNodeId == dataType.Id) - .OrderBy(dto => dto.SortOrder); + .OrderBy(dto => dto.SortOrder, SqlSyntax); currentVals = Database.Fetch(sql).ToArray(); } @@ -431,7 +431,7 @@ AND umbracoNode.id <> @id", var sql = new Sql(); sql.Select("*") - .From() + .From(SqlSyntax) .Where(x => x.NodeObjectType == NodeObjectTypeId && x.Text.StartsWith(nodeName)); int uniqueNumber = 1; diff --git a/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js index 4a2707fd80..3cde632d4b 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/datatypehelper.service.js @@ -24,6 +24,28 @@ function dataTypeHelper() { return preValues; + }, + + rebindChangedProperties: function (origContent, savedContent) { + + //a method to ignore built-in prop changes + var shouldIgnore = function (propName) { + return _.some(["notifications", "ModelState"], function (i) { + return i === propName; + }); + }; + //check for changed built-in properties of the content + for (var o in origContent) { + + //ignore the ones listed in the array + if (shouldIgnore(o)) { + continue; + } + + if (!_.isEqual(origContent[o], savedContent[o])) { + origContent[o] = savedContent[o]; + } + } } }; diff --git a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js index 3d85f47d29..7a6fdf0a9d 100644 --- a/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/datatypes/datatype.edit.controller.js @@ -6,7 +6,7 @@ * @description * The controller for the content editor */ -function DataTypeEditController($scope, $routeParams, $location, appState, navigationService, treeService, dataTypeResource, notificationsService, angularHelper, serverValidationManager, contentEditingHelper, formHelper, editorState) { +function DataTypeEditController($scope, $routeParams, $location, appState, navigationService, treeService, dataTypeResource, notificationsService, angularHelper, serverValidationManager, contentEditingHelper, formHelper, editorState, dataTypeHelper) { //setup scope vars $scope.page = {}; @@ -158,6 +158,8 @@ function DataTypeEditController($scope, $routeParams, $location, appState, navig $scope.page.saveButtonState = "success"; + dataTypeHelper.rebindChangedProperties($scope.content, data); + }, function(err) { //NOTE: in the case of data type values we are setting the orig/new props @@ -171,6 +173,8 @@ function DataTypeEditController($scope, $routeParams, $location, appState, navig //share state editorState.set($scope.content); + + dataTypeHelper.rebindChangedProperties($scope.content, data); }); }