From a03b433f2b9c6e64fe7ec7541e28aaf3edbe2c79 Mon Sep 17 00:00:00 2001 From: mokaddem Date: Sat, 12 Jun 2021 14:04:17 +0200 Subject: [PATCH] chg: [requestProcessor] Recover local tool from request --- .../LocalToolRequestProcessor.php | 18 ++++++++++++++++++ .../templates/LocalTool/GenericRequest.php | 12 ++++++++++-- src/Model/Table/LocalToolsTable.php | 6 ++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/libraries/default/RequestProcessors/LocalToolRequestProcessor.php b/libraries/default/RequestProcessors/LocalToolRequestProcessor.php index 55b7b3b..d672eec 100644 --- a/libraries/default/RequestProcessors/LocalToolRequestProcessor.php +++ b/libraries/default/RequestProcessors/LocalToolRequestProcessor.php @@ -16,11 +16,13 @@ class LocalToolRequestProcessor extends GenericRequestProcessor ]; protected $processingTemplate = 'LocalTool/GenericRequest'; protected $Broods; + protected $LocalTools; public function __construct($loadFromAction=false) { parent::__construct($loadFromAction); $this->Broods = TableRegistry::getTableLocator()->get('Broods'); + $this->LocalTools = TableRegistry::getTableLocator()->get('LocalTools'); } public function create($requestData) @@ -53,6 +55,19 @@ class LocalToolRequestProcessor extends GenericRequestProcessor return $brood; } + protected function getConnector($request) + { + try { + $connectorClasses = $this->LocalTools->getConnectorByToolName($request->local_tool_name); + if (!empty($connectorClasses)) { + $connector = $this->LocalTools->extractMeta($connectorClasses)[0]; + } + } catch (Cake\Http\Exception\NotFoundException $e) { + $connector = null; + } + return $connector; + } + protected function addBaseValidatorRules($validator) { return $validator @@ -91,6 +106,7 @@ class IncomingConnectionRequestProcessor extends LocalToolRequestProcessor imple public function getViewVariables($request) { $request->brood = $this->getIssuerBrood($request); + $request->connector = $this->getConnector($request); return [ 'request' => $request, 'progressStep' => 0, @@ -144,6 +160,7 @@ class AcceptedRequestProcessor extends LocalToolRequestProcessor implements Gene public function getViewVariables($request) { $request->brood = $this->getIssuerBrood($request); + $request->connector = $this->getConnector($request); return [ 'request' => $request, 'progressStep' => 1, @@ -195,6 +212,7 @@ class DeclinedRequestProcessor extends LocalToolRequestProcessor implements Gene public function getViewVariables($request) { $request->brood = $this->getIssuerBrood($request); + $request->connector = $this->getConnector($request); return [ 'request' => $request, 'progressStep' => 1, diff --git a/libraries/default/RequestProcessors/templates/LocalTool/GenericRequest.php b/libraries/default/RequestProcessors/templates/LocalTool/GenericRequest.php index 2c60181..42d0d24 100644 --- a/libraries/default/RequestProcessors/templates/LocalTool/GenericRequest.php +++ b/libraries/default/RequestProcessors/templates/LocalTool/GenericRequest.php @@ -30,13 +30,21 @@ $progress = $this->Bootstrap->progressTimeline([ $table = $this->Bootstrap->table(['small' => true, 'bordered' => false, 'striped' => false, 'hover' => false], [ 'fields' => [ - ['key' => 'data.toolName', 'label' => __('Tool Name')], + ['key' => 'connector', 'label' => __('Tool Name'), 'formatter' => function($connector, $row) { + return sprintf('%s', + $this->Url->build(['controller' => 'localTools', 'action' => 'viewConnector', $connector['name']]), + sprintf('%s (v%s)', h($connector['name']), h($connector['connector_version'])) + ); + }], ['key' => 'created', 'label' => __('Date'), 'formatter' => function($value, $row) { return $value->i18nFormat('yyyy-MM-dd HH:mm:ss'); }], ['key' => 'origin', 'label' => __('Origin')], ['key' => 'brood', 'label' => __('Brood'), 'formatter' => function($brood, $row) { - return sprintf('%s', $this->Url->build(['controller' => 'broods', 'action' => 'view', $brood['id']]), h($brood['name'])); + return sprintf('%s', + $this->Url->build(['controller' => 'broods', 'action' => 'view', $brood['id']]), + h($brood['name']) + ); }] ], 'items' => [$request->toArray()], diff --git a/src/Model/Table/LocalToolsTable.php b/src/Model/Table/LocalToolsTable.php index 9cfc48f..25d124e 100644 --- a/src/Model/Table/LocalToolsTable.php +++ b/src/Model/Table/LocalToolsTable.php @@ -73,6 +73,12 @@ class LocalToolsTable extends AppTable throw new NotFoundException(__('Invalid connector module action requested.')); } + public function getConnectorByToolName($toolName): array + { + $toolName = sprintf('%sConnector', ucfirst(strtolower($toolName))); + return $this->getConnectors($toolName); + } + public function getConnectors(string $name = null): array { $connectors = [];