From ee8339d563e6d9c4067baf8e8fa304d97fb9374b Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Thu, 30 Nov 2023 19:25:03 +0100 Subject: [PATCH] Add contentTypeEditor to editorService (#15034) --- .../components/umbgroupsbuilder.directive.js | 13 ++----- .../src/common/services/editor.service.js | 34 +++++++++++++++++++ .../views/datatype.info.controller.js | 13 ++----- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js index 2faa9cbeda..227193128e 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/umbgroupsbuilder.directive.js @@ -509,6 +509,7 @@ scope.openContentType = (contentTypeId) => { const editor = { id: contentTypeId, + entityType: scope.contentType, submit: () => { const args = { node: scope.model }; eventsService.emit("editors.documentType.reload", args); @@ -519,17 +520,7 @@ } }; - switch (scope.contentType) { - case "documentType": - editorService.documentTypeEditor(editor); - break; - case "mediaType": - editorService.mediaTypeEditor(editor); - break; - case "memberType": - editorService.memberTypeEditor(editor); - break; - } + editorService.contentTypeEditor(editor); }; /* ---------- TABS ---------- */ diff --git a/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js b/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js index cabb9b0139..5418aa399c 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/editor.service.js @@ -635,6 +635,39 @@ When building a custom infinite editor view you can use the same components as a open(editor); } + /** + * @ngdoc method + * @name umbraco.services.editorService#contentTypeEditor + * @methodOf umbraco.services.editorService + * + * @description + * Opens the content type editor in infinite editing, the submit callback returns the alias of the saved content type. + * + * @param {object} editor rendering options. + * @param {string} editor.entityType Entity type to open - default document type. + * @param {number} editor.id Indicates the ID of the content type to be edited. Alternatively the ID may be set to `-1` in combination with `create` being set to `true` to open the content type editor for creating a new content type. + * @param {boolean} editor.create Set to `true` to open the content type editor for creating a new content type. + * @param {function} editor.submit Callback function when the submit button is clicked. Returns the editor model object. + * @param {function} editor.close Callback function when the close button is clicked. + * @returns {object} editor object. + */ + function contentTypeEditor(editor) { + + if (!editor.entityType) editor.entityType = "documentType"; + + switch (editor.entityType) { + case "documentType": + documentTypeEditor(editor); + break; + case "mediaType": + mediaTypeEditor(editor); + break; + case "memberType": + memberTypeEditor(editor); + break; + } + } + /** * @ngdoc method * @name umbraco.services.editorService#documentTypeEditor @@ -1158,6 +1191,7 @@ When building a custom infinite editor view you can use the same components as a linkPicker: linkPicker, mediaPicker: mediaPicker, iconPicker: iconPicker, + contentTypeEditor: contentTypeEditor, documentTypeEditor: documentTypeEditor, mediaTypeEditor: mediaTypeEditor, memberTypeEditor: memberTypeEditor, diff --git a/src/Umbraco.Web.UI.Client/src/views/dataTypes/views/datatype.info.controller.js b/src/Umbraco.Web.UI.Client/src/views/dataTypes/views/datatype.info.controller.js index 2cb075e80d..ffee8b023c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dataTypes/views/datatype.info.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/dataTypes/views/datatype.info.controller.js @@ -60,6 +60,7 @@ function DataTypeInfoController($scope, $routeParams, dataTypeResource, $timeout const editor = { id: id, + entityType: type, submit: function (model) { editorService.close(); vm.view.loading = true; @@ -71,17 +72,7 @@ function DataTypeInfoController($scope, $routeParams, dataTypeResource, $timeout } }; - switch (type) { - case "documentType": - editorService.documentTypeEditor(editor); - break; - case "mediaType": - editorService.mediaTypeEditor(editor); - break; - case "memberType": - editorService.memberTypeEditor(editor); - break; - } + editorService.contentTypeEditor(editor); } loadRelations();