From 8ce200bd16a1f9523d848e7857b7b426d2a43041 Mon Sep 17 00:00:00 2001 From: Marcel van Helmont Date: Tue, 28 Aug 2018 21:32:18 +0200 Subject: [PATCH 1/2] added toggles to allow creating templates for collection and collection item --- .../common/resources/contenttype.resource.js | 4 +- .../views/documenttypes/create.controller.js | 4 +- .../src/views/documenttypes/create.html | 4 ++ .../Editors/ContentTypeController.cs | 46 ++++++++++++++++++- 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js index d006951b8a..fbbeba2f60 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/contenttype.resource.js @@ -298,10 +298,10 @@ function contentTypeResource($q, $http, umbRequestHelper, umbDataFormatter) { }, - createCollection: function (parentId, collectionName, collectionItemName, collectionIcon, collectionItemIcon) { + createCollection: function (parentId, collectionName, collectionCreateTemplate, collectionItemName, collectionItemCreateTemplate, collectionIcon, collectionItemIcon) { return umbRequestHelper.resourcePromise( - $http.post(umbRequestHelper.getApiUrl("contentTypeApiBaseUrl", "PostCreateCollection", { parentId: parentId, collectionName: collectionName, collectionItemName: collectionItemName, collectionIcon: collectionIcon, collectionItemIcon: collectionItemIcon})), + $http.post(umbRequestHelper.getApiUrl("contentTypeApiBaseUrl", "PostCreateCollection", { parentId: parentId, collectionName: collectionName, collectionCreateTemplate: collectionCreateTemplate, collectionItemName: collectionItemName, collectionItemCreateTemplate: collectionItemCreateTemplate, collectionIcon: collectionIcon, collectionItemIcon: collectionItemIcon})), 'Failed to create collection under ' + parentId); }, diff --git a/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.controller.js b/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.controller.js index 2ffeec3388..551a5d6ec1 100644 --- a/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.controller.js @@ -27,6 +27,8 @@ function DocumentTypesCreateController($scope, $location, navigationService, con $scope.showCreateDocTypeCollection = function () { $scope.model.creatingDoctypeCollection = true; + $scope.model.collectionCreateTemplate = true; + $scope.model.collectionItemCreateTemplate = true; }; $scope.createContainer = function () { @@ -83,7 +85,7 @@ function DocumentTypesCreateController($scope, $location, navigationService, con } } - contentTypeResource.createCollection(node.id, $scope.model.collectionName, $scope.model.collectionItemName, collectionIcon, collectionItemIcon).then(function (collectionData) { + contentTypeResource.createCollection(node.id, $scope.model.collectionName, $scope.model.collectionCreateTemplate, $scope.model.collectionItemName, $scope.model.collectionItemCreateTemplate, collectionIcon, collectionItemIcon).then(function (collectionData) { navigationService.hideMenu(); $location.search('create', null); diff --git a/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.html b/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.html index 549ad0452b..98f9b23b64 100644 --- a/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.html +++ b/src/Umbraco.Web.UI.Client/src/views/documenttypes/create.html @@ -80,10 +80,14 @@ + + + + diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs index 22f1fb7457..23cb209be0 100644 --- a/src/Umbraco.Web/Editors/ContentTypeController.cs +++ b/src/Umbraco.Web/Editors/ContentTypeController.cs @@ -207,7 +207,7 @@ namespace Umbraco.Web.Editors : Request.CreateNotificationValidationErrorResponse(result.Exception.Message); } - public DocumentTypeCollectionDisplay PostCreateCollection(int parentId, string collectionName, string collectionItemName, string collectionIcon, string collectionItemIcon) + public DocumentTypeCollectionDisplay PostCreateCollection(int parentId, string collectionName, bool collectionCreateTemplate, string collectionItemName, bool collectionItemCreateTemplate, string collectionIcon, string collectionItemIcon) { var storeInContainer = false; var allowUnderDocType = -1; @@ -228,6 +228,28 @@ namespace Umbraco.Web.Editors itemDocType.Name = collectionItemName; itemDocType.Alias = collectionItemName.ToSafeAlias(); itemDocType.Icon = collectionItemIcon; + + // create item doctype template + if (collectionItemCreateTemplate) + { + var template = Services.FileService.GetTemplate(itemDocType.Alias); + if (template == null) + { + var tryCreateTemplate = Services.FileService.CreateTemplateForContentType(itemDocType.Alias, itemDocType.Name); + if (tryCreateTemplate == false) + { + Logger.Warn( + "Could not create a template for the Content Type: {0}, status: {1}", + () => itemDocType.Alias, + () => tryCreateTemplate.Result.StatusType); + } + template = tryCreateTemplate.Result.Entity; + } + + itemDocType.SetDefaultTemplate(template); + } + + // save item doctype Services.ContentTypeService.Save(itemDocType); // create collection doctype @@ -240,6 +262,28 @@ namespace Umbraco.Web.Editors { new ContentTypeSort(itemDocType.Id, 0) }; + + // create collection doctype template + if (collectionCreateTemplate) + { + var template = Services.FileService.GetTemplate(collectionDocType.Alias); + if (template == null) + { + var tryCreateTemplate = Services.FileService.CreateTemplateForContentType(collectionDocType.Alias, collectionDocType.Name); + if (tryCreateTemplate == false) + { + Logger.Warn( + "Could not create a template for the Content Type: {0}, status: {1}", + () => collectionDocType.Alias, + () => tryCreateTemplate.Result.StatusType); + } + template = tryCreateTemplate.Result.Entity; + } + + collectionDocType.SetDefaultTemplate(template); + } + + // save collection doctype Services.ContentTypeService.Save(collectionDocType); // test if the parent id exist and then allow the collection underneath From ec1a3f0fe89263438ad4456fc986fe017aca6f0f Mon Sep 17 00:00:00 2001 From: Marcel van Helmont Date: Tue, 28 Aug 2018 22:44:53 +0200 Subject: [PATCH 2/2] make sure alias is camelCase format --- src/Umbraco.Web/Editors/ContentTypeController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs index 23cb209be0..4c948654c1 100644 --- a/src/Umbraco.Web/Editors/ContentTypeController.cs +++ b/src/Umbraco.Web/Editors/ContentTypeController.cs @@ -226,7 +226,7 @@ namespace Umbraco.Web.Editors // create item doctype var itemDocType = new ContentType(parentId); itemDocType.Name = collectionItemName; - itemDocType.Alias = collectionItemName.ToSafeAlias(); + itemDocType.Alias = collectionItemName.ToSafeAlias(true); itemDocType.Icon = collectionItemIcon; // create item doctype template @@ -255,7 +255,7 @@ namespace Umbraco.Web.Editors // create collection doctype var collectionDocType = new ContentType(parentId); collectionDocType.Name = collectionName; - collectionDocType.Alias = collectionName.ToSafeAlias(); + collectionDocType.Alias = collectionName.ToSafeAlias(true); collectionDocType.Icon = collectionIcon; collectionDocType.IsContainer = true; collectionDocType.AllowedContentTypes = new List()