From a7e2fb2ea7454eb72299662b267374c9f09c9bf8 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 20 Jan 2022 14:24:03 +0100 Subject: [PATCH 01/10] chg: [auditlog:index] Break text in changed column --- templates/AuditLogs/index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/AuditLogs/index.php b/templates/AuditLogs/index.php index c4657cb..8b7b70e 100644 --- a/templates/AuditLogs/index.php +++ b/templates/AuditLogs/index.php @@ -52,7 +52,8 @@ echo $this->element('genericElements/IndexTable/index_table', [ 'name' => __('Changed'), 'sort' => 'changed', 'data_path' => 'changed', - 'element' => 'json' + 'element' => 'json', + 'class' => 'text-break' ], ], 'title' => __('Logs'), From 6005552e76037fbf14a45f948367d901d6c10360 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 20 Jan 2022 14:37:19 +0100 Subject: [PATCH 02/10] fix: [genericElements:tags] List tags when editing an entity --- templates/element/genericElements/Form/Fields/tagsField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/element/genericElements/Form/Fields/tagsField.php b/templates/element/genericElements/Form/Fields/tagsField.php index 1dcbc39..da3114a 100644 --- a/templates/element/genericElements/Form/Fields/tagsField.php +++ b/templates/element/genericElements/Form/Fields/tagsField.php @@ -1,6 +1,6 @@ Tag->tags($entity['tags'], [ - 'allTags' => [], + 'allTags' => $allTags ?? [], 'picker' => true, 'editable' => true, ]); From dc2bfcb6b2a0cc7d964f951b8e8310407d715f3e Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Fri, 21 Jan 2022 09:35:55 +0100 Subject: [PATCH 03/10] fix: [components:CRUD] Support of controller's paginate public variable --- src/Controller/Component/CRUDComponent.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/Component/CRUDComponent.php b/src/Controller/Component/CRUDComponent.php index d1c78fc..316168e 100644 --- a/src/Controller/Component/CRUDComponent.php +++ b/src/Controller/Component/CRUDComponent.php @@ -88,7 +88,7 @@ class CRUDComponent extends Component $this->Controller->restResponsePayload = $this->RestResponse->viewData($data, 'json'); } else { $this->Controller->loadComponent('Paginator'); - $data = $this->Controller->Paginator->paginate($query); + $data = $this->Controller->Paginator->paginate($query, $this->Controller->paginate ?? []); if (isset($options['afterFind'])) { $function = $options['afterFind']; if (is_callable($options['afterFind'])) { From 7d227a43875ac13c799023d3939614ec48527d4d Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Fri, 21 Jan 2022 09:48:53 +0100 Subject: [PATCH 04/10] chg: [inbox:index] Sort messages by created datetime --- src/Controller/InboxController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Controller/InboxController.php b/src/Controller/InboxController.php index 6532e01..0d07fb9 100644 --- a/src/Controller/InboxController.php +++ b/src/Controller/InboxController.php @@ -20,6 +20,12 @@ class InboxController extends AppController public $quickFilterFields = ['scope', 'action', ['title' => true], ['comment' => true]]; public $containFields = ['Users']; + public $paginate = [ + 'order' => [ + 'Inbox.created' => 'desc' + ] + ]; + public function beforeFilter(EventInterface $event) { parent::beforeFilter($event); From 4f8b663b87d6f89a35ec580a9d68df25c7219d71 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Mon, 24 Jan 2022 16:12:46 +0100 Subject: [PATCH 05/10] chg: [localtTools:connectionRequest] Provide more info on exception --- src/Controller/LocalToolsController.php | 12 +++++++++++- templates/LocalTools/connection_request.php | 1 - 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Controller/LocalToolsController.php b/src/Controller/LocalToolsController.php index 12d9d62..baf8995 100644 --- a/src/Controller/LocalToolsController.php +++ b/src/Controller/LocalToolsController.php @@ -304,7 +304,17 @@ class LocalToolsController extends AppController throw new MethodNotAllowedException(__('No local tool ID supplied.')); } $params['local_tool_id'] = $postParams['local_tool_id']; - $encodingResult = $this->LocalTools->encodeConnection($params); + try { + $encodingResult = $this->LocalTools->encodeConnection($params); + } catch (\Exception $e) { + $encodingResult = [ + 'inboxResult' => [ + 'success' => false, + 'message' => __('Error while trying to encode connection'), + 'errors' => [$e->getMessage()], + ], + ]; + } $inboxResult = $encodingResult['inboxResult']; if ($inboxResult['success']) { if ($this->ParamHandler->isRest()) { diff --git a/templates/LocalTools/connection_request.php b/templates/LocalTools/connection_request.php index 0b8a52e..035af55 100644 --- a/templates/LocalTools/connection_request.php +++ b/templates/LocalTools/connection_request.php @@ -29,4 +29,3 @@ ] ]); ?> - From eef09f44c43505935dabbbf9942b457d96e81e10 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Mon, 24 Jan 2022 16:35:42 +0100 Subject: [PATCH 06/10] chg: [brood:connectionTest] Correctly handles network exceptions --- src/Model/Table/BroodsTable.php | 10 +++++++++- webroot/js/main.js | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Model/Table/BroodsTable.php b/src/Model/Table/BroodsTable.php index b0d3dca..9798260 100644 --- a/src/Model/Table/BroodsTable.php +++ b/src/Model/Table/BroodsTable.php @@ -9,6 +9,7 @@ use Cake\Core\Configure; use Cake\Http\Client; use Cake\Http\Client\Response; use Cake\Http\Exception\NotFoundException; +use Cake\Http\Client\Exception\NetworkException; use Cake\ORM\TableRegistry; use Cake\Error\Debugger; @@ -69,7 +70,14 @@ class BroodsTable extends AppTable { $brood = $this->find()->where(['id' => $id])->first(); $start = microtime(true); - $response = $this->HTTPClientGET('/instance/status.json', $brood); + try { + $response = $this->HTTPClientGET('/instance/status.json', $brood); + } catch (NetworkException $e) { + return [ + 'error' => __('Could not query status'), + 'reason' => $e->getMessage(), + ]; + } $ping = ((int)(100 * (microtime(true) - $start))); $errors = [ 403 => [ diff --git a/webroot/js/main.js b/webroot/js/main.js index c4383ff..fc2a4dc 100644 --- a/webroot/js/main.js +++ b/webroot/js/main.js @@ -55,8 +55,10 @@ function attachTestConnectionResultHtml(result, $container) { $testResultDiv.append(getKVHtml('Internal error', result, ['text-danger fw-bold'])) } else { if (result['error']) { + if (result['ping']) { + $testResultDiv.append('Status', 'OK', ['text-danger'], `${result['ping']} ms`); + } $testResultDiv.append( - getKVHtml('Status', 'OK', ['text-danger'], `${result['ping']} ms`), getKVHtml('Status', `Error: ${result['error']}`, ['text-danger']), getKVHtml('Reason', result['reason'], ['text-danger']) ) From 7faca9452028d97d0443b818e173737c7a4b07dd Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Mon, 24 Jan 2022 16:48:58 +0100 Subject: [PATCH 07/10] chg: [outboxProcessors:broods] Provide errors while trying to re-send a message --- libraries/default/OutboxProcessors/BroodsOutboxProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php b/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php index 946e548..9019857 100644 --- a/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php +++ b/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php @@ -126,7 +126,7 @@ class ResendFailedMessageProcessor extends BroodsOutboxProcessor implements Gene [], $success, $success ? $messageSuccess : $messageFail, - [] + $jsonReply['errors'] ?? [] ); } From 88313679a6fb494f06eb1adafe5d251521d7a0a6 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Mon, 24 Jan 2022 17:36:12 +0100 Subject: [PATCH 08/10] chg: [outboxProcessors:brood] Gracefully catch server errors on remote broods --- .../default/OutboxProcessors/BroodsOutboxProcessor.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php b/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php index 9019857..9bf79ae 100644 --- a/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php +++ b/libraries/default/OutboxProcessors/BroodsOutboxProcessor.php @@ -110,6 +110,14 @@ class ResendFailedMessageProcessor extends BroodsOutboxProcessor implements Gene $dataSent = $outboxRequest->data['sent']; $response = $this->Broods->sendRequest($brood, $url, true, $dataSent); $jsonReply = $response->getJson(); + if (is_null($jsonReply)) { + $jsonReply = [ + 'success' => false, + 'errors' => [ + __('Brood returned an invalid JSON.') + ] + ]; + } $success = !empty($jsonReply['success']); $messageSuccess = __('Message successfully sent to `{0}`', $brood->name); $messageFail = __('Could not send message to `{0}`.', $brood->name); From e05bf612515f05e49c72eb1349ef59090864127c Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Mon, 24 Jan 2022 17:37:32 +0100 Subject: [PATCH 09/10] chg: [inbox:createEntry] Checks for remote back connection is more flexible Handle the case of trailing slash --- src/Model/Table/InboxTable.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Model/Table/InboxTable.php b/src/Model/Table/InboxTable.php index 18faf47..a2c0e2c 100644 --- a/src/Model/Table/InboxTable.php +++ b/src/Model/Table/InboxTable.php @@ -62,8 +62,11 @@ class InboxTable extends AppTable $this->Broods = \Cake\ORM\TableRegistry::getTableLocator()->get('Broods'); $this->Individuals = \Cake\ORM\TableRegistry::getTableLocator()->get('Individuals'); $errors = []; + $originUrl = trim($entryData['origin'], '/'); $brood = $this->Broods->find() - ->where(['url' => $entryData['origin']]) + ->where([ + 'url IN' => [$originUrl, "{$originUrl}/"] + ]) ->first(); if (empty($brood)) { $errors[] = __('Unkown brood `{0}`', $entryData['data']['cerebrateURL']); From 578eacfd891b8d7a221f28b65dfebc423aae267e Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Tue, 25 Jan 2022 14:03:48 +0100 Subject: [PATCH 10/10] fix: [templates:common] Removed extra closing tag --- templates/Common/index.php | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/Common/index.php b/templates/Common/index.php index 1f0a5f6..20e795e 100644 --- a/templates/Common/index.php +++ b/templates/Common/index.php @@ -1,4 +1,3 @@ element('genericElements/IndexTable/index_table', $data); - echo ''; ?>