diff --git a/Admin/Installer.php b/Admin/Installer.php index 5f67b08..c65f93d 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -84,7 +84,7 @@ final class Installer extends InstallerAbstract $request->header->account = 1; $request->setData('name', $type['name'] ?? ''); - $request->setData('title', \reset($type['l11n'])); + $request->setData('content', \reset($type['l11n'])); $request->setData('language', \array_keys($type['l11n'])[0] ?? 'en'); $module->apiContractTypeCreate($request, $response); @@ -111,9 +111,9 @@ final class Installer extends InstallerAbstract $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', $l11n); + $request->setData('content', $l11n); $request->setData('language', $language); - $request->setData('type', $billType['id']); + $request->setData('ref', $billType['id']); $module->apiContractTypeL11nCreate($request, $response); } diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index bd1eab9..c84052a 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -43,6 +43,31 @@ return [ ], ], + '^.*/contract/type/l11n(\?.*|$)$' => [ + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiContractTypeController:apiContractTypeL11nCreate', + 'verb' => RouteVerb::PUT, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::CREATE, + 'state' => PermissionCategory::ATTRIBUTE, + ], + ], + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiContractTypeController:apiContractTypeL11nUpdate', + 'verb' => RouteVerb::SET, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::ATTRIBUTE, + ], + ], + ], + '^.*/contract(\?.*|$)$' => [ [ 'dest' => '\Modules\ContractManagement\Controller\ApiController:apiContractCreate', @@ -68,6 +93,56 @@ return [ ], ], + '^.*/contract/file(\?.*|$)$' => [ + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiController:apiContractDocumentCreate', + 'verb' => RouteVerb::PUT, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::CREATE, + 'state' => PermissionCategory::CONTRACT, + ], + ], + ], + + '^.*/contract/note(\?.*|$)$' => [ + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiController:apiNoteCreate', + 'verb' => RouteVerb::PUT, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::CREATE, + 'state' => PermissionCategory::CONTRACT, + ], + ], + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiController:apiNoteUpdate', + 'verb' => RouteVerb::SET, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::CONTRACT, + ], + ], + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiController:apiNoteDelete', + 'verb' => RouteVerb::DELETE, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::DELETE, + 'state' => PermissionCategory::CONTRACT, + ], + ], + ], + '^.*/contract/attribute(\?.*$|$)' => [ [ 'dest' => '\Modules\ContractManagement\Controller\ApiAttributeController:apiContractAttributeCreate', @@ -92,4 +167,29 @@ return [ ], ], ], + + '^.*/contract/attribute/type/l11n(\?.*|$)$' => [ + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiAttributeController:apiContractAttributeTypeL11nCreate', + 'verb' => RouteVerb::PUT, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::CREATE, + 'state' => PermissionCategory::ATTRIBUTE, + ], + ], + [ + 'dest' => '\Modules\ContractManagement\Controller\ApiAttributeController:apiContractAttributeTypeL11nUpdate', + 'verb' => RouteVerb::SET, + 'csrf' => true, + 'active' => true, + 'permission' => [ + 'module' => Controller::NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionCategory::ATTRIBUTE, + ], + ], + ], ]; diff --git a/Controller/ApiContractTypeController.php b/Controller/ApiContractTypeController.php index f25da9d..dbb0358 100644 --- a/Controller/ApiContractTypeController.php +++ b/Controller/ApiContractTypeController.php @@ -74,7 +74,7 @@ final class ApiContractTypeController extends Controller { $contractType = new BaseStringL11nType(); $contractType->setL11n( - $request->getDataString('title') ?? '', + $request->getDataString('content') ?? '', ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN ); $contractType->title = $request->getDataString('name') ?? ''; @@ -94,7 +94,7 @@ final class ApiContractTypeController extends Controller private function validateContractTypeCreate(RequestAbstract $request) : array { $val = []; - if (($val['title'] = !$request->hasData('title')) + if (($val['content'] = !$request->hasData('content')) ) { return $val; } @@ -141,9 +141,9 @@ final class ApiContractTypeController extends Controller private function createContractTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n { $contractTypeL11n = new BaseStringL11n(); - $contractTypeL11n->ref = $request->getDataInt('type') ?? 0; + $contractTypeL11n->ref = $request->getDataInt('ref') ?? 0; $contractTypeL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language; - $contractTypeL11n->content = $request->getDataString('title') ?? ''; + $contractTypeL11n->content = $request->getDataString('content') ?? ''; return $contractTypeL11n; } @@ -160,8 +160,8 @@ final class ApiContractTypeController extends Controller private function validateContractTypeL11nCreate(RequestAbstract $request) : array { $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['type'] = !$request->hasData('type')) + if (($val['content'] = !$request->hasData('content')) + || ($val['ref'] = !$request->hasData('ref')) ) { return $val; } @@ -329,7 +329,7 @@ final class ApiContractTypeController extends Controller public function updateContractTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n { $new->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $new->language; - $new->content = $request->getDataString('title') ?? $new->content; + $new->content = $request->getDataString('content') ?? $new->content; return $new; } diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 8402c89..ce10fc8 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -86,7 +86,6 @@ final class ApiController extends Controller { $val = []; if (($val['title'] = !$request->hasData('title')) - || ($val['duration'] = !$request->hasData('duration')) || ($val['type'] = !$request->hasData('type')) ) { return $val; @@ -161,7 +160,7 @@ final class ApiController extends Controller /** @var \Modules\ContractManagement\Models\Contract */ $contract = ContractMapper::get() - ->where('id', $request->getDataInt('contract')) + ->where('id', $request->getDataInt('ref')) ->execute(); $path = $this->createContractDir($contract); @@ -337,7 +336,7 @@ final class ApiController extends Controller return; } - $request->setData('virtualpath', '/Modules/ContractManagement/Contracts/' . $request->getData('id'), true); + $request->setData('virtualpath', '/Modules/ContractManagement/Contracts/' . $request->getData('ref'), true); $this->app->moduleManager->get('Editor', 'Api')->apiEditorCreate($request, $response, $data); if ($response->header->status !== RequestStatusCode::R_200) { @@ -350,7 +349,7 @@ final class ApiController extends Controller } $model = $responseData['response']; - $this->createModelRelation($request->header->account, (int) $request->getData('id'), $model->id, ContractMapper::class, 'notes', '', $request->getOrigin()); + $this->createModelRelation($request->header->account, (int) $request->getData('ref'), $model->id, ContractMapper::class, 'notes', '', $request->getOrigin()); } /** @@ -365,7 +364,7 @@ final class ApiController extends Controller private function validateNoteCreate(RequestAbstract $request) : array { $val = []; - if (($val['id'] = !$request->hasData('id')) + if (($val['ref'] = !$request->hasData('ref')) ) { return $val; } @@ -392,7 +391,12 @@ final class ApiController extends Controller if (!$this->app->accountManager->get($accountId)->hasPermission( PermissionType::MODIFY, $this->app->unitId, $this->app->appId, self::NAME, PermissionCategory::NOTE, $request->getDataInt('id')) ) { - $this->fillJsonResponse($request, $response, NotificationLevel::HIDDEN, '', '', []); + $this->fillJsonResponse( + $request, $response, + NotificationLevel::ERROR, '', + $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'InvalidPermission'), + [] + ); $response->header->status = RequestStatusCode::R_403; return; diff --git a/Theme/Backend/contract-list.tpl.php b/Theme/Backend/contract-list.tpl.php index c9396d6..e6db268 100755 --- a/Theme/Backend/contract-list.tpl.php +++ b/Theme/Backend/contract-list.tpl.php @@ -30,7 +30,9 @@ echo $this->data['nav']->render(); ?>
-
getHtml('Contracts'); ?>download
+
getHtml('Contracts'); ?> + getHtml('New', '0', '0'); ?> +
@@ -79,20 +81,25 @@ echo $this->data['nav']->render(); ?> $url = UriFactory::build('{/base}/contract/view?{?}&id=' . $value->id); $type = 'ok'; - if (($value->end->getTimestamp() < $now->getTimestamp() && $value->end->getTimestamp() + 7776000 > $now->getTimestamp()) - || ($value->end->getTimestamp() > $now->getTimestamp() && $value->end->getTimestamp() - 7776000 < $now->getTimestamp()) - ) { - $type = 'error'; - } elseif ($value->end->getTimestamp() < $now->getTimestamp()) { - $type = 'info'; - } elseif ($value->end->getTimestamp() + 7776000 < $now->getTimestamp()) { - $type = 'warning'; + if ($value->end !== null) { + if (($value->end->getTimestamp() < $now->getTimestamp() && $value->end->getTimestamp() + 7776000 > $now->getTimestamp()) + || ($value->end->getTimestamp() > $now->getTimestamp() && $value->end->getTimestamp() - 7776000 < $now->getTimestamp()) + ) { + $type = 'error'; + } elseif ($value->end->getTimestamp() < $now->getTimestamp()) { + $type = 'info'; + } elseif ($value->end->getTimestamp() + 7776000 < $now->getTimestamp()) { + $type = 'warning'; + } } ?>
printHtml($value->title); ?> printHtml($value->account->name1); ?> printHtml($value->account->name2); ?> - end !== null ? $value->end->format('Y-m-d') : ''; ?> + + end !== null) : ?> + end !== null ? $value->end->format('Y-m-d') : ''; ?> +
getHtml('Empty', '0', '0'); ?> diff --git a/Theme/Backend/contract-type.tpl.php b/Theme/Backend/contract-type.tpl.php index 954af1a..09d8dbc 100644 --- a/Theme/Backend/contract-type.tpl.php +++ b/Theme/Backend/contract-type.tpl.php @@ -24,7 +24,9 @@ echo $this->data['nav']->render(); ?>
-
+ >
getHtml('ContractType'); ?>
@@ -51,7 +53,8 @@ echo $this->data['nav']->render(); ?> data['l11nView']->render( $this->data['l11nValues'], [], - '{/api}contract/type/l11n?csrf={$CSRF}' + '{/api}contract/type/l11n?csrf={$CSRF}', + (string) $type->id ); ?>
diff --git a/Theme/Backend/contract-view.tpl.php b/Theme/Backend/contract-view.tpl.php index 35a4bbd..125cdfc 100644 --- a/Theme/Backend/contract-view.tpl.php +++ b/Theme/Backend/contract-view.tpl.php @@ -42,6 +42,10 @@ echo $this->data['nav']->render(); ?>
+ >
getHtml('Contract'); ?>
@@ -113,6 +117,7 @@ echo $this->data['nav']->render(); ?>
+
@@ -121,12 +126,12 @@ echo $this->data['nav']->render(); ?> request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>>
- data['media-upload']->render('contract-file', 'files', '', $contract->files); ?> + data['media-upload']->render('contract-file', 'files', '', $contract->files, '{/api}contract/file?csrf={$CSRF}', (string) $contract->id); ?>
request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
- data['note']->render('contract-note', 'notes', $contract->notes); ?> + data['note']->render('contract-note', 'notes', $contract->notes, '{/api}contract/note?csrf={$CSRF}', (string) $contract->id); ?>
request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>> diff --git a/tests/Controller/Api/ApiControllerAttributeTrait.php b/tests/Controller/Api/ApiControllerAttributeTrait.php index b81f993..ec8fbba 100644 --- a/tests/Controller/Api/ApiControllerAttributeTrait.php +++ b/tests/Controller/Api/ApiControllerAttributeTrait.php @@ -50,8 +50,8 @@ trait ApiControllerAttributeTrait $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', 'DE:2'); - $request->setData('type', '1'); + $request->setData('content', 'DE:2'); + $request->setData('ref', '1'); $request->setData('language', ISO639x1Enum::_DE); $this->attrModule->apiContractAttributeTypeL11nCreate($request, $response); diff --git a/tests/Controller/Api/ApiControllerContractTypeTrait.php b/tests/Controller/Api/ApiControllerContractTypeTrait.php index 6fbb9ac..7176d39 100644 --- a/tests/Controller/Api/ApiControllerContractTypeTrait.php +++ b/tests/Controller/Api/ApiControllerContractTypeTrait.php @@ -64,8 +64,8 @@ trait ApiControllerContractTypeTrait $request = new HttpRequest(); $request->header->account = 1; - $request->setData('title', 'Test'); - $request->setData('type', '1'); + $request->setData('content', 'Test'); + $request->setData('ref', '1'); $request->setData('language', ISO639x1Enum::_DE); $this->typeModule->apiContractTypeL11nCreate($request, $response);