bug fixes
Some checks failed
Image optimization / general_image_workflow (push) Has been cancelled
CI / general_module_workflow_php (push) Has been cancelled
CI / general_module_workflow_js (push) Has been cancelled

This commit is contained in:
Dennis Eichhorn 2024-10-11 19:17:40 +00:00
parent 72c2e76ccd
commit b6dbecac42
9 changed files with 153 additions and 34 deletions

View File

@ -84,7 +84,7 @@ final class Installer extends InstallerAbstract
$request->header->account = 1; $request->header->account = 1;
$request->setData('name', $type['name'] ?? ''); $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'); $request->setData('language', \array_keys($type['l11n'])[0] ?? 'en');
$module->apiContractTypeCreate($request, $response); $module->apiContractTypeCreate($request, $response);
@ -111,9 +111,9 @@ final class Installer extends InstallerAbstract
$request = new HttpRequest(); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', $l11n); $request->setData('content', $l11n);
$request->setData('language', $language); $request->setData('language', $language);
$request->setData('type', $billType['id']); $request->setData('ref', $billType['id']);
$module->apiContractTypeL11nCreate($request, $response); $module->apiContractTypeL11nCreate($request, $response);
} }

View File

@ -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(\?.*|$)$' => [ '^.*/contract(\?.*|$)$' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\ApiController:apiContractCreate', '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(\?.*$|$)' => [ '^.*/contract/attribute(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\ApiAttributeController:apiContractAttributeCreate', '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,
],
],
],
]; ];

View File

@ -74,7 +74,7 @@ final class ApiContractTypeController extends Controller
{ {
$contractType = new BaseStringL11nType(); $contractType = new BaseStringL11nType();
$contractType->setL11n( $contractType->setL11n(
$request->getDataString('title') ?? '', $request->getDataString('content') ?? '',
ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN
); );
$contractType->title = $request->getDataString('name') ?? ''; $contractType->title = $request->getDataString('name') ?? '';
@ -94,7 +94,7 @@ final class ApiContractTypeController extends Controller
private function validateContractTypeCreate(RequestAbstract $request) : array private function validateContractTypeCreate(RequestAbstract $request) : array
{ {
$val = []; $val = [];
if (($val['title'] = !$request->hasData('title')) if (($val['content'] = !$request->hasData('content'))
) { ) {
return $val; return $val;
} }
@ -141,9 +141,9 @@ final class ApiContractTypeController extends Controller
private function createContractTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n private function createContractTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{ {
$contractTypeL11n = new 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->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language;
$contractTypeL11n->content = $request->getDataString('title') ?? ''; $contractTypeL11n->content = $request->getDataString('content') ?? '';
return $contractTypeL11n; return $contractTypeL11n;
} }
@ -160,8 +160,8 @@ final class ApiContractTypeController extends Controller
private function validateContractTypeL11nCreate(RequestAbstract $request) : array private function validateContractTypeL11nCreate(RequestAbstract $request) : array
{ {
$val = []; $val = [];
if (($val['title'] = !$request->hasData('title')) if (($val['content'] = !$request->hasData('content'))
|| ($val['type'] = !$request->hasData('type')) || ($val['ref'] = !$request->hasData('ref'))
) { ) {
return $val; return $val;
} }
@ -329,7 +329,7 @@ final class ApiContractTypeController extends Controller
public function updateContractTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n public function updateContractTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n
{ {
$new->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $new->language; $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; return $new;
} }

View File

@ -86,7 +86,6 @@ final class ApiController extends Controller
{ {
$val = []; $val = [];
if (($val['title'] = !$request->hasData('title')) if (($val['title'] = !$request->hasData('title'))
|| ($val['duration'] = !$request->hasData('duration'))
|| ($val['type'] = !$request->hasData('type')) || ($val['type'] = !$request->hasData('type'))
) { ) {
return $val; return $val;
@ -161,7 +160,7 @@ final class ApiController extends Controller
/** @var \Modules\ContractManagement\Models\Contract */ /** @var \Modules\ContractManagement\Models\Contract */
$contract = ContractMapper::get() $contract = ContractMapper::get()
->where('id', $request->getDataInt('contract')) ->where('id', $request->getDataInt('ref'))
->execute(); ->execute();
$path = $this->createContractDir($contract); $path = $this->createContractDir($contract);
@ -337,7 +336,7 @@ final class ApiController extends Controller
return; 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); $this->app->moduleManager->get('Editor', 'Api')->apiEditorCreate($request, $response, $data);
if ($response->header->status !== RequestStatusCode::R_200) { if ($response->header->status !== RequestStatusCode::R_200) {
@ -350,7 +349,7 @@ final class ApiController extends Controller
} }
$model = $responseData['response']; $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 private function validateNoteCreate(RequestAbstract $request) : array
{ {
$val = []; $val = [];
if (($val['id'] = !$request->hasData('id')) if (($val['ref'] = !$request->hasData('ref'))
) { ) {
return $val; return $val;
} }
@ -392,7 +391,12 @@ final class ApiController extends Controller
if (!$this->app->accountManager->get($accountId)->hasPermission( if (!$this->app->accountManager->get($accountId)->hasPermission(
PermissionType::MODIFY, $this->app->unitId, $this->app->appId, self::NAME, PermissionCategory::NOTE, $request->getDataInt('id')) 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; $response->header->status = RequestStatusCode::R_403;
return; return;

View File

@ -30,7 +30,9 @@ echo $this->data['nav']->render(); ?>
<div class="row"> <div class="row">
<div class="col-xs-12"> <div class="col-xs-12">
<section class="portlet"> <section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Contracts'); ?><i class="g-icon download btn end-xs">download</i></div> <div class="portlet-head"><?= $this->getHtml('Contracts'); ?>
<a class="button end-xs save" href="<?= UriFactory::build('{/base}/contract/create'); ?>"><?= $this->getHtml('New', '0', '0'); ?></a>
</div>
<div class="slider"> <div class="slider">
<table id="contractList" class="default sticky"> <table id="contractList" class="default sticky">
<thead> <thead>
@ -79,20 +81,25 @@ echo $this->data['nav']->render(); ?>
$url = UriFactory::build('{/base}/contract/view?{?}&id=' . $value->id); $url = UriFactory::build('{/base}/contract/view?{?}&id=' . $value->id);
$type = 'ok'; $type = 'ok';
if (($value->end->getTimestamp() < $now->getTimestamp() && $value->end->getTimestamp() + 7776000 > $now->getTimestamp()) if ($value->end !== null) {
|| ($value->end->getTimestamp() > $now->getTimestamp() && $value->end->getTimestamp() - 7776000 < $now->getTimestamp()) 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 = 'error';
$type = 'info'; } elseif ($value->end->getTimestamp() < $now->getTimestamp()) {
} elseif ($value->end->getTimestamp() + 7776000 < $now->getTimestamp()) { $type = 'info';
$type = 'warning'; } elseif ($value->end->getTimestamp() + 7776000 < $now->getTimestamp()) {
$type = 'warning';
}
} }
?> ?>
<tr tabindex="0" data-href="<?= $url; ?>"> <tr tabindex="0" data-href="<?= $url; ?>">
<td data-label="<?= $this->getHtml('Title'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->title); ?></a> <td data-label="<?= $this->getHtml('Title'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->title); ?></a>
<td data-label="<?= $this->getHtml('Account'); ?>"><a class="content" href="<?= UriFactory::build('{/base}/profile/view?{?}&for=' . $value->account->id); ?>"><?= $this->printHtml($value->account->name1); ?> <?= $this->printHtml($value->account->name2); ?></a> <td data-label="<?= $this->getHtml('Account'); ?>"><a class="content" href="<?= UriFactory::build('{/base}/profile/view?{?}&for=' . $value->account->id); ?>"><?= $this->printHtml($value->account->name1); ?> <?= $this->printHtml($value->account->name2); ?></a>
<td data-label="<?= $this->getHtml('End'); ?>"><a href="<?= $url; ?>"><span class="tag <?= $type; ?>"><?= $value->end !== null ? $value->end->format('Y-m-d') : ''; ?></span></a> <td data-label="<?= $this->getHtml('End'); ?>">
<?php if ($value->end !== null) : ?>
<a href="<?= $url; ?>"><span class="tag <?= $type; ?>"><?= $value->end !== null ? $value->end->format('Y-m-d') : ''; ?></span></a>
<?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
<?php if ($count === 0) : ?> <?php if ($count === 0) : ?>
<tr><td colspan="3" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?> <tr><td colspan="3" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>

View File

@ -24,7 +24,9 @@ echo $this->data['nav']->render(); ?>
<div class="row"> <div class="row">
<div class="col-xs-12 col-md-6"> <div class="col-xs-12 col-md-6">
<section class="portlet"> <section class="portlet">
<form id="materialForm" method="<?= $isNew ? 'PUT' : 'POST'; ?>" action="<?= UriFactory::build('{/api}contract/type?csrf={$CSRF}'); ?>"> <form id="materialForm" method="<?= $isNew ? 'PUT' : 'POST'; ?>"
action="<?= UriFactory::build('{/api}contract/type?csrf={$CSRF}'); ?>"
<?= $isNew ? 'data-redirect="' . UriFactory::build('{/base}/contract/type/view') . '?id={/0/response/id}"' : ''; ?>>
<div class="portlet-head"><?= $this->getHtml('ContractType'); ?></div> <div class="portlet-head"><?= $this->getHtml('ContractType'); ?></div>
<div class="portlet-body"> <div class="portlet-body">
<div class="form-group"> <div class="form-group">
@ -51,7 +53,8 @@ echo $this->data['nav']->render(); ?>
<?= $this->data['l11nView']->render( <?= $this->data['l11nView']->render(
$this->data['l11nValues'], $this->data['l11nValues'],
[], [],
'{/api}contract/type/l11n?csrf={$CSRF}' '{/api}contract/type/l11n?csrf={$CSRF}',
(string) $type->id
); );
?> ?>
</div> </div>

View File

@ -42,6 +42,10 @@ echo $this->data['nav']->render(); ?>
<div class="row"> <div class="row">
<div class="col-xs-12 col-md-6"> <div class="col-xs-12 col-md-6">
<section class="portlet"> <section class="portlet">
<form id="iContractForm"
method="<?= $isNew ? 'PUT' : 'POST'; ?>"
action="<?= UriFactory::build('{/api}contract?csrf={$CSRF}'); ?>"
<?= $isNew ? 'data-redirect="' . UriFactory::build('{/base}/contract/view') . '?id={/0/response/id}"' : ''; ?>>
<div class="portlet-head"><?= $this->getHtml('Contract'); ?></div> <div class="portlet-head"><?= $this->getHtml('Contract'); ?></div>
<div class="portlet-body"> <div class="portlet-body">
<div class="form-group"> <div class="form-group">
@ -113,6 +117,7 @@ echo $this->data['nav']->render(); ?>
<div class="portlet-foot"> <div class="portlet-foot">
<input type="Submit" value="<?= $this->getHtml('Save', '0', '0'); ?>"> <input type="Submit" value="<?= $this->getHtml('Save', '0', '0'); ?>">
</div> </div>
</form>
</section> </section>
</div> </div>
</div> </div>
@ -121,12 +126,12 @@ echo $this->data['nav']->render(); ?>
<?php if (!$isNew) : ?> <?php if (!$isNew) : ?>
<input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>> <input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>>
<div class="tab col-simple"> <div class="tab col-simple">
<?= $this->data['media-upload']->render('contract-file', 'files', '', $contract->files); ?> <?= $this->data['media-upload']->render('contract-file', 'files', '', $contract->files, '{/api}contract/file?csrf={$CSRF}', (string) $contract->id); ?>
</div> </div>
<input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>> <input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
<div class="tab col-simple"> <div class="tab col-simple">
<?= $this->data['note']->render('contract-note', 'notes', $contract->notes); ?> <?= $this->data['note']->render('contract-note', 'notes', $contract->notes, '{/api}contract/note?csrf={$CSRF}', (string) $contract->id); ?>
</div> </div>
<input type="radio" id="c-tab-4" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>> <input type="radio" id="c-tab-4" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>>

View File

@ -50,8 +50,8 @@ trait ApiControllerAttributeTrait
$request = new HttpRequest(); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'DE:2'); $request->setData('content', 'DE:2');
$request->setData('type', '1'); $request->setData('ref', '1');
$request->setData('language', ISO639x1Enum::_DE); $request->setData('language', ISO639x1Enum::_DE);
$this->attrModule->apiContractAttributeTypeL11nCreate($request, $response); $this->attrModule->apiContractAttributeTypeL11nCreate($request, $response);

View File

@ -64,8 +64,8 @@ trait ApiControllerContractTypeTrait
$request = new HttpRequest(); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'Test'); $request->setData('content', 'Test');
$request->setData('type', '1'); $request->setData('ref', '1');
$request->setData('language', ISO639x1Enum::_DE); $request->setData('language', ISO639x1Enum::_DE);
$this->typeModule->apiContractTypeL11nCreate($request, $response); $this->typeModule->apiContractTypeL11nCreate($request, $response);