diff --git a/src/Umbraco.Core/Models/UmbracoObjectTypes.cs b/src/Umbraco.Core/Models/UmbracoObjectTypes.cs index 8f9acbd057..3c159555e1 100644 --- a/src/Umbraco.Core/Models/UmbracoObjectTypes.cs +++ b/src/Umbraco.Core/Models/UmbracoObjectTypes.cs @@ -15,49 +15,49 @@ namespace Umbraco.Core.Models /// /// Content Item Type /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentItemType)] + [UmbracoObjectType(Constants.ObjectTypes.ContentItemType)] [FriendlyName("Content Item Type")] ContentItemType, /// /// Root /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.SystemRoot)] + [UmbracoObjectType(Constants.ObjectTypes.SystemRoot)] [FriendlyName("Root")] ROOT, /// /// Document /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.Document, typeof(IContent))] + [UmbracoObjectType(Constants.ObjectTypes.Document, typeof(IContent))] [FriendlyName("Document")] Document, /// /// Media /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.Media, typeof(IMedia))] + [UmbracoObjectType(Constants.ObjectTypes.Media, typeof(IMedia))] [FriendlyName("Media")] Media, /// /// Member Type /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.MemberType, typeof(IMemberType))] + [UmbracoObjectType(Constants.ObjectTypes.MemberType, typeof(IMemberType))] [FriendlyName("Member Type")] MemberType, /// /// Template /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.Template, typeof(ITemplate))] + [UmbracoObjectType(Constants.ObjectTypes.Template, typeof(ITemplate))] [FriendlyName("Template")] Template, /// /// Member Group /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.MemberGroup)] + [UmbracoObjectType(Constants.ObjectTypes.MemberGroup)] [FriendlyName("Member Group")] MemberGroup, @@ -65,57 +65,73 @@ namespace Umbraco.Core.Models /// /// Content Item /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentItem)] + [UmbracoObjectType(Constants.ObjectTypes.ContentItem)] [FriendlyName("Content Item")] ContentItem, /// /// "Media Type /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.MediaType, typeof(IMediaType))] + [UmbracoObjectType(Constants.ObjectTypes.MediaType, typeof(IMediaType))] [FriendlyName("Media Type")] MediaType, /// /// Document Type /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.DocumentType, typeof(IContentType))] + [UmbracoObjectType(Constants.ObjectTypes.DocumentType, typeof(IContentType))] [FriendlyName("Document Type")] DocumentType, /// /// Recycle Bin /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentRecycleBin)] + [UmbracoObjectType(Constants.ObjectTypes.ContentRecycleBin)] [FriendlyName("Recycle Bin")] RecycleBin, /// /// Stylesheet /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.Stylesheet)] + [UmbracoObjectType(Constants.ObjectTypes.Stylesheet)] [FriendlyName("Stylesheet")] Stylesheet, /// /// Member /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.Member, typeof(IMember))] + [UmbracoObjectType(Constants.ObjectTypes.Member, typeof(IMember))] [FriendlyName("Member")] Member, /// /// Data Type /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.DataType, typeof(IDataTypeDefinition))] + [UmbracoObjectType(Constants.ObjectTypes.DataType, typeof(IDataTypeDefinition))] [FriendlyName("Data Type")] DataType, /// - /// Entity Container + /// Document type container /// - [UmbracoObjectTypeAttribute(Constants.ObjectTypes.DocumentTypeContainer)] + [UmbracoObjectType(Constants.ObjectTypes.DocumentTypeContainer)] [FriendlyName("Document Type Container")] - DocumentTypeContainer + DocumentTypeContainer, + + /// + /// Media type container + /// + [UmbracoObjectType(Constants.ObjectTypes.MediaTypeContainer)] + [FriendlyName("Media Type Container")] + MediaTypeContainer, + + /// + /// Media type container + /// + [UmbracoObjectType(Constants.ObjectTypes.MemberTypeContainer)] + [FriendlyName("Member Type Container")] + MemberTypeContainer + + } } \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/mediatype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/mediatype.resource.js index d1c2f0888b..d483777250 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/mediatype.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/mediatype.resource.js @@ -79,6 +79,17 @@ function mediaTypeResource($q, $http, umbRequestHelper, umbDataFormatter) { 'Failed to retrieve content type'); }, + deleteContainerById: function (id) { + + return umbRequestHelper.resourcePromise( + $http.post( + umbRequestHelper.getApiUrl( + "mediaTypeApiBaseUrl", + "DeleteContainer", + [{ id: id }])), + 'Failed to delete content type contaier'); + }, + save: function (contentType) { var saveModel = umbDataFormatter.formatContentTypePostData(contentType); @@ -94,7 +105,7 @@ function mediaTypeResource($q, $http, umbRequestHelper, umbDataFormatter) { $http.post( umbRequestHelper.getApiUrl( "mediaTypeApiBaseUrl", - "PostCreateFolder", + "PostCreateContainer", { parentId: parentId, name: name })), 'Failed to create a folder under parent id ' + parentId); } diff --git a/src/Umbraco.Web.UI.Client/src/views/mediatypes/create.html b/src/Umbraco.Web.UI.Client/src/views/mediatypes/create.html index dfef9e315a..f0b526f2e4 100644 --- a/src/Umbraco.Web.UI.Client/src/views/mediatypes/create.html +++ b/src/Umbraco.Web.UI.Client/src/views/mediatypes/create.html @@ -3,7 +3,19 @@
Create a page under {{currentNode.name}}
-
diff --git a/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js b/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js index f8cf19a6ac..785550684b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/mediatypes/delete.controller.js @@ -6,7 +6,7 @@ * @description * The controller for the media type delete dialog */ -function MediaTypesDeleteController($scope, dataTypeResource, mediaTypeResource, contentTypeResource, treeService, navigationService) { +function MediaTypesDeleteController($scope, dataTypeResource, mediaTypeResource, treeService, navigationService) { $scope.performDelete = function() { @@ -29,7 +29,7 @@ function MediaTypesDeleteController($scope, dataTypeResource, mediaTypeResource, //mark it for deletion (used in the UI) $scope.currentNode.loading = true; - contentTypeResource.deleteContainerById($scope.currentNode.id).then(function () { + mediaTypeResource.deleteContainerById($scope.currentNode.id).then(function () { $scope.currentNode.loading = false; //get the root node before we remove it diff --git a/src/Umbraco.Web/Editors/MediaTypeController.cs b/src/Umbraco.Web/Editors/MediaTypeController.cs index fbdaa77e5f..9a8a2214d4 100644 --- a/src/Umbraco.Web/Editors/MediaTypeController.cs +++ b/src/Umbraco.Web/Editors/MediaTypeController.cs @@ -102,6 +102,29 @@ namespace Umbraco.Web.Editors .Select(Mapper.Map); } + /// + /// Deletes a document type container wth a given ID + /// + /// + /// + [HttpDelete] + [HttpPost] + public HttpResponseMessage DeleteContainer(int id) + { + Services.ContentTypeService.DeleteMediaTypeFolder(id, Security.CurrentUser.Id); + + return Request.CreateResponse(HttpStatusCode.OK); + } + + public HttpResponseMessage PostCreateContainer(int parentId, string name) + { + var result = Services.ContentTypeService.CreateMediaTypeFolder(parentId, name, Security.CurrentUser.Id); + + return result + ? Request.CreateResponse(HttpStatusCode.OK, result.Result) //return the id + : Request.CreateNotificationValidationErrorResponse(result.Exception.Message); + } + public ContentTypeCompositionDisplay PostSave(ContentTypeSave contentTypeSave) { var savedCt = PerformPostSave( diff --git a/src/Umbraco.Web/Trees/ContentTypeTreeController.cs b/src/Umbraco.Web/Trees/ContentTypeTreeController.cs index 9a048471b8..159bc76d0e 100644 --- a/src/Umbraco.Web/Trees/ContentTypeTreeController.cs +++ b/src/Umbraco.Web/Trees/ContentTypeTreeController.cs @@ -17,8 +17,9 @@ namespace Umbraco.Web.Trees { [UmbracoTreeAuthorize(Constants.Trees.DocumentTypes)] [Tree(Constants.Applications.Settings, Constants.Trees.DocumentTypes, null, sortOrder: 6)] - [Umbraco.Web.Mvc.PluginController("UmbracoTrees")] + [Mvc.PluginController("UmbracoTrees")] [CoreTree] + [LegacyBaseTree(typeof(loadNodeTypes))] public class ContentTypeTreeController : TreeController { protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings) @@ -83,7 +84,6 @@ namespace Umbraco.Web.Trees // root actions menu.Items.Add(Services.TextService.Localize(string.Format("actions/{0}", ActionNew.Instance.Alias))); - if (container.HasChildren() == false) { //can delete doc type diff --git a/src/Umbraco.Web/Trees/MediaTypeTreeController.cs b/src/Umbraco.Web/Trees/MediaTypeTreeController.cs index 1ee5db6458..68605f3e75 100644 --- a/src/Umbraco.Web/Trees/MediaTypeTreeController.cs +++ b/src/Umbraco.Web/Trees/MediaTypeTreeController.cs @@ -17,8 +17,9 @@ namespace Umbraco.Web.Trees { [UmbracoTreeAuthorize(Constants.Trees.MediaTypes)] [Tree(Constants.Applications.Settings, Constants.Trees.MediaTypes, null, sortOrder:5)] - [Umbraco.Web.Mvc.PluginController("UmbracoTrees")] + [Mvc.PluginController("UmbracoTrees")] [CoreTree] + [LegacyBaseTree(typeof(loadMediaTypes))] public class MediaTypeTreeController : TreeController { protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings) @@ -28,15 +29,16 @@ namespace Umbraco.Web.Trees var nodes = new TreeNodeCollection(); - //TODO: MediaTypeContainers nodes.AddRange( - Services.EntityService.GetChildren(intId.Result, UmbracoObjectTypes.DocumentTypeContainer) + Services.EntityService.GetChildren(intId.Result, UmbracoObjectTypes.MediaTypeContainer) .OrderBy(entity => entity.Name) .Select(dt => { - var node = CreateTreeNode(dt.Id.ToString(), id, queryStrings, dt.Name, "icon-folder", dt.HasChildren(), - queryStrings.GetValue("application") + TreeAlias.EnsureStartsWith('/') + "/list/" + dt.Id); + var node = CreateTreeNode(dt.Id.ToString(), id, queryStrings, dt.Name, "icon-folder", dt.HasChildren(), ""); node.Path = dt.Path; + node.NodeType = "container"; + //TODO: This isn't the best way to ensure a noop process for clicking a node but it works for now. + node.AdditionalData["jsClickCallback"] = "javascript:void(0);"; return node; })); @@ -71,7 +73,7 @@ namespace Umbraco.Web.Trees } else { - var container = Services.EntityService.Get(int.Parse(id), UmbracoObjectTypes.DocumentTypeContainer); + var container = Services.EntityService.Get(int.Parse(id), UmbracoObjectTypes.MediaTypeContainer); if (container != null) { //set the default to create diff --git a/src/Umbraco.Web/Trees/MemberTypeTreeController.cs b/src/Umbraco.Web/Trees/MemberTypeTreeController.cs index a3422f367a..d739c2a661 100644 --- a/src/Umbraco.Web/Trees/MemberTypeTreeController.cs +++ b/src/Umbraco.Web/Trees/MemberTypeTreeController.cs @@ -14,8 +14,9 @@ namespace Umbraco.Web.Trees { [UmbracoTreeAuthorize(Constants.Trees.MemberTypes)] [Tree(Constants.Applications.Members, Constants.Trees.MemberTypes, null, sortOrder:2 )] - [Umbraco.Web.Mvc.PluginController("UmbracoTrees")] + [Mvc.PluginController("UmbracoTrees")] [CoreTree] + [LegacyBaseTree(typeof(loadMemberTypes))] public class MemberTypeTreeController : TreeController { protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection queryStrings)