Gets creating/deleting media type folders working.

This commit is contained in:
Shannon
2015-11-11 13:25:02 +01:00
parent b4755fc5c4
commit 4f07033d58
8 changed files with 96 additions and 43 deletions

View File

@@ -15,49 +15,49 @@ namespace Umbraco.Core.Models
/// <summary>
/// Content Item Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentItemType)]
[UmbracoObjectType(Constants.ObjectTypes.ContentItemType)]
[FriendlyName("Content Item Type")]
ContentItemType,
/// <summary>
/// Root
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.SystemRoot)]
[UmbracoObjectType(Constants.ObjectTypes.SystemRoot)]
[FriendlyName("Root")]
ROOT,
/// <summary>
/// Document
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Document, typeof(IContent))]
[UmbracoObjectType(Constants.ObjectTypes.Document, typeof(IContent))]
[FriendlyName("Document")]
Document,
/// <summary>
/// Media
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Media, typeof(IMedia))]
[UmbracoObjectType(Constants.ObjectTypes.Media, typeof(IMedia))]
[FriendlyName("Media")]
Media,
/// <summary>
/// Member Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.MemberType, typeof(IMemberType))]
[UmbracoObjectType(Constants.ObjectTypes.MemberType, typeof(IMemberType))]
[FriendlyName("Member Type")]
MemberType,
/// <summary>
/// Template
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Template, typeof(ITemplate))]
[UmbracoObjectType(Constants.ObjectTypes.Template, typeof(ITemplate))]
[FriendlyName("Template")]
Template,
/// <summary>
/// Member Group
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.MemberGroup)]
[UmbracoObjectType(Constants.ObjectTypes.MemberGroup)]
[FriendlyName("Member Group")]
MemberGroup,
@@ -65,57 +65,73 @@ namespace Umbraco.Core.Models
/// <summary>
/// Content Item
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentItem)]
[UmbracoObjectType(Constants.ObjectTypes.ContentItem)]
[FriendlyName("Content Item")]
ContentItem,
/// <summary>
/// "Media Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.MediaType, typeof(IMediaType))]
[UmbracoObjectType(Constants.ObjectTypes.MediaType, typeof(IMediaType))]
[FriendlyName("Media Type")]
MediaType,
/// <summary>
/// Document Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.DocumentType, typeof(IContentType))]
[UmbracoObjectType(Constants.ObjectTypes.DocumentType, typeof(IContentType))]
[FriendlyName("Document Type")]
DocumentType,
/// <summary>
/// Recycle Bin
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.ContentRecycleBin)]
[UmbracoObjectType(Constants.ObjectTypes.ContentRecycleBin)]
[FriendlyName("Recycle Bin")]
RecycleBin,
/// <summary>
/// Stylesheet
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Stylesheet)]
[UmbracoObjectType(Constants.ObjectTypes.Stylesheet)]
[FriendlyName("Stylesheet")]
Stylesheet,
/// <summary>
/// Member
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.Member, typeof(IMember))]
[UmbracoObjectType(Constants.ObjectTypes.Member, typeof(IMember))]
[FriendlyName("Member")]
Member,
/// <summary>
/// Data Type
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.DataType, typeof(IDataTypeDefinition))]
[UmbracoObjectType(Constants.ObjectTypes.DataType, typeof(IDataTypeDefinition))]
[FriendlyName("Data Type")]
DataType,
/// <summary>
/// Entity Container
/// Document type container
/// </summary>
[UmbracoObjectTypeAttribute(Constants.ObjectTypes.DocumentTypeContainer)]
[UmbracoObjectType(Constants.ObjectTypes.DocumentTypeContainer)]
[FriendlyName("Document Type Container")]
DocumentTypeContainer
DocumentTypeContainer,
/// <summary>
/// Media type container
/// </summary>
[UmbracoObjectType(Constants.ObjectTypes.MediaTypeContainer)]
[FriendlyName("Media Type Container")]
MediaTypeContainer,
/// <summary>
/// Media type container
/// </summary>
[UmbracoObjectType(Constants.ObjectTypes.MemberTypeContainer)]
[FriendlyName("Member Type Container")]
MemberTypeContainer
}
}

View File

@@ -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);
}

View File

@@ -3,7 +3,19 @@
<div class="umb-pane" ng-if="!model.creatingFolder">
<h5><localize key="create_createUnder">Create a page under</localize> {{currentNode.name}}</h5>
<ul class="umb-actions umb-actions-child">
<ul class="umb-actions umb-actions-child">
<li>
<a href="" ng-click="createMediaType()">
<i class="large icon-item-arrangement"></i>
<span class="menu-label">
<localize key="general_new">New</localize>&nbsp;
<localize key="content_mediatype">Media type</localize>
</span>
</a>
</li>
<li>
<a href="" ng-click="showCreateFolder()">
@@ -14,24 +26,12 @@
</span>
</a>
</li>
<li>
<a href="" ng-click="createMediaType()">
<i class="large icon-item-arrangement"></i>
<span class="menu-label">
<localize key="general_new">New</localize>&nbsp;
<localize key="content_mediaType">Media type</localize>
</span>
</a>
</li>
</ul>
</div>
<div class="umb-pane" ng-if="model.creatingFolder">
<form novalidate name="createFolderForm"
ng-submit="createFolder()"
ng-submit="createContainer()"
val-form-manager>
<umb-control-group label="Enter a folder name" hide-label="false">

View File

@@ -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

View File

@@ -102,6 +102,29 @@ namespace Umbraco.Web.Editors
.Select(Mapper.Map<IMediaType, ContentTypeBasic>);
}
/// <summary>
/// Deletes a document type container wth a given ID
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[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<IMediaType, ContentTypeCompositionDisplay>(

View File

@@ -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<ActionNew>(Services.TextService.Localize(string.Format("actions/{0}", ActionNew.Instance.Alias)));
if (container.HasChildren() == false)
{
//can delete doc type

View File

@@ -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<string>("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

View File

@@ -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)