-
+
{{model.webhookLogEntry.response.statusDescription}} ({{model.webhookLogEntry.response.statusCode}})
@@ -17,7 +17,7 @@
{{model.log.url}}
-
Status Code
+
Status code
{{model.log.statusCode}}
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 c25ccaa6ba67..9df465f73815 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,8 +1,10 @@
-(function () {
+(function () {
"use strict";
function EditController($scope, editorService, contentTypeResource, mediaTypeResource) {
- var vm = this;
+
+ const vm = this;
+
vm.clearContentType = clearContentType;
vm.clearEvent = clearEvent;
vm.removeHeader = removeHeader;
@@ -12,9 +14,7 @@
vm.close = close;
vm.submit = submit;
-
- function openEventPicker()
- {
+ function openEventPicker() {
editorService.eventPicker({
title: "Select event",
selectedEvents: $scope.model.webhook.events,
@@ -28,23 +28,39 @@
});
}
- function openContentTypePicker()
- {
+ function openContentTypePicker() {
const isContent = $scope.model.webhook ? $scope.model.webhook.events[0].toLowerCase().includes("content") : null;
- editorService.treePicker({
- section: 'settings',
- treeAlias: isContent ? 'documentTypes' : 'mediaTypes',
- entityType: isContent ? 'DocumentType' : 'MediaType',
+
+ const editor = {
multiPicker: true,
+ filterCssClass: "not-allowed not-published",
+ filter: function (item) {
+ // filter out folders (containers), element types (for content) and already selected items
+ return item.nodeType === "container"; // || item.metaData.isElement || !!_.findWhere(vm.itemTypes, { udi: item.udi });
+ },
submit(model) {
getEntities(model.selection, isContent);
- $scope.model.webhook.contentTypeKeys = model.selection.map((item) => item.key);
+ $scope.model.webhook.contentTypeKeys = model.selection.map(item => item.key);
editorService.close();
},
close() {
editorService.close();
}
- });
+ };
+
+ const itemType = isContent ? "content" : "media";
+
+ switch (itemType) {
+ case "content":
+ editorService.contentTypePicker(editor);
+ break;
+ case "media":
+ editorService.mediaTypePicker(editor);
+ break;
+ case "member":
+ editorService.memberTypePicker(editor);
+ break;
+ }
}
function openCreateHeader() {
@@ -70,29 +86,29 @@
const resource = isContent ? contentTypeResource : mediaTypeResource;
$scope.model.contentTypes = [];
- selection.forEach((entity) => {
+ selection.forEach(entity => {
resource.getById(entity.key)
- .then((data) => {
+ .then(data => {
$scope.model.contentTypes.push(data);
});
});
}
function clearContentType(contentTypeKey) {
- if (Array.isArray($scope.model.webhook.contentTypeKeys)) {
+ if (Utilities.isArray($scope.model.webhook.contentTypeKeys)) {
$scope.model.webhook.contentTypeKeys = $scope.model.webhook.contentTypeKeys.filter(x => x !== contentTypeKey);
}
- if (Array.isArray($scope.model.contentTypes)) {
+ if (Utilities.isArray($scope.model.contentTypes)) {
$scope.model.contentTypes = $scope.model.contentTypes.filter(x => x.key !== contentTypeKey);
}
}
function clearEvent(event) {
- if (Array.isArray($scope.model.webhook.events)) {
+ if (Utilities.isArray($scope.model.webhook.events)) {
$scope.model.webhook.events = $scope.model.webhook.events.filter(x => x !== event);
}
- if (Array.isArray($scope.model.contentTypes)) {
+ if (Utilities.isArray($scope.model.contentTypes)) {
$scope.model.events = $scope.model.events.filter(x => x.key !== event);
}
}
@@ -101,16 +117,13 @@
delete $scope.model.webhook.headers[key];
}
-
- function close()
- {
+ function close() {
if ($scope.model.close) {
$scope.model.close();
}
}
- function submit()
- {
+ function submit() {
if ($scope.model.submit) {
$scope.model.submit($scope.model);
}
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 40e216c79a44..cf55320f2f5f 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
@@ -1,4 +1,4 @@
-
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.controller.js b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.controller.js
index a77a4f5c0065..298cb95bd8fc 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.controller.js
@@ -1,11 +1,15 @@
-(function () {
+(function () {
"use strict";
function HeaderController($scope) {
- var vm = this;
- $scope.headerModel = { key: "", value: "" };
+ const vm = this;
+
vm.submit = submit;
vm.close = close;
+ vm.headers = ["Accept", "Content-Type", "User-Agent", "Content-Length"];
+
+ $scope.headerModel = { key: "", value: "" };
+
function submit () {
if ($scope.headerModel.key && $scope.headerModel.value) {
$scope.model.submit($scope.headerModel);
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.html b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.html
index b9adcb2bf6fe..114eab70c956 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.html
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/overlays/header.html
@@ -1,8 +1,8 @@
-
+
-
+
+ required />
+
-
+
{
vm.page.labels.webhooks = data[0];
vm.page.labels.logs = data[1];
vm.page.navigation = [
{
"name": vm.page.labels.webhooks,
- "icon": "icon-directions-alt",
+ "icon": "icon-webhook",
"view": "views/webhooks/webhooks.html",
"active": webhookUri === 'overview',
"alias": "umbWebhooks",
@@ -53,7 +55,7 @@
}
function setPageName() {
- localizationService.localize("treeHeaders_webhooks").then(function (data) {
+ localizationService.localize("treeHeaders_webhooks").then(data => {
vm.page.name = data;
})
}
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/overview.html b/src/Umbraco.Web.UI.Client/src/views/webhooks/overview.html
index 2576fa1e8b34..981cf09f4486 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/overview.html
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/overview.html
@@ -1,13 +1,14 @@
-
+
-
+
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.controller.js b/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.controller.js
index 5814d6f6dc27..94b1c2174246 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.controller.js
@@ -1,8 +1,9 @@
-(function () {
+(function () {
"use strict";
- function WebhookController($q,$scope, webhooksResource, notificationsService, editorService, overlayService, contentTypeResource, mediaTypeResource) {
- var vm = this;
+ function WebhookController($q, $timeout, $routeParams, webhooksResource, navigationService, notificationsService, editorService, overlayService, contentTypeResource, mediaTypeResource) {
+
+ const vm = this;
vm.openWebhookOverlay = openWebhookOverlay;
vm.deleteWebhook = deleteWebhook;
@@ -16,15 +17,33 @@
vm.webHooksContentTypes = {};
vm.webhookEvents = {};
- function loadEvents (){
+ function init() {
+ vm.loading = true;
+
+ let promises = [];
+
+ promises.push(loadEvents());
+ promises.push(loadWebhooks());
+
+ $q.all(promises).then(function () {
+ vm.loading = false;
+ });
+
+ // Activate tree node
+ $timeout(function () {
+ navigationService.syncTree({ tree: $routeParams.tree, path: [-1], activate: true });
+ });
+ }
+
+ function loadEvents() {
return webhooksResource.getAllEvents()
- .then((data) => {
+ .then(data => {
vm.events = data.map(item => item.eventName);
});
}
function resolveEventNames(webhook) {
- webhook.events.forEach((event) => {
+ webhook.events.forEach(event => {
if (!vm.webhookEvents[webhook.key]) {
vm.webhookEvents[webhook.key] = event;
} else {
@@ -38,9 +57,9 @@
const resource = isContent ? contentTypeResource : mediaTypeResource;
let entities = [];
- webhook.contentTypeKeys.forEach((key) => {
+ webhook.contentTypeKeys.forEach(key => {
resource.getById(key)
- .then((data) => {
+ .then(data => {
entities.push(data);
});
});
@@ -56,9 +75,9 @@
delete vm.webHooksContentTypes[webhook.key];
}
- webhook.contentTypeKeys.forEach((key) => {
+ webhook.contentTypeKeys.forEach(key => {
resource.getById(key)
- .then((data) => {
+ .then(data => {
if (!vm.webHooksContentTypes[webhook.key]) {
vm.webHooksContentTypes[webhook.key] = data.name;
} else {
@@ -97,7 +116,8 @@
handleSubmissionError(model, 'Please provide the event for which the webhook should trigger');
return;
}
- if(isCreating){
+
+ if (isCreating) {
webhooksResource.create(model.webhook)
.then(() => {
loadWebhooks()
@@ -111,7 +131,7 @@
handleSubmissionError(model, `Error saving webhook. ${errorMessage ?? ''}`);
});
}
- else{
+ else {
webhooksResource.update(model.webhook)
.then(() => {
loadWebhooks()
@@ -136,19 +156,19 @@
function loadWebhooks(){
webhooksResource
.getAll()
- .then((result) => {
+ .then(result => {
vm.webhooks = result;
vm.webhookEvents = {};
vm.webHooksContentTypes = {};
- vm.webhooks.forEach((webhook) => {
+ vm.webhooks.forEach(webhook => {
resolveTypeNames(webhook);
resolveEventNames(webhook);
})
});
}
- function deleteWebhook (webhook) {
+ function deleteWebhook (webhook, event) {
overlayService.open({
title: 'Confirm delete webhook',
content: 'Are you sure you want to delete the webhook?',
@@ -171,10 +191,12 @@
overlayService.close();
}
});
+
+ event.preventDefault();
+ event.stopPropagation();
}
- loadWebhooks()
- loadEvents()
+ init();
}
angular.module("umbraco").controller("Umbraco.Editors.Webhooks.WebhookController", WebhookController);
diff --git a/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.html b/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.html
index 241a4a2015a3..e6f4e8f53d46 100644
--- a/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.html
+++ b/src/Umbraco.Web.UI.Client/src/views/webhooks/webhooks.html
@@ -1,4 +1,4 @@
-
+
@@ -17,7 +17,6 @@
-
| Enabled |
Events |
Url |
@@ -27,27 +26,24 @@
|
-
+
|
-
{{ vm.webhookEvents[webhook.key] }}
|
-
- {{ webhook.url }}
- |
-
- {{ vm.webHooksContentTypes[webhook.key] }}
- |
+ {{ webhook.url }} |
+ {{ vm.webHooksContentTypes[webhook.key] }} |
-
+
|