diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/relationtype.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/relationtype.resource.js
index 3112d7378b..4035ce0994 100644
--- a/src/Umbraco.Web.UI.Client/src/common/resources/relationtype.resource.js
+++ b/src/Umbraco.Web.UI.Client/src/common/resources/relationtype.resource.js
@@ -77,6 +77,26 @@ function relationTypeResource($q, $http, umbRequestHelper, umbDataFormatter) {
);
},
+ /**
+ * @ngdoc method
+ * @name umbraco.resources.relationTypeResource#create
+ * @methodof umbraco.resources.relationTypeResource
+ *
+ * @description
+ * Creates a new relation type.
+ *
+ * @param {Object} relationType The relation type object to create.
+ * @returns {Promise} A resourcePromise object.
+ */
+ create: function (relationType) {
+ var createModel = umbDataFormatter.formatRelationTypePostData(relationType);
+
+ return umbRequestHelper.resourcePromise(
+ $http.post(umbRequestHelper.getApiUrl("relationTypeApiBaseUrl", "PostCreate"), createModel),
+ "Failed to create new realtion"
+ );
+ },
+
deleteById: function (id) {
}
diff --git a/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js b/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js
index d7c071f039..7f520a1fe8 100644
--- a/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js
+++ b/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js
@@ -441,7 +441,9 @@
name: relationType.name,
alias: relationType.alias,
key : relationType.key,
- isBidirectional: relationType.isBidirectional
+ isBidirectional: relationType.isBidirectional,
+ parentObjectType: relationType.parentObjectType,
+ childObjectType: relationType.childObjectType
};
return saveModel;
diff --git a/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.controller.js b/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.controller.js
index b7389c0e56..073099994b 100644
--- a/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.controller.js
@@ -1,4 +1,4 @@
-function RelationTypeCreateController($scope, relationTypeResource, navigationService, formHelper, appState) {
+function RelationTypeCreateController($scope, $location, relationTypeResource, navigationService, formHelper, appState, notificationsService) {
var vm = this;
vm.relationType = {};
vm.objectTypes = {};
diff --git a/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.html b/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.html
index 1d07c8e1b4..1af1497953 100644
--- a/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.html
+++ b/src/Umbraco.Web.UI.Client/src/views/relationtypes/create.html
@@ -27,20 +27,20 @@
diff --git a/src/Umbraco.Web/Editors/RelationTypeController.cs b/src/Umbraco.Web/Editors/RelationTypeController.cs
index d490e538a9..3751dd5bcf 100644
--- a/src/Umbraco.Web/Editors/RelationTypeController.cs
+++ b/src/Umbraco.Web/Editors/RelationTypeController.cs
@@ -1,11 +1,10 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Net;
-using System.Text;
-using System.Threading.Tasks;
+using System.Net.Http;
using System.Web.Http;
using AutoMapper;
+using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Web.Models.ContentEditing;
using Umbraco.Web.Mvc;
@@ -69,6 +68,37 @@ namespace Umbraco.Web.Editors
return objectTypes;
}
+ ///
+ /// Creates a new relation type.
+ ///
+ /// The relation type to create.
+ /// A containing the persisted relation type's ID.
+ public HttpResponseMessage PostCreate(RelationTypeSave relationType)
+ {
+ var relationTypePersisted = new Core.Models.RelationType(relationType.ChildObjectType, relationType.ParentObjectType, relationType.Name.ToSafeAlias(true))
+ {
+ Name = relationType.Name,
+ IsBidirectional = relationType.IsBidirectional
+ };
+
+ try
+ {
+ Services.RelationService.Save(relationTypePersisted);
+
+ return Request.CreateResponse(HttpStatusCode.OK, relationTypePersisted.Id);
+ }
+ catch (Exception ex)
+ {
+ Logger.Error(GetType(), ex, "Error creating relation type with {Name}", relationType.Name);
+ return Request.CreateNotificationValidationErrorResponse("Error creating dictionary item");
+ }
+ }
+
+ ///
+ /// Updates an existing relation type.
+ ///
+ /// The relation type to update.
+ /// A display object containing the updated relation type.
public RelationTypeDisplay PostSave(RelationTypeSave relationType)
{
var relationTypePersisted = Services.RelationService.GetRelationTypeById(relationType.Key);
diff --git a/src/Umbraco.Web/Models/ContentEditing/RelationTypeSave.cs b/src/Umbraco.Web/Models/ContentEditing/RelationTypeSave.cs
index df118f37ee..e7e8d6d2ba 100644
--- a/src/Umbraco.Web/Models/ContentEditing/RelationTypeSave.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/RelationTypeSave.cs
@@ -1,4 +1,5 @@
-using System.Runtime.Serialization;
+using System;
+using System.Runtime.Serialization;
namespace Umbraco.Web.Models.ContentEditing
{
@@ -10,5 +11,17 @@ namespace Umbraco.Web.Models.ContentEditing
///
[DataMember(Name = "isBidirectional", IsRequired = true)]
public bool IsBidirectional { get; set; }
+
+ ///
+ /// Gets or sets the parent object type ID.
+ ///
+ [DataMember(Name = "parentObjectType", IsRequired = false)]
+ public Guid ParentObjectType { get; set; }
+
+ ///
+ /// Gets or sets the child object type ID.
+ ///
+ [DataMember(Name = "childObjectType", IsRequired = false)]
+ public Guid ChildObjectType { get; set; }
}
}