mirror of
https://github.com/Karaka-Management/oms-Tasks.git
synced 2026-02-06 18:28:40 +00:00
impl. tags and fix create bugs
This commit is contained in:
parent
50c0da8c93
commit
8b9050cb56
|
|
@ -162,7 +162,8 @@
|
|||
"task_element_due": {
|
||||
"name": "task_element_due",
|
||||
"type": "DATETIME",
|
||||
"null": false
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"task_element_created_at": {
|
||||
"name": "task_element_created_at",
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ use phpOMS\Message\RequestAbstract;
|
|||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\Model\Message\FormValidation;
|
||||
use phpOMS\Utils\Parser\Markdown\Markdown;
|
||||
use Modules\Tag\Models\NullTag;
|
||||
use phpOMS\Message\Http\HttpResponse;
|
||||
|
||||
/**
|
||||
* Api controller for the tasks module.
|
||||
|
|
@ -69,7 +71,6 @@ final class ApiController extends Controller
|
|||
$val = [];
|
||||
if (($val['title'] = empty($request->getData('title')))
|
||||
|| ($val['plain'] = empty($request->getData('plain')))
|
||||
|| ($val['due'] = !((bool) \strtotime((string) $request->getData('due'))))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
|
@ -120,10 +121,30 @@ final class ApiController extends Controller
|
|||
$task->setDescription(Markdown::parse((string) ($request->getData('plain') ?? '')));
|
||||
$task->setDescriptionRaw((string) ($request->getData('plain') ?? ''));
|
||||
$task->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
|
||||
$task->setDue(new \DateTime($request->getData('due')));
|
||||
$task->setStatus(TaskStatus::OPEN);
|
||||
$task->setType(TaskType::SINGLE);
|
||||
$task->setPriority((int) $request->getData('priority'));
|
||||
|
||||
if (empty($request->getData('priority'))) {
|
||||
$task->setDue(empty($request->getData('due')) ? null : new \DateTime($request->getData('due')));
|
||||
} else {
|
||||
$task->setPriority((int) $request->getData('priority'));
|
||||
}
|
||||
|
||||
if (!empty($tags = $request->getDataJson('tags'))) {
|
||||
foreach ($tags as $tag) {
|
||||
if (!isset($tag['id'])) {
|
||||
$request->setData('title', $tag['title'], true);
|
||||
$request->setData('color', $tag['color'], true);
|
||||
$request->setData('language', $tag['language'], true);
|
||||
|
||||
$internalResponse = new HttpResponse();
|
||||
$this->app->moduleManager->get('Tag')->apiTagCreate($request, $internalResponse, null);
|
||||
$task->addTag($internalResponse->get($request->getUri()->__toString())['response']);
|
||||
} else {
|
||||
$task->addTag(new NullTag((int) $tag['id']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$element = new TaskElement();
|
||||
$element->addTo(new NullAccount((int) ($request->getData('forward') ?? $request->getHeader()->getAccount())));
|
||||
|
|
@ -250,10 +271,11 @@ final class ApiController extends Controller
|
|||
* Validate that the user is allowed to create a task element for a specific task
|
||||
*/
|
||||
|
||||
$element = $this->createTaskElementFromRequest($request);
|
||||
$task = TaskMapper::get($element->getTask());
|
||||
$task = TaskMapper::get((int) ($request->getData('task')));
|
||||
$element = $this->createTaskElementFromRequest($request, $task);
|
||||
$task->setStatus($element->getStatus());
|
||||
$task->setPriority($element->getPriority());
|
||||
$task->setDue($element->getDue());
|
||||
|
||||
$this->createModel($request->getHeader()->getAccount(), $element, TaskElementMapper::class, 'taskelement', $request->getOrigin());
|
||||
$this->updateModel($request->getHeader()->getAccount(), $task, $task, TaskMapper::class, 'task', $request->getOrigin());
|
||||
|
|
@ -264,19 +286,20 @@ final class ApiController extends Controller
|
|||
* Method to create task element from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param Task $task Task
|
||||
*
|
||||
* @return TaskElement Returns the task created from the request
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function createTaskElementFromRequest(RequestAbstract $request) : TaskElement
|
||||
private function createTaskElementFromRequest(RequestAbstract $request, Task $task) : TaskElement
|
||||
{
|
||||
$element = new TaskElement();
|
||||
$element->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
|
||||
$element->setDue(new \DateTime((string) ($request->getData('due') ?? 'now')));
|
||||
$element->setPriority((int) $request->getData('priority'));
|
||||
$element->setDue(!empty($request->getData('due')) ? new \DateTime((string) ($request->getData('due'))) : $task->getDue());
|
||||
$element->setPriority((int) ($request->getData('priority') ?? $task->getPriority()));
|
||||
$element->setStatus((int) ($request->getData('status')));
|
||||
$element->setTask((int) ($request->getData('task')));
|
||||
$element->setTask($task->getId());
|
||||
$element->setDescription(Markdown::parse((string) ($request->getData('plain') ?? '')));
|
||||
$element->setDescriptionRaw((string) ($request->getData('plain') ?? ''));
|
||||
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ final class BackendController extends Controller implements DashboardElementInte
|
|||
$head = $response->get('Content')->getData('head');
|
||||
$head->addAsset(AssetType::CSS, 'Modules/Tasks/Theme/Backend/css/styles.css');
|
||||
|
||||
$task = TaskMapper::get((int) $request->getData('id'), RelationType::ALL, 4);
|
||||
$task = TaskMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())::get((int) $request->getData('id'), RelationType::ALL, 4);
|
||||
$accountId = $request->getHeader()->getAccount();
|
||||
|
||||
if (!($task->getCreatedBy()->getId() === $accountId
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace Modules\Tasks\Models;
|
|||
use Modules\Admin\Models\AccountMapper;
|
||||
use Modules\Calendar\Models\ScheduleMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Tag\Models\TagMapper;
|
||||
use phpOMS\DataStorage\Database\DataMapperAbstract;
|
||||
use phpOMS\DataStorage\Database\Query\Builder;
|
||||
use phpOMS\DataStorage\Database\Query\Where;
|
||||
|
|
@ -76,7 +77,7 @@ final class TaskMapper extends DataMapperAbstract
|
|||
'self' => 'task_media_src',
|
||||
],
|
||||
'tags' => [
|
||||
'mapper' => MediaMapper::class,
|
||||
'mapper' => TagMapper::class,
|
||||
'table' => 'task_tag',
|
||||
'external' => 'task_tag_dst',
|
||||
'self' => 'task_tag_src',
|
||||
|
|
|
|||
|
|
@ -96,6 +96,10 @@ echo $this->getData('nav')->render(); ?>
|
|||
<?php else : ?>
|
||||
<?= $this->getHtml('Priority'); ?>: <?= $this->getHtml('P' . $task->getPriority()); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php $tags = $task->getTags(); foreach ($tags as $tag) : ?>
|
||||
<span class="tag" style="background: <?= $this->printHtml($tag->getColor()); ?>"><?= $this->printHtml($tag->getTitle()); ?></span>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-0 end-xs plain-grid">
|
||||
|
|
@ -281,14 +285,14 @@ echo $this->getData('nav')->render(); ?>
|
|||
<?php
|
||||
$tos = $element->getTo();
|
||||
if (\count($tos) > 1
|
||||
|| (\count($tos) > 0 && $tos[0]->getRelation()->getId() !== $task->getCreatedBy()->getId())
|
||||
|| (!empty($tos) && $tos[0]->getRelation()->getId() !== $element->getCreatedBy()->getId())
|
||||
) : ?>
|
||||
<section class="box wf-100">
|
||||
<div class="inner">
|
||||
<?= $this->printHtml($element->getCreatedBy()->getName1()); ?> <?= $this->getHtml('forwarded_to'); ?>
|
||||
<?php foreach ($tos as $to) : ?>
|
||||
<?php if ($to instanceof AccountRelation) : ?>
|
||||
<a href="<?= phpOMS\Uri\UriFactory::build('{/prefix}profile/single?{?}&for=' . $to->getRelation()->getId()); ?>"><?= $this->printHtml($to->getRelation()->getName1()); ?></a>
|
||||
<a href="<?= UriFactory::build('{/prefix}profile/single?{?}&for=' . $to->getRelation()->getId()); ?>"><?= $this->printHtml($to->getRelation()->getName1()); ?></a>
|
||||
<?php elseif ($to instanceof GroupRelation) : ?>
|
||||
<?= $this->printHtml($to->getRelation()->getName()); ?>
|
||||
<?php endif; ?>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user