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 60dddff3a5..1b88ea4843 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 @@ -14,7 +14,7 @@ scope.page.menu.currentNode = null; scope.page.menu.currentSection = appState.getSectionState("currentSection"); scope.page.listViewPath = null; - scope.page.isNew = scope.createOptions ? true : false; + scope.page.isNew = scope.isNew ? true : false; scope.page.buttonGroupState = "init"; function init(content) { @@ -116,7 +116,7 @@ scope.page.loading = true; //we are creating so get an empty content item - contentResource.getScaffold(scope.contentId, scope.createOptions.docType) + scope.getScaffoldMethod()() .then(function (data) { scope.content = data; @@ -230,11 +230,12 @@ templateUrl: 'views/components/content/edit.html', scope: { contentId: "=", + isNew: "=?", treeAlias: "@", - createOptions: "=?", page: "=?", saveMethod: "&", - getMethod: "&" + getMethod: "&", + getScaffoldMethod: "&?" }, link: link }; diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js index 2df3c411e6..e629bb0beb 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/content.resource.js @@ -399,6 +399,17 @@ function contentResource($q, $http, umbDataFormatter, umbRequestHelper) { 'Failed to retrieve data for empty content item type ' + alias); }, + getBlueprintScaffold: function (blueprintId) { + + return umbRequestHelper.resourcePromise( + $http.get( + umbRequestHelper.getApiUrl( + "contentApiBaseUrl", + "GetEmpty", + [{ blueprintId: blueprintId }])), + 'Failed to retrieve blueprint for id ' + blueprintId); + }, + /** * @ngdoc method * @name umbraco.resources.contentResource#getNiceUrl diff --git a/src/Umbraco.Web.UI.Client/src/views/content/content.edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/content/content.edit.controller.js index 2c2183695f..94562c6a32 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/content.edit.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/content/content.edit.controller.js @@ -8,16 +8,19 @@ */ function ContentEditController($scope, $routeParams, contentResource) { + function scaffoldEmpty() { + return contentResource.getScaffold($routeParams.id, $routeParams.doctype); + } + function scaffoldBlueprint() { + return contentResource.getBlueprintScaffold($routeParams.blueprintId); + } + $scope.contentId = $routeParams.id; $scope.saveMethod = contentResource.save; $scope.getMethod = contentResource.getById; + $scope.getScaffoldMethod = $routeParams.blueprintId ? scaffoldBlueprint : scaffoldEmpty; $scope.page = $routeParams.page; - $scope.createOptions = null; - if ($routeParams.create && $routeParams.doctype) { - $scope.createOptions = { - docType: $routeParams.doctype - } - } + $scope.isNew = $routeParams.create; } angular.module("umbraco").controller("Umbraco.Editors.Content.EditController", ContentEditController); diff --git a/src/Umbraco.Web.UI.Client/src/views/content/edit.html b/src/Umbraco.Web.UI.Client/src/views/content/edit.html index bd764628b4..2ad4534115 100644 --- a/src/Umbraco.Web.UI.Client/src/views/content/edit.html +++ b/src/Umbraco.Web.UI.Client/src/views/content/edit.html @@ -4,6 +4,8 @@ page="page" save-method="saveMethod" get-method="getMethod" - tree-alias="content"> + get-scaffold-method="getScaffoldMethod" + tree-alias="content" + is-new="isNew"> diff --git a/src/Umbraco.Web/Editors/ContentController.cs b/src/Umbraco.Web/Editors/ContentController.cs index 9b0e0c2139..5d84400596 100644 --- a/src/Umbraco.Web/Editors/ContentController.cs +++ b/src/Umbraco.Web/Editors/ContentController.cs @@ -179,6 +179,26 @@ namespace Umbraco.Web.Editors return mapped; } + [OutgoingEditorModelEvent] + public ContentItemDisplay GetEmpty(int blueprintId) + { + var blueprint = Services.ContentService.GetBlueprintById(blueprintId); + if (blueprint == null) + { + throw new HttpResponseException(HttpStatusCode.NotFound); + } + + blueprint.Id = 0; + blueprint.Name = string.Empty; + + var mapped = Mapper.Map(blueprint); + + //remove this tab if it exists: umbContainerView + var containerTab = mapped.Tabs.FirstOrDefault(x => x.Alias == Constants.Conventions.PropertyGroups.ListViewGroupName); + mapped.Tabs = mapped.Tabs.Except(new[] { containerTab }); + return mapped; + } + /// /// Gets the Url for a given node ID ///