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->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);
}

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(\?.*|$)$' => [
[
'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,
],
],
],
];

View File

@ -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;
}

View File

@ -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;

View File

@ -30,7 +30,9 @@ echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">
<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">
<table id="contractList" class="default sticky">
<thead>
@ -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';
}
}
?>
<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('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 if ($count === 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="col-xs-12 col-md-6">
<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-body">
<div class="form-group">
@ -51,7 +53,8 @@ echo $this->data['nav']->render(); ?>
<?= $this->data['l11nView']->render(
$this->data['l11nValues'],
[],
'{/api}contract/type/l11n?csrf={$CSRF}'
'{/api}contract/type/l11n?csrf={$CSRF}',
(string) $type->id
);
?>
</div>

View File

@ -42,6 +42,10 @@ echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12 col-md-6">
<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-body">
<div class="form-group">
@ -113,6 +117,7 @@ echo $this->data['nav']->render(); ?>
<div class="portlet-foot">
<input type="Submit" value="<?= $this->getHtml('Save', '0', '0'); ?>">
</div>
</form>
</section>
</div>
</div>
@ -121,12 +126,12 @@ echo $this->data['nav']->render(); ?>
<?php if (!$isNew) : ?>
<input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>>
<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>
<input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
<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>
<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->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);

View File

@ -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);