From e553d1b185d6e9990f3c2e998eabd0fa642fa496 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 23 Jul 2023 03:00:14 +0000 Subject: [PATCH] continue impl --- Admin/Routes/Web/Api.php | 20 +++++ Controller/ApiController.php | 70 +++++++++++++++++ Controller/BackendController.php | 3 + Theme/Backend/item-profile.tpl.php | 117 ++--------------------------- 4 files changed, 101 insertions(+), 109 deletions(-) diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 1cd3110..b99890e 100755 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -49,4 +49,24 @@ return [ ], ], ], + '^.*/item/l11n.*$' => [ + [ + 'dest' => '\Modules\ItemManagement\Controller\ApiController:apiItemL11nTypeCreate', + 'verb' => RouteVerb::PUT, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::READ, + 'state' => PermissionCategory::SALES_ITEM, + ], + ], + [ + 'dest' => '\Modules\ItemManagement\Controller\ApiController:apiItemL11nTypeUpdate', + 'verb' => RouteVerb::SET, + 'permission' => [ + 'module' => ApiController::NAME, + 'type' => PermissionType::READ, + 'state' => PermissionCategory::SALES_ITEM, + ], + ], + ], ]; diff --git a/Controller/ApiController.php b/Controller/ApiController.php index d9ed87a..8b63931 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -44,6 +44,7 @@ use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\BaseStringL11nType; use phpOMS\Localization\ISO4217CharEnum; use phpOMS\Localization\ISO639x1Enum; +use phpOMS\Localization\NullBaseStringL11n; use phpOMS\Localization\NullBaseStringL11nType; use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; @@ -616,6 +617,75 @@ final class ApiController extends Controller return []; } + /** + * Api method to create item attribute + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiItemL11nUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateItemL11nUpdate($request))) { + $response->data['l11n_update'] = new FormValidation($val); + $response->header->status = RequestStatusCode::R_400; + + return; + } + + $old = ItemL11nMapper::get() + ->where('id', (int) $request->getData('id')) + ->execute(); + + $new = $this->updateItemL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, ItemL11nMapper::class, 'l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Method to create item l11n from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11n + * + * @since 1.0.0 + */ + private function updateItemL11nFromRequest(RequestAbstract $request, BaseStringL11n $l11n) : BaseStringL11n + { + $l11n->content = $request->getDataString('description'); + + return $l11n; + } + + /** + * Validate item attribute create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateItemL11nUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id')) + || ($val['value'] = !$request->hasData('value')) + ) { + return $val; + } + + return []; + } + /** * Api method to create item attribute type * diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 5e175c0..1a16083 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -398,6 +398,7 @@ final class BackendController extends Controller $view->data['itemImage'] = $itemImage; /** @var \Model\Setting $settings */ + // @todo: this one should already be loaded in the backend application no????????? $settings = $this->app->appSettings->get(null, [ SettingsEnum::DEFAULT_LOCALIZATION, ]); @@ -405,6 +406,8 @@ final class BackendController extends Controller $view->data['attributeView'] = new \Modules\Attribute\Theme\Backend\Components\AttributeView($this->app->l11nManager, $request, $response); $view->data['attributeView']->data['defaultlocalization'] = LocalizationMapper::get()->where('id', (int) $settings->id)->execute(); + $view->data['l11nView'] = new \Web\Backend\Views\L11nView($this->app->l11nManager, $request, $response); + $l11nTypes = ItemL11nTypeMapper::getAll() ->execute(); diff --git a/Theme/Backend/item-profile.tpl.php b/Theme/Backend/item-profile.tpl.php index b127bf1..cd3fcbd 100755 --- a/Theme/Backend/item-profile.tpl.php +++ b/Theme/Backend/item-profile.tpl.php @@ -36,6 +36,7 @@ $regionSales = $this->data['regionSales'] ?? []; $countrySales = $this->data['countrySales'] ?? []; $monthlySalesCosts = $this->data['monthlySalesCosts'] ?? []; $attributeView = $this->data['attributeView']; +$l11nView = $this->data['l11nView']; $languages = ISO639Enum::getConstants(); @@ -470,114 +471,12 @@ echo $this->data['nav']->render();
-
-
-
-
getHtml('Localization'); ?>
-
-
-
- - -
- - - -
- -
- - -
- -
- -

-                                
-
-
- - - -
-
-
-
- -
-
-
getHtml('Localizations'); ?>
-
- - - - - - data['l11nValues']; - foreach ($itemL11n as $value) : ++$c; ?> - - -
- getHtml('ID', '0', '0'); ?> - getHtml('Name'); ?> - getHtml('Language'); ?> - getHtml('Localization'); ?> -
- - type->isRequired) : ?> - - - - - - - - id; ?> - printHtml($value->type->title); ?> - printHtml($value->getLanguage()); ?> - printHtml(\substr($value->content, 0, 100))); ?> - - -
getHtml('Empty', '0', '0'); ?> - -
-
-
-
+ render( + $this->data['l11nValues'], + $this->data['l11nTypes'] ?? [], + '{/api}item/l11n' + ); + ?>
@@ -588,7 +487,7 @@ echo $this->data['nav']->render(); $this->data['attributeTypes'] ?? [], $this->data['units'] ?? [], '{/api}item/attribute' - ); + ); ?>