From d4a069451f2090d0a71bbfac277368d187addcde Mon Sep 17 00:00:00 2001 From: perploug Date: Tue, 22 Oct 2013 09:46:22 +0200 Subject: [PATCH] Datatype delete dialog --- .../src/common/resources/datatype.resource.js | 33 +++++++++++++++++-- .../datatype/datatype.delete.controller.js | 33 +++++++++++++++++++ .../src/views/datatype/delete.html | 12 +++++++ src/Umbraco.Web/Editors/DataTypeController.cs | 21 ++++++++++++ 4 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/views/datatype/datatype.delete.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/datatype/delete.html diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js index 807042d0e7..7eb04082ee 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/datatype.resource.js @@ -53,10 +53,37 @@ function dataTypeResource($q, $http, umbDataFormatter, umbRequestHelper) { umbRequestHelper.getApiUrl( "dataTypeApiBaseUrl", "GetEmpty")), - 'Failed to retreive data for empty media item type ' + alias); - + 'Failed to retreive data for empty datatype ' + alias); + }, + /** + * @ngdoc method + * @name umbraco.resources.dataTypeResource#deleteById + * @methodOf umbraco.resources.dataTypeResource + * + * @description + * Deletes a content item with a given id + * + * ##usage + *
+         * dataTypeResource.deleteById(1234)
+         *    .then(function() {
+         *        alert('its gone!');
+         *    });
+         * 
+ * + * @param {Int} id id of content item to delete + * @returns {Promise} resourcePromise object. + * + */ + deleteById: function(id) { + return umbRequestHelper.resourcePromise( + $http.delete( + umbRequestHelper.getApiUrl( + "dataTypeApiBaseUrl", + "DeleteById", + [{ id: id }])), + 'Failed to delete item ' + id); }, - /** saves or updates a data type object */ save: function (dataType, preValues, isNew) { diff --git a/src/Umbraco.Web.UI.Client/src/views/datatype/datatype.delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/datatype/datatype.delete.controller.js new file mode 100644 index 0000000000..efd7e540d4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/datatype/datatype.delete.controller.js @@ -0,0 +1,33 @@ +/** + * @ngdoc controller + * @name Umbraco.Editors.ContentDeleteController + * @function + * + * @description + * The controller for deleting content + */ +function DataTypeDeleteController($scope, dataTypeResource, treeService, navigationService) { + + $scope.performDelete = function() { + + //mark it for deletion (used in the UI) + $scope.currentNode.loading = true; + dataTypeResource.deleteById($scope.currentNode.id).then(function () { + $scope.currentNode.loading = false; + + //get the root node before we remove it + var rootNode = treeService.getTreeRoot($scope.currentNode); + + //TODO: Need to sync tree, etc... + treeService.removeNode($scope.currentNode); + navigationService.hideMenu(); + }); + + }; + + $scope.cancel = function() { + navigationService.hideDialog(); + }; +} + +angular.module("umbraco").controller("Umbraco.Editors.DataType.DeleteController", DataTypeDeleteController); diff --git a/src/Umbraco.Web.UI.Client/src/views/datatype/delete.html b/src/Umbraco.Web.UI.Client/src/views/datatype/delete.html new file mode 100644 index 0000000000..cddc1b34ad --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/datatype/delete.html @@ -0,0 +1,12 @@ +
+
+ +

+ Are you sure you want to delete {{currentNode.name}} ? +

+ + + + +
+
diff --git a/src/Umbraco.Web/Editors/DataTypeController.cs b/src/Umbraco.Web/Editors/DataTypeController.cs index 902eb976d7..5dbaa20368 100644 --- a/src/Umbraco.Web/Editors/DataTypeController.cs +++ b/src/Umbraco.Web/Editors/DataTypeController.cs @@ -15,6 +15,7 @@ using Umbraco.Web.WebApi.Binders; using Umbraco.Web.WebApi.Filters; using umbraco; using Constants = Umbraco.Core.Constants; +using System.Net.Http; namespace Umbraco.Web.Editors { @@ -48,6 +49,26 @@ namespace Umbraco.Web.Editors return Mapper.Map(dataType); } + /// + /// Deletes a data type wth a given ID + /// + /// + /// + [HttpDelete] + public HttpResponseMessage DeleteById(int id) + { + var foundType = Services.DataTypeService.GetDataTypeDefinitionById(id); + if (foundType == null) + { + throw new HttpResponseException(HttpStatusCode.NotFound); + } + + + Services.DataTypeService.Delete(foundType, UmbracoUser.Id); + + return Request.CreateResponse(HttpStatusCode.OK); + } + public DataTypeDisplay GetEmpty() { var dt = new DataTypeDefinition(-1, "");