chg: [requestProcessor] Moved templates files in libraries/default folder

pull/41/head
mokaddem 2021-03-22 16:17:56 +01:00
parent b52048c760
commit 80a07f9138
10 changed files with 141 additions and 33 deletions

View File

@ -1,7 +1,7 @@
<?php <?php
use Cake\ORM\TableRegistry; use Cake\ORM\TableRegistry;
require_once(ROOT . DS . 'libraries' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php'); require_once(ROOT . DS . 'libraries' . DS . 'default' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php');
class BroodRequestProcessor extends GenericRequestProcessor class BroodRequestProcessor extends GenericRequestProcessor
{ {

View File

@ -3,6 +3,7 @@ use Cake\ORM\TableRegistry;
use Cake\Filesystem\File; use Cake\Filesystem\File;
use Cake\Utility\Inflector; use Cake\Utility\Inflector;
use Cake\Validation\Validator; use Cake\Validation\Validator;
use Cake\View\ViewBuilder;
interface GenericProcessorActionI interface GenericProcessorActionI
{ {
@ -17,7 +18,7 @@ class GenericRequestProcessor
protected $registeredActions = []; protected $registeredActions = [];
protected $validator; protected $validator;
private $processingTemplate = '/genericTemplates/confirm'; private $processingTemplate = '/genericTemplates/confirm';
private $processingTemplatesDirectory = ROOT . '/templates/RequestProcessors'; private $processingTemplatesDirectory = ROOT . '/libraries/default/RequestProcessors/templates';
public function __construct($registerActions=false) { public function __construct($registerActions=false) {
$this->Inbox = TableRegistry::getTableLocator()->get('Inbox'); $this->Inbox = TableRegistry::getTableLocator()->get('Inbox');
@ -27,7 +28,7 @@ class GenericRequestProcessor
$processingTemplatePath = $this->getProcessingTemplatePath(); $processingTemplatePath = $this->getProcessingTemplatePath();
$file = new File($this->processingTemplatesDirectory . DS . $processingTemplatePath); $file = new File($this->processingTemplatesDirectory . DS . $processingTemplatePath);
if ($file->exists()) { if ($file->exists()) {
$this->processingTemplate = $processingTemplatePath; $this->processingTemplate = str_replace('.php', '', $processingTemplatePath);
} }
$file->close(); $file->close();
} }
@ -53,10 +54,19 @@ class GenericRequestProcessor
public function getProcessingTemplate() public function getProcessingTemplate()
{ {
if ($this->processingTemplate == '/genericTemplates/confirm') { return $this->processingTemplate;
return '/genericTemplates/confirm'; }
}
return DS . 'RequestProcessors' . DS . str_replace('.php', '', $this->processingTemplate); public function render($request=[])
{
$processingTemplate = $this->getProcessingTemplate();
$viewVariables = $this->getViewVariables($request);
$builder = new ViewBuilder();
$builder->disableAutoLayout()
->setClassName('Monad')
->setTemplate($processingTemplate);
$view = $builder->build($viewVariables);
return $view->render();
} }
protected function generateRequest($requestData) protected function generateRequest($requestData)
@ -96,18 +106,20 @@ class GenericRequestProcessor
$this->{$action} = $reflection->newInstance(); $this->{$action} = $reflection->newInstance();
} }
} }
protected function setViewVariablesConfirmModal($controller, $id, $title='', $question='', $actionName='') protected function getViewVariablesConfirmModal($id, $title='', $question='', $actionName='')
{ {
$controller->set('title', !empty($title) ? $title : __('Process request {0}', $id)); return [
$controller->set('question', !empty($question) ? $question : __('Confirm request {0}', $id)); 'title' => !empty($title) ? $title : __('Process request {0}', $id),
$controller->set('actionName', !empty($actionName) ? $actionName : __('Confirm')); 'question' => !empty($question) ? $question : __('Confirm request {0}', $id),
$controller->set('path', ['controller' => 'inbox', 'action' => 'process', $id]); 'actionName' => !empty($actionName) ? $actionName : __('Confirm'),
'path' => ['controller' => 'inbox', 'action' => 'process', $id]
];
} }
public function setViewVariables($controller, $request) public function getViewVariables($request)
{ {
$this->setViewVariablesConfirmModal($controller, $request->id); return $this->getViewVariablesConfirmModal($request->id, '', '', '');
} }
protected function genActionResult($data, $success, $message, $errors=[]) protected function genActionResult($data, $success, $message, $errors=[])

View File

@ -1,7 +1,7 @@
<?php <?php
use Cake\ORM\TableRegistry; use Cake\ORM\TableRegistry;
require_once(ROOT . DS . 'libraries' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php'); require_once(ROOT . DS . 'libraries' . DS . 'default' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php');
class ProposalRequestProcessor extends GenericRequestProcessor class ProposalRequestProcessor extends GenericRequestProcessor
{ {

View File

@ -1,7 +1,7 @@
<?php <?php
use Cake\ORM\TableRegistry; use Cake\ORM\TableRegistry;
require_once(ROOT . DS . 'libraries' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php'); require_once(ROOT . DS . 'libraries' . DS . 'default' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php');
class SynchronisationRequestProcessor extends GenericRequestProcessor class SynchronisationRequestProcessor extends GenericRequestProcessor
{ {

View File

@ -0,0 +1,65 @@
<?php
use Cake\ORM\TableRegistry;
require_once(ROOT . DS . 'libraries' . DS . 'default' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php');
class SCOPE_RequestProcessor extends GenericRequestProcessor
{
protected $scope = '~to-be-defined~';
protected $action = 'not-specified'; //overriden when extending
protected $description = ''; // overriden when extending
protected $registeredActions = [
'ACTION'
];
public function __construct($loadFromAction=false) {
parent::__construct($loadFromAction);
}
public function create($requestData)
{
return parent::create($requestData);
}
}
class SCOPE_ACTION_Processor extends ProposalRequestProcessor implements GenericProcessorActionI {
public $action = 'ACTION';
protected $description;
public function __construct() {
parent::__construct();
$this->description = __('~to-be-defined~');
$this->Users = TableRegistry::getTableLocator()->get('Users');
}
protected function addValidatorRules($validator)
{
return $validator;
}
public function create($requestData) {
$this->validateRequestData($requestData);
$requestData['title'] = __('~to-be-defined~');
return parent::create($requestData);
}
public function process($id, $requestData)
{
$proposalAccepted = false;
$saveResult = [];
if ($proposalAccepted) {
$this->discard($id, $requestData);
}
return $this->genActionResult(
$saveResult,
$proposalAccepted,
$proposalAccepted ? __('success') : __('fail'),
[]
);
}
public function discard($id, $requestData)
{
return parent::discard($id, $requestData);
}
}

View File

@ -1,7 +1,7 @@
<?php <?php
use Cake\ORM\TableRegistry; use Cake\ORM\TableRegistry;
require_once(ROOT . DS . 'libraries' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php'); require_once(ROOT . DS . 'libraries' . DS . 'default' . DS . 'RequestProcessors' . DS . 'GenericRequestProcessor.php');
class UserRequestProcessor extends GenericRequestProcessor class UserRequestProcessor extends GenericRequestProcessor
{ {
@ -11,6 +11,7 @@ class UserRequestProcessor extends GenericRequestProcessor
protected $registeredActions = [ protected $registeredActions = [
'Registration' 'Registration'
]; ];
protected $Users;
public function __construct($loadFromAction=false) { public function __construct($loadFromAction=false) {
parent::__construct($loadFromAction); parent::__construct($loadFromAction);
@ -50,7 +51,7 @@ class RegistrationProcessor extends UserRequestProcessor implements GenericProce
return parent::create($requestData); return parent::create($requestData);
} }
public function setViewVariables($controller, $request) public function getViewVariables($request)
{ {
$dropdownData = [ $dropdownData = [
'role' => $this->Users->Roles->find('list', [ 'role' => $this->Users->Roles->find('list', [
@ -72,9 +73,11 @@ class RegistrationProcessor extends UserRequestProcessor implements GenericProce
'role_id' => !empty($request['data']['role_id']) ? $request['data']['role_id'] : '', 'role_id' => !empty($request['data']['role_id']) ? $request['data']['role_id'] : '',
'disabled' => !empty($request['data']['disabled']) ? $request['data']['disabled'] : '', 'disabled' => !empty($request['data']['disabled']) ? $request['data']['disabled'] : '',
]); ]);
$controller->set('individualEntity', $individualEntity); return [
$controller->set('userEntity', $userEntity); 'dropdownData' => $dropdownData,
$controller->set(compact('dropdownData')); 'userEntity' => $userEntity,
'individualEntity' => $individualEntity
];
} }
public function process($id, $requestData) public function process($id, $requestData)

View File

@ -87,7 +87,8 @@ class InboxController extends AppController
$processResult = $processor->process($id, $this->request->getData()); $processResult = $processor->process($id, $this->request->getData());
return $processor->genHTTPReply($this, $processResult); return $processor->genHTTPReply($this, $processResult);
} else { } else {
$this->requestProcessor->render($this, $processor, $request); $renderedView = $processor->render($request);
return $this->response->withStringBody($renderedView);
} }
} }

View File

@ -7,7 +7,7 @@ use Cake\Filesystem\Folder;
class RequestProcessorTable extends AppTable class RequestProcessorTable extends AppTable
{ {
private $processorsDirectory = ROOT . '/libraries/RequestProcessors'; private $processorsDirectory = ROOT . '/libraries/default/RequestProcessors';
private $requestProcessors; private $requestProcessors;
private $enabledProcessors = [ // to be defined in config private $enabledProcessors = [ // to be defined in config
'Brood' => [ 'Brood' => [
@ -45,15 +45,6 @@ class RequestProcessorTable extends AppTable
throw new \Exception(__('Processor not found'), 1); throw new \Exception(__('Processor not found'), 1);
} }
public function render($controller, $processor, $request=[])
{
$controller->set('request', $request);
$controller->viewBuilder()->setLayout('ajax');
$processingTemplate = $processor->getProcessingTemplate();
$processor->setViewVariables($controller, $request);
$controller->render($processingTemplate);
}
public function listProcessors($scope=null) public function listProcessors($scope=null)
{ {
if (is_null($scope)) { if (is_null($scope)) {

36
src/View/MonadView.php Normal file
View File

@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
/**
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
* @link https://cakephp.org CakePHP(tm) Project
* @since 3.0.4
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace App\View;
/**
* A view class that is used for AJAX responses.
* Currently only switches the default layout and sets the response type -
* which just maps to text/html by default.
*/
class MonadView extends AppView
{
private $additionalTemplatePaths = [
ROOT . '/libraries/default/RequestProcessors/templates/',
];
protected function _paths(?string $plugin = null, bool $cached = true): array
{
$paths = parent::_paths($plugin, $cached);
$paths = array_merge($paths, $this->additionalTemplatePaths);
return $paths;
}
}