From fab0efa5e52a658b2dfc7d74f033ef489106af15 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 16 May 2025 15:47:48 +0300 Subject: [PATCH] webhook event queue item list view --- .../Controllers/WebhookEventQueueItem.php | 61 +++++++++++++++++++ .../Espo/Resources/i18n/en_US/Global.json | 2 + .../i18n/en_US/WebhookEventQueueItem.json | 8 +++ .../layouts/WebhookEventQueueItem/detail.json | 17 ++++++ .../WebhookEventQueueItem/detailSmall.json | 17 ++++++ .../WebhookEventQueueItem/filters.json | 6 ++ .../layouts/WebhookEventQueueItem/list.json | 18 ++++++ .../layouts/WebhookQueueItem/filters.json | 1 + .../metadata/clientDefs/Webhook.json | 5 ++ .../clientDefs/WebhookEventQueueItem.json | 8 +++ .../entityDefs/WebhookEventQueueItem.json | 3 +- .../metadata/entityDefs/WebhookQueueItem.json | 3 +- 12 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 application/Espo/Controllers/WebhookEventQueueItem.php create mode 100644 application/Espo/Resources/i18n/en_US/WebhookEventQueueItem.json create mode 100644 application/Espo/Resources/layouts/WebhookEventQueueItem/detail.json create mode 100644 application/Espo/Resources/layouts/WebhookEventQueueItem/detailSmall.json create mode 100644 application/Espo/Resources/layouts/WebhookEventQueueItem/filters.json create mode 100644 application/Espo/Resources/layouts/WebhookEventQueueItem/list.json create mode 100644 application/Espo/Resources/metadata/clientDefs/WebhookEventQueueItem.json diff --git a/application/Espo/Controllers/WebhookEventQueueItem.php b/application/Espo/Controllers/WebhookEventQueueItem.php new file mode 100644 index 0000000000..35ab07ab10 --- /dev/null +++ b/application/Espo/Controllers/WebhookEventQueueItem.php @@ -0,0 +1,61 @@ +. + * + * The interactive user interfaces in modified source and object code versions + * of this program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU Affero General Public License version 3. + * + * In accordance with Section 7(b) of the GNU Affero General Public License version 3, + * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. + ************************************************************************/ + +namespace Espo\Controllers; + +use Espo\Core\Api\Request; +use Espo\Core\Api\Response; +use Espo\Core\Controllers\RecordBase; +use Espo\Core\Exceptions\Forbidden; +use stdClass; + +/** + * @noinspection PhpUnused + */ +class WebhookEventQueueItem extends RecordBase +{ + protected function checkAccess(): bool + { + if (!$this->user->isAdmin()) { + return false; + } + + return true; + } + + public function postActionCreate(Request $request, Response $response): stdClass + { + throw new Forbidden(); + } + + public function putActionUpdate(Request $request, Response $response): stdClass + { + throw new Forbidden(); + } +} diff --git a/application/Espo/Resources/i18n/en_US/Global.json b/application/Espo/Resources/i18n/en_US/Global.json index cff358af14..b3db56c93b 100644 --- a/application/Espo/Resources/i18n/en_US/Global.json +++ b/application/Espo/Resources/i18n/en_US/Global.json @@ -58,6 +58,7 @@ "LayoutSet": "Layout Set", "Webhook": "Webhook", "WebhookQueueItem": "Webhook Queue Item", + "WebhookEventQueueItem": "Webhook Event Queue Item", "Mass Action": "Mass Action", "WorkingTimeCalendar": "Working Time Calendar", "WorkingTimeRange": "Working Time Exception", @@ -116,6 +117,7 @@ "LayoutSet": "Layout Sets", "Webhook": "Webhooks", "WebhookQueueItem": "Webhook Queue Items", + "WebhookEventQueueItem": "Webhook Event Queue Items", "WorkingTimeCalendar": "Working Time Calendars", "WorkingTimeRange": "Working Time Exceptions", "AuthenticationProvider": "Authentication Providers", diff --git a/application/Espo/Resources/i18n/en_US/WebhookEventQueueItem.json b/application/Espo/Resources/i18n/en_US/WebhookEventQueueItem.json new file mode 100644 index 0000000000..3ceb8da10d --- /dev/null +++ b/application/Espo/Resources/i18n/en_US/WebhookEventQueueItem.json @@ -0,0 +1,8 @@ +{ + "fields": { + "event": "Event", + "target": "Target", + "data": "Data", + "isProcessed": "Is Processed" + } +} diff --git a/application/Espo/Resources/layouts/WebhookEventQueueItem/detail.json b/application/Espo/Resources/layouts/WebhookEventQueueItem/detail.json new file mode 100644 index 0000000000..e2ba835654 --- /dev/null +++ b/application/Espo/Resources/layouts/WebhookEventQueueItem/detail.json @@ -0,0 +1,17 @@ +[ + { + "rows": [ + [ + {"name": "event"}, + {"name": "isProcessed"} + ], + [ + {"name": "target"}, + false + ], + [ + {"name": "data"} + ] + ] + } +] diff --git a/application/Espo/Resources/layouts/WebhookEventQueueItem/detailSmall.json b/application/Espo/Resources/layouts/WebhookEventQueueItem/detailSmall.json new file mode 100644 index 0000000000..e2ba835654 --- /dev/null +++ b/application/Espo/Resources/layouts/WebhookEventQueueItem/detailSmall.json @@ -0,0 +1,17 @@ +[ + { + "rows": [ + [ + {"name": "event"}, + {"name": "isProcessed"} + ], + [ + {"name": "target"}, + false + ], + [ + {"name": "data"} + ] + ] + } +] diff --git a/application/Espo/Resources/layouts/WebhookEventQueueItem/filters.json b/application/Espo/Resources/layouts/WebhookEventQueueItem/filters.json new file mode 100644 index 0000000000..8c00ca867f --- /dev/null +++ b/application/Espo/Resources/layouts/WebhookEventQueueItem/filters.json @@ -0,0 +1,6 @@ +[ + "event", + "target", + "isProcessed", + "createdAt" +] diff --git a/application/Espo/Resources/layouts/WebhookEventQueueItem/list.json b/application/Espo/Resources/layouts/WebhookEventQueueItem/list.json new file mode 100644 index 0000000000..e3a611bfbb --- /dev/null +++ b/application/Espo/Resources/layouts/WebhookEventQueueItem/list.json @@ -0,0 +1,18 @@ +[ + { + "name": "event", + "link": true + }, + { + "name": "isProcessed", + "width": 12 + }, + { + "name": "target", + "width": 20 + }, + { + "name": "createdAt", + "width": 14 + } +] diff --git a/application/Espo/Resources/layouts/WebhookQueueItem/filters.json b/application/Espo/Resources/layouts/WebhookQueueItem/filters.json index 01be6c768a..f6f5329e2c 100644 --- a/application/Espo/Resources/layouts/WebhookQueueItem/filters.json +++ b/application/Espo/Resources/layouts/WebhookQueueItem/filters.json @@ -1,6 +1,7 @@ [ "status", "webhook", + "event", "createdAt", "processedAt" ] diff --git a/application/Espo/Resources/metadata/clientDefs/Webhook.json b/application/Espo/Resources/metadata/clientDefs/Webhook.json index b14e06c2eb..47f15066ce 100644 --- a/application/Espo/Resources/metadata/clientDefs/Webhook.json +++ b/application/Espo/Resources/metadata/clientDefs/Webhook.json @@ -11,6 +11,11 @@ "labelTranslation": "Global.scopeNamesPlural.WebhookQueueItem", "link": "#WebhookQueueItem", "aclScope": "WebhookQueueItem" + }, + { + "labelTranslation": "Global.scopeNamesPlural.WebhookEventQueueItem", + "link": "#WebhookEventQueueItem", + "aclScope": "WebhookEventQueueItem" } ] } diff --git a/application/Espo/Resources/metadata/clientDefs/WebhookEventQueueItem.json b/application/Espo/Resources/metadata/clientDefs/WebhookEventQueueItem.json new file mode 100644 index 0000000000..640e62f708 --- /dev/null +++ b/application/Espo/Resources/metadata/clientDefs/WebhookEventQueueItem.json @@ -0,0 +1,8 @@ +{ + "controller": "controllers/record", + "createDisabled": true, + "editDisabled": true, + "mergeDisabled": true, + "exportDisabled": true, + "textFilterDisabled": true +} diff --git a/application/Espo/Resources/metadata/entityDefs/WebhookEventQueueItem.json b/application/Espo/Resources/metadata/entityDefs/WebhookEventQueueItem.json index 4a0ea657c5..d4a92bdd54 100644 --- a/application/Espo/Resources/metadata/entityDefs/WebhookEventQueueItem.json +++ b/application/Espo/Resources/metadata/entityDefs/WebhookEventQueueItem.json @@ -7,7 +7,8 @@ "event": { "type": "varchar", "maxLength": 100, - "required": true + "required": true, + "view": "views/webhook/fields/event" }, "target": { "type": "linkParent" diff --git a/application/Espo/Resources/metadata/entityDefs/WebhookQueueItem.json b/application/Espo/Resources/metadata/entityDefs/WebhookQueueItem.json index 0da2b3062d..abaca539ae 100644 --- a/application/Espo/Resources/metadata/entityDefs/WebhookQueueItem.json +++ b/application/Espo/Resources/metadata/entityDefs/WebhookQueueItem.json @@ -7,7 +7,8 @@ "event": { "type": "varchar", "maxLength": 100, - "required": true + "required": true, + "view": "views/webhook/fields/event" }, "webhook": { "type": "link"