From f901a40b1e7537fba0fb65eae9c29b8e78d53f83 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 4 Feb 2024 20:34:12 +0000 Subject: [PATCH] update --- Admin/Routes/Web/Api.php | 2 +- Admin/Routes/Web/Backend.php | 19 ++++- Controller/ApiController.php | 21 +---- Controller/BackendController.php | 77 +++++++++++++++++++ Controller/Controller.php | 36 +++++++++ Theme/Backend/Lang/de.lang.php | 17 ++++ Theme/Backend/Lang/en.lang.php | 17 ++++ Theme/Backend/search-result.tpl.php | 115 ++++++++++++++++++++++++++++ 8 files changed, 285 insertions(+), 19 deletions(-) create mode 100644 Controller/BackendController.php create mode 100644 Theme/Backend/Lang/de.lang.php create mode 100644 Theme/Backend/Lang/en.lang.php create mode 100644 Theme/Backend/search-result.tpl.php diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 1fd9922..b55d5c9 100755 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -20,7 +20,7 @@ use phpOMS\Router\RouteVerb; return [ '^.*/search(\?.*|$)' => [ [ - 'dest' => '\Modules\Search\Controller\ApiController:routeSearch', + 'dest' => '\Modules\Search\Controller\ApiController:search', 'verb' => RouteVerb::ANY, 'permission' => [ 'module' => ApiController::NAME, diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 9c9cc0d..c128272 100755 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -12,4 +12,21 @@ */ declare(strict_types=1); -return []; +use Modules\Search\Controller\BackendController; +use Modules\Search\Models\PermissionCategory; +use phpOMS\Account\PermissionType; +use phpOMS\Router\RouteVerb; + +return [ + '^.*/search(\?.*|$)' => [ + [ + 'dest' => '\Modules\Search\Controller\BackendController:search', + 'verb' => RouteVerb::ANY, + 'permission' => [ + 'module' => BackendController::NAME, + 'type' => PermissionType::READ, + 'state' => PermissionCategory::SEARCH, + ], + ], + ], +]; diff --git a/Controller/ApiController.php b/Controller/ApiController.php index aa97d35..e19067c 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -29,8 +29,6 @@ use phpOMS\Router\WebRouter; */ final class ApiController extends Controller { - private $router = null; - /** * {@inheritdoc} */ @@ -49,28 +47,17 @@ final class ApiController extends Controller * @param ResponseAbstract $response Response * @param array $data Generic data * - * @return void + * @return array * * @api * * @since 1.0.0 */ - public function routeSearch(HttpRequest $request, ResponseAbstract $response, mixed $data = null) : void + public function search(HttpRequest $request, ResponseAbstract $response, mixed $data = null) : void { - $this->app->dispatcher->dispatch( - $this->router->route( - $request->getDataString('search') ?? '', - $request->getDataString('CSRF'), - $request->getRouteVerb(), - $this->app->appId, - $this->app->unitId, - $this->app->accountManager->get($request->header->account) - ), - $request, - $response - ); + $data = $this->routeSearch($request, $response, $data); - if (empty($response->data)) { + if (empty($data)) { $this->fillJsonRawResponse($request, $response, []); } } diff --git a/Controller/BackendController.php b/Controller/BackendController.php new file mode 100644 index 0000000..c04a209 --- /dev/null +++ b/Controller/BackendController.php @@ -0,0 +1,77 @@ +router = new WebRouter(); + $this->router->importFromFile(__DIR__ . '/../Admin/SearchCommands.php'); + } + + /** + * Backend method to handle basic search request + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return array + * + * @api + * + * @since 1.0.0 + */ + public function search(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface + { + $view = new View($this->app->l11nManager, $request, $response); + $view->setTemplate('/Modules/Search/Theme/Backend/search-result'); + + $internalRequest = clone $request; + $internalResponse = clone $response; + + $internalResponse->header = clone $request->header; + + $internalResponse->data = []; + + $temp = empty($request->getDataString('search')) ? [] : $this->routeSearch($internalRequest, $internalResponse, $data); + $view->data = empty($temp) ? [] : \reset($temp); + + return $view; + } +} diff --git a/Controller/Controller.php b/Controller/Controller.php index e76a02b..16f2da6 100755 --- a/Controller/Controller.php +++ b/Controller/Controller.php @@ -15,7 +15,10 @@ declare(strict_types=1); namespace Modules\Search\Controller; use Modules\Search\Models\Search; +use phpOMS\Message\Http\HttpRequest; +use phpOMS\Message\ResponseAbstract; use phpOMS\Module\ModuleAbstract; +use phpOMS\Router\RouterInterface; /** * Search class. @@ -75,4 +78,37 @@ class Controller extends ModuleAbstract * @since 1.0.0 */ public static array $dependencies = []; + + protected ?RouterInterface $router = null; + + /** + * Api method to handle basic search request + * + * @param HttpRequest $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return array + * + * @api + * + * @since 1.0.0 + */ + public function routeSearch(HttpRequest $request, ResponseAbstract $response, mixed $data = null) : array + { + $this->app->dispatcher->dispatch( + $this->router->route( + $request->getDataString('search') ?? '', + $request->getDataString('CSRF'), + $request->getRouteVerb(), + $this->app->appId, + $this->app->unitId, + $this->app->accountManager->get($request->header->account) + ), + $request, + $response + ); + + return $response->data; + } } diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php new file mode 100644 index 0000000..fbafd47 --- /dev/null +++ b/Theme/Backend/Lang/de.lang.php @@ -0,0 +1,17 @@ + [ + 'NoResults' => 'Keine Surchergebnisse', +]]; \ No newline at end of file diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php new file mode 100644 index 0000000..4e9c000 --- /dev/null +++ b/Theme/Backend/Lang/en.lang.php @@ -0,0 +1,17 @@ + [ + 'NoResults' => 'No search results', +]]; \ No newline at end of file diff --git a/Theme/Backend/search-result.tpl.php b/Theme/Backend/search-result.tpl.php new file mode 100644 index 0000000..d12c219 --- /dev/null +++ b/Theme/Backend/search-result.tpl.php @@ -0,0 +1,115 @@ + +data as $controller) : + if (empty($controller)) { + continue; + } + + $first = \reset($controller); +?> +
+
+

+
+
+ + +
+
+
+ + +
printHtml(\trim($data['title'])); ?>
+
+ + +
printHtml(\trim($data['title'])); ?>
+
+ + +
+ + +
+ + + icon) ? '' : ''; ?> + printHtml($tag->getL11n()); ?> + + +
+ +
+
+
+ + +
+ +
+
+ +
+
+ +
printHtml($data['email']); ?> +
printHtml($data['phone']); ?> +
printHtml($data['city']); ?> +
+
+
+
+
+ +
+ + + + +
+
+
+
getHtml('NoResults'); ?>
+
+
+
+ \ No newline at end of file