From ca8d5b948cceb34a1b16edfe17deabbd4ab995f8 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Fri, 20 Sep 2019 16:33:37 +0200 Subject: [PATCH] Don't YSOD when editing doctype from content that hasn't been saved yet --- .../components/content/edit.controller.js | 54 ++++++++++++------- .../content/umbcontentnodeinfo.directive.js | 2 - .../services/contenteditinghelper.service.js | 22 ++++---- .../views/documenttypes/edit.controller.js | 1 + 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js index aa01df35dc..8e30ef66c5 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/edit.controller.js @@ -153,9 +153,16 @@ function reload() { $scope.page.loading = true; - loadContent().then(function () { - $scope.page.loading = false; - }); + + if ($scope.page.isNew) { + loadScaffold().then(function () { + $scope.page.loading = false; + }); + } else { + loadContent().then(function () { + $scope.page.loading = false; + }); + } } function bindEvents() { @@ -224,6 +231,28 @@ } + /** + * This loads the content scaffold for when creating new content + */ + function loadScaffold() { + //we are creating so get an empty content item + return $scope.getScaffoldMethod()() + .then(function (data) { + + $scope.content = data; + + init(); + startWatches($scope.content); + + resetLastListPageNumber($scope.content); + + eventsService.emit("content.newReady", { content: $scope.content }); + + return $q.resolve($scope.content); + + }); + } + /** * Create the save/publish/preview buttons for the view * @param {any} content the content node @@ -489,22 +518,9 @@ $scope.page.loading = true; - //we are creating so get an empty content item - $scope.getScaffoldMethod()() - .then(function (data) { - - $scope.content = data; - - init(); - startWatches($scope.content); - - resetLastListPageNumber($scope.content); - - eventsService.emit("content.newReady", { content: $scope.content }); - - $scope.page.loading = false; - - }); + loadScaffold().then(function () { + $scope.page.loading = false; + }); } else { diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js index a1df6c2914..a289f8c225 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/content/umbcontentnodeinfo.directive.js @@ -150,8 +150,6 @@ const editor = { id: documentType.id, submit: function (model) { - const args = { node: scope.node }; - eventsService.emit("editors.content.reload", args); editorService.close(); }, close: function () { diff --git a/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js index 200e61ee96..20d0d5b69a 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/contenteditinghelper.service.js @@ -80,17 +80,19 @@ function contentEditingHelper(fileManager, $q, $location, $routeParams, editorSt formHelper.resetForm({ scope: args.scope }); - self.handleSuccessfulSave({ - scope: args.scope, - savedContent: data, - softRedirect: args.softRedirect, - rebindCallback: function () { - rebindCallback.apply(self, [args.content, data]); - } - }); + if (!args.infiniteMode) { + self.handleSuccessfulSave({ + scope: args.scope, + savedContent: data, + softRedirect: args.softRedirect, + rebindCallback: function () { + rebindCallback.apply(self, [args.content, data]); + } + }); - //update editor state to what is current - editorState.set(args.content); + //update editor state to what is current + editorState.set(args.content); + } return $q.resolve(data); diff --git a/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js index f261cf9b14..e12a26ba52 100644 --- a/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/documenttypes/edit.controller.js @@ -338,6 +338,7 @@ saveMethod: contentTypeResource.save, scope: $scope, content: vm.contentType, + infiniteMode: infiniteMode, // we need to rebind... the IDs that have been created! rebindCallback: function (origContentType, savedContentType) { vm.contentType.id = savedContentType.id;