();
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.controller.js
index 67bea3c07b..2e19a102a2 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.controller.js
@@ -1,7 +1,7 @@
(function () {
"use strict";
- function LanguagePickerController($scope, languageResource, localizationService, webhooksResource) {
+ function EventPickerController($scope, languageResource, localizationService, webhooksResource) {
var vm = this;
@@ -38,10 +38,10 @@
.then((data) => {
let selectedEvents = [];
data.forEach(function (event) {
- let eventObject = { name: event.eventName, selected: false}
- vm.events.push(eventObject);
- if($scope.model.selectedEvents && $scope.model.selectedEvents.includes(eventObject.name)){
- selectedEvents.push(eventObject);
+ event.selected = false;
+ vm.events.push(event);
+ if($scope.model.selectedEvents && $scope.model.selectedEvents.some(x => x.alias === event.alias)){
+ selectedEvents.push(event);
}
});
@@ -55,19 +55,15 @@
if (!event.selected) {
event.selected = true;
$scope.model.selection.push(event);
+
// Only filter if we have not selected an item yet.
if($scope.model.selection.length === 1){
- if(event.name.toLowerCase().includes("content")){
- vm.events = vm.events.filter(event => event.name.toLowerCase().includes("content"));
- }
- else if (event.name.toLowerCase().includes("media")){
- vm.events = vm.events.filter(event => event.name.toLowerCase().includes("media"));
- }
+ vm.events = vm.events.filter(x => x.eventType === event.eventType);
}
- } else {
-
+ }
+ else {
$scope.model.selection.forEach(function (selectedEvent, index) {
- if (selectedEvent.name === event.name) {
+ if (selectedEvent.alias === event.alias) {
event.selected = false;
$scope.model.selection.splice(index, 1);
}
@@ -75,6 +71,7 @@
if($scope.model.selection.length === 0){
vm.events = [];
+ $scope.model.selectedEvents = [];
getAllEvents();
}
}
@@ -82,7 +79,6 @@
function submit(model) {
if ($scope.model.submit) {
- $scope.model.selection = $scope.model.selection.map((item) => item.name)
$scope.model.submit(model);
}
}
@@ -97,6 +93,6 @@
}
- angular.module("umbraco").controller("Umbraco.Editors.EventPickerController", LanguagePickerController);
+ angular.module("umbraco").controller("Umbraco.Editors.EventPickerController", EventPickerController);
})();
diff --git a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.html b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.html
index d4033784ed..e65a5f767f 100644
--- a/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.html
+++ b/src/Umbraco.Web.UI.Client/src/views/common/infiniteeditors/eventpicker/eventpicker.html
@@ -20,7 +20,7 @@
- {{ event.name }}
+ {{ event.eventName }}
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/logs.html b/src/Umbraco.Web.UI.Client/src/views/webhooks/logs.html
index 6c13daf764..f2db3096af 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/logs.html
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/logs.html
@@ -22,7 +22,7 @@
| {{ log.webhookKey }} |
{{ log.date }} |
{{ log.url }} |
- {{ log.eventName }} |
+ {{ log.eventAlias }} |
{{ log.retryCount }} |
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/details.html b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/details.html
index 3878c1ae87..d66c1463e7 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/details.html
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/details.html
@@ -22,7 +22,7 @@
Event
-
{{model.log.eventName}}
+
{{model.log.eventAlias}}
Retry count
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.controller.js b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.controller.js
index 9df465f738..6f8a17ceb8 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.controller.js
@@ -1,7 +1,7 @@
-(function () {
+(function () {
"use strict";
- function EditController($scope, editorService, contentTypeResource, mediaTypeResource) {
+ function EditController($scope, editorService, contentTypeResource, mediaTypeResource, memberTypeResource) {
const vm = this;
@@ -29,7 +29,7 @@
}
function openContentTypePicker() {
- const isContent = $scope.model.webhook ? $scope.model.webhook.events[0].toLowerCase().includes("content") : null;
+ const eventType = $scope.model.webhook ? $scope.model.webhook.events[0].eventType.toLowerCase() : null;
const editor = {
multiPicker: true,
@@ -39,7 +39,7 @@
return item.nodeType === "container"; // || item.metaData.isElement || !!_.findWhere(vm.itemTypes, { udi: item.udi });
},
submit(model) {
- getEntities(model.selection, isContent);
+ getEntities(model.selection, eventType);
$scope.model.webhook.contentTypeKeys = model.selection.map(item => item.key);
editorService.close();
},
@@ -48,9 +48,7 @@
}
};
- const itemType = isContent ? "content" : "media";
-
- switch (itemType) {
+ switch (eventType.toLowerCase()) {
case "content":
editorService.contentTypePicker(editor);
break;
@@ -82,8 +80,22 @@
});
}
- function getEntities(selection, isContent) {
- const resource = isContent ? contentTypeResource : mediaTypeResource;
+ function getEntities(selection, eventType) {
+ let resource;
+ switch (eventType.toCamelCase()) {
+ case "content":
+ resource = contentTypeResource;
+ break;
+ case "media":
+ resource = mediaTypeResource;
+ break;
+ case "member":
+ resource = memberTypeResource;
+ break;
+ default:
+ return;
+ }
+
$scope.model.contentTypes = [];
selection.forEach(entity => {
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.html b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.html
index cf55320f2f..4bc61fec98 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.html
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/edit.html
@@ -42,9 +42,9 @@
{
- vm.events = data.map(item => item.eventName);
+ vm.events = data;
});
}
function resolveEventNames(webhook) {
webhook.events.forEach(event => {
if (!vm.webhookEvents[webhook.key]) {
- vm.webhookEvents[webhook.key] = event;
+ vm.webhookEvents[webhook.key] = event.eventName;
} else {
- vm.webhookEvents[webhook.key] += ", " + event;
+ vm.webhookEvents[webhook.key] += ", " + event.eventName;
}
});
}
+ function determineResource(resourceType){
+ let resource;
+ switch (resourceType) {
+ case "content":
+ resource = contentTypeResource;
+ break;
+ case "media":
+ resource = mediaTypeResource;
+ break;
+ case "member":
+ resource = memberTypeResource;
+ break;
+ default:
+ return;
+ }
+
+ return resource;
+ }
+
function getEntities(webhook) {
- const isContent = webhook.events[0].toLowerCase().includes("content");
- const resource = isContent ? contentTypeResource : mediaTypeResource;
+ let resource = determineResource(webhook.events[0].eventType.toLowerCase());
let entities = [];
webhook.contentTypeKeys.forEach(key => {
@@ -68,8 +86,7 @@
}
function resolveTypeNames(webhook) {
- const isContent = webhook.events[0].toLowerCase().includes("content");
- const resource = isContent ? contentTypeResource : mediaTypeResource;
+ let resource = determineResource(webhook.events[0].eventType.toLowerCase());
if (vm.webHooksContentTypes[webhook.key]){
delete vm.webHooksContentTypes[webhook.key];
@@ -154,7 +171,7 @@
}
function loadWebhooks(){
- webhooksResource
+ return webhooksResource
.getAll()
.then(result => {
vm.webhooks = result;
diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookLogServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookLogServiceTests.cs
index af75becd1c..b4959de8e9 100644
--- a/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookLogServiceTests.cs
+++ b/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookLogServiceTests.cs
@@ -21,7 +21,7 @@ public class WebhookLogServiceTests : UmbracoIntegrationTest
var createdWebhookLog = await WebhookLogService.CreateAsync(new WebhookLog
{
Date = DateTime.UtcNow,
- EventName = Constants.WebhookEvents.ContentPublish,
+ EventAlias = Constants.WebhookEvents.Aliases.ContentPublish,
RequestBody = "Test Request Body",
ResponseBody = "Test response body",
StatusCode = "200",
@@ -39,7 +39,7 @@ public class WebhookLogServiceTests : UmbracoIntegrationTest
Assert.AreEqual(1, webhookLogsPaged.Items.Count());
var webHookLog = webhookLogsPaged.Items.First();
Assert.AreEqual(createdWebhookLog.Date.ToString(CultureInfo.InvariantCulture), webHookLog.Date.ToString(CultureInfo.InvariantCulture));
- Assert.AreEqual(createdWebhookLog.EventName, webHookLog.EventName);
+ Assert.AreEqual(createdWebhookLog.EventAlias, webHookLog.EventAlias);
Assert.AreEqual(createdWebhookLog.RequestBody, webHookLog.RequestBody);
Assert.AreEqual(createdWebhookLog.ResponseBody, webHookLog.ResponseBody);
Assert.AreEqual(createdWebhookLog.StatusCode, webHookLog.StatusCode);
diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookServiceTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookServiceTests.cs
index 6f6da74485..609388dfaf 100644
--- a/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookServiceTests.cs
+++ b/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/WebhookServiceTests.cs
@@ -14,11 +14,11 @@ public class WebhookServiceTests : UmbracoIntegrationTest
private IWebHookService WebhookService => GetRequiredService();
[Test]
- [TestCase("https://example.com", Constants.WebhookEvents.ContentPublish, "00000000-0000-0000-0000-010000000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.ContentDelete, "00000000-0000-0000-0000-000200000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.ContentUnpublish, "00000000-0000-0000-0000-300000000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.MediaDelete, "00000000-0000-0000-0000-000004000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.MediaSave, "00000000-0000-0000-0000-000000500000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.ContentPublish, "00000000-0000-0000-0000-010000000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.ContentDelete, "00000000-0000-0000-0000-000200000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.ContentUnpublish, "00000000-0000-0000-0000-300000000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.MediaDelete, "00000000-0000-0000-0000-000004000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.MediaSave, "00000000-0000-0000-0000-000000500000")]
public async Task Can_Create_And_Get(string url, string webhookEvent, Guid key)
{
var createdWebhook = await WebhookService.CreateAsync(new Webhook(url, true, new[] { key }, new[] { webhookEvent }));
@@ -37,9 +37,9 @@ public class WebhookServiceTests : UmbracoIntegrationTest
[Test]
public async Task Can_Get_All()
{
- var createdWebhookOne = await WebhookService.CreateAsync(new Webhook("https://example.com", true, new[] { Guid.NewGuid() }, new[] { Constants.WebhookEvents.ContentPublish }));
- var createdWebhookTwo = await WebhookService.CreateAsync(new Webhook("https://example.com", true, new[] { Guid.NewGuid() }, new[] { Constants.WebhookEvents.ContentDelete }));
- var createdWebhookThree = await WebhookService.CreateAsync(new Webhook("https://example.com", true, new[] { Guid.NewGuid() }, new[] { Constants.WebhookEvents.ContentUnpublish }));
+ var createdWebhookOne = await WebhookService.CreateAsync(new Webhook("https://example.com", true, new[] { Guid.NewGuid() }, new[] { Constants.WebhookEvents.Aliases.ContentPublish }));
+ var createdWebhookTwo = await WebhookService.CreateAsync(new Webhook("https://example.com", true, new[] { Guid.NewGuid() }, new[] { Constants.WebhookEvents.Aliases.ContentDelete }));
+ var createdWebhookThree = await WebhookService.CreateAsync(new Webhook("https://example.com", true, new[] { Guid.NewGuid() }, new[] { Constants.WebhookEvents.Aliases.ContentUnpublish }));
var webhooks = await WebhookService.GetAllAsync(0, int.MaxValue);
Assert.Multiple(() =>
@@ -52,11 +52,11 @@ public class WebhookServiceTests : UmbracoIntegrationTest
}
[Test]
- [TestCase("https://example.com", Constants.WebhookEvents.ContentPublish, "00000000-0000-0000-0000-010000000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.ContentDelete, "00000000-0000-0000-0000-000200000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.ContentUnpublish, "00000000-0000-0000-0000-300000000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.MediaDelete, "00000000-0000-0000-0000-000004000000")]
- [TestCase("https://example.com", Constants.WebhookEvents.MediaSave, "00000000-0000-0000-0000-000000500000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.ContentPublish, "00000000-0000-0000-0000-010000000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.ContentDelete, "00000000-0000-0000-0000-000200000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.ContentUnpublish, "00000000-0000-0000-0000-300000000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.MediaDelete, "00000000-0000-0000-0000-000004000000")]
+ [TestCase("https://example.com", Constants.WebhookEvents.Aliases.MediaSave, "00000000-0000-0000-0000-000000500000")]
public async Task Can_Delete(string url, string webhookEvent, Guid key)
{
var createdWebhook = await WebhookService.CreateAsync(new Webhook(url, true, new[] { key }, new[] { webhookEvent }));
@@ -71,7 +71,7 @@ public class WebhookServiceTests : UmbracoIntegrationTest
[Test]
public async Task Can_Create_With_No_EntityKeys()
{
- var createdWebhook = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.ContentPublish }));
+ var createdWebhook = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.Aliases.ContentPublish }));
var webhook = await WebhookService.GetAsync(createdWebhook.Key);
Assert.IsNotNull(webhook);
@@ -81,24 +81,24 @@ public class WebhookServiceTests : UmbracoIntegrationTest
[Test]
public async Task Can_Update()
{
- var createdWebhook = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.ContentPublish }));
- createdWebhook.Events = new[] { Constants.WebhookEvents.ContentDelete };
+ var createdWebhook = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.Aliases.ContentPublish }));
+ createdWebhook.Events = new[] { Constants.WebhookEvents.Aliases.ContentDelete };
await WebhookService.UpdateAsync(createdWebhook);
var updatedWebhook = await WebhookService.GetAsync(createdWebhook.Key);
Assert.IsNotNull(updatedWebhook);
Assert.AreEqual(1, updatedWebhook.Events.Length);
- Assert.IsTrue(updatedWebhook.Events.Contains(Constants.WebhookEvents.ContentDelete));
+ Assert.IsTrue(updatedWebhook.Events.Contains(Constants.WebhookEvents.Aliases.ContentDelete));
}
[Test]
public async Task Can_Get_By_EventName()
{
- var webhook1 = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.ContentPublish }));
- var webhook2 = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.ContentUnpublish }));
- var webhook3 = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.ContentUnpublish }));
+ var webhook1 = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.Aliases.ContentPublish }));
+ var webhook2 = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.Aliases.ContentUnpublish }));
+ var webhook3 = await WebhookService.CreateAsync(new Webhook("https://example.com", events: new[] { Constants.WebhookEvents.Aliases.ContentUnpublish }));
- var result = await WebhookService.GetByEventNameAsync(Constants.WebhookEvents.ContentUnpublish);
+ var result = await WebhookService.GetByAliasAsync(Constants.WebhookEvents.Aliases.ContentUnpublish);
Assert.IsNotEmpty(result);
Assert.AreEqual(2, result.Count());