mirror of
https://github.com/Karaka-Management/oms-Tasks.git
synced 2026-02-16 14:48:41 +00:00
update
This commit is contained in:
parent
7ddc44fa1f
commit
854cad4c1d
43
Admin/Search.php
Normal file
43
Admin/Search.php
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Jingga
|
||||||
|
*
|
||||||
|
* PHP Version 8.1
|
||||||
|
*
|
||||||
|
* @package Modules\Tasks\Admin\Install
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link https://jingga.app
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Modules\Tasks\Admin\Install;
|
||||||
|
|
||||||
|
use phpOMS\Application\ApplicationAbstract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search class.
|
||||||
|
*
|
||||||
|
* @package Modules\Tasks\Admin\Install
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @link https://jingga.app
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
final class Search
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Install navigation providing
|
||||||
|
*
|
||||||
|
* @param ApplicationAbstract $app Application
|
||||||
|
* @param string $path Module path
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public static function install(ApplicationAbstract $app, string $path) : void
|
||||||
|
{
|
||||||
|
\Modules\Search\Admin\Installer::installExternal($app, ['path' => __DIR__ . '/SearchCommands.php']);
|
||||||
|
}
|
||||||
|
}
|
||||||
32
Admin/SearchCommands.php
Normal file
32
Admin/SearchCommands.php
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Jingga
|
||||||
|
*
|
||||||
|
* PHP Version 8.1
|
||||||
|
*
|
||||||
|
* @package Modules\Tasks
|
||||||
|
* @copyright Dennis Eichhorn
|
||||||
|
* @license OMS License 2.0
|
||||||
|
* @version 1.0.0
|
||||||
|
* @link https://jingga.app
|
||||||
|
*/
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use Modules\Tasks\Controller\SearchController;
|
||||||
|
use Modules\Tasks\Models\PermissionCategory;
|
||||||
|
use phpOMS\Account\PermissionType;
|
||||||
|
use phpOMS\Router\RouteVerb;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'^(?!:).+.*?' => [
|
||||||
|
[
|
||||||
|
'dest' => '\Modules\Tasks\Controller\SearchController:searchGeneral',
|
||||||
|
'verb' => RouteVerb::ANY,
|
||||||
|
'permission' => [
|
||||||
|
'module' => SearchController::NAME,
|
||||||
|
'type' => PermissionType::READ,
|
||||||
|
'state' => PermissionCategory::TASK,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
@ -194,8 +194,10 @@ final class ApiController extends Controller
|
||||||
/** @var \Modules\Admin\Models\Account $account */
|
/** @var \Modules\Admin\Models\Account $account */
|
||||||
$account = AccountMapper::get()->where('id', $request->header->account)->execute();
|
$account = AccountMapper::get()->where('id', $request->header->account)->execute();
|
||||||
|
|
||||||
|
$collection = null;
|
||||||
|
|
||||||
if (!empty($uploadedFiles = $request->files)) {
|
if (!empty($uploadedFiles = $request->files)) {
|
||||||
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
|
$uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles(
|
||||||
names: [],
|
names: [],
|
||||||
fileNames: [],
|
fileNames: [],
|
||||||
files: $uploadedFiles,
|
files: $uploadedFiles,
|
||||||
|
|
@ -205,7 +207,6 @@ final class ApiController extends Controller
|
||||||
pathSettings: PathSettings::FILE_PATH
|
pathSettings: PathSettings::FILE_PATH
|
||||||
);
|
);
|
||||||
|
|
||||||
$collection = null;
|
|
||||||
foreach ($uploaded as $media) {
|
foreach ($uploaded as $media) {
|
||||||
$this->createModelRelation(
|
$this->createModelRelation(
|
||||||
$request->header->account,
|
$request->header->account,
|
||||||
|
|
@ -261,54 +262,51 @@ final class ApiController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($mediaFiles = $request->getDataJson('media'))) {
|
$mediaFiles = $request->getDataJson('media');
|
||||||
$collection = null;
|
foreach ($mediaFiles as $file) {
|
||||||
|
/** @var \Modules\Media\Models\Media $media */
|
||||||
|
$media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute();
|
||||||
|
|
||||||
foreach ($mediaFiles as $file) {
|
$this->createModelRelation(
|
||||||
/** @var \Modules\Media\Models\Media $media */
|
$request->header->account,
|
||||||
$media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute();
|
$task->id,
|
||||||
|
$media->id,
|
||||||
|
TaskMapper::class,
|
||||||
|
'files',
|
||||||
|
'',
|
||||||
|
$request->getOrigin()
|
||||||
|
);
|
||||||
|
|
||||||
$this->createModelRelation(
|
$ref = new Reference();
|
||||||
$request->header->account,
|
$ref->name = $media->name;
|
||||||
$task->id,
|
$ref->source = new NullMedia($media->id);
|
||||||
$media->id,
|
$ref->createdBy = new NullAccount($request->header->account);
|
||||||
TaskMapper::class,
|
$ref->setVirtualPath($path);
|
||||||
'files',
|
|
||||||
'',
|
|
||||||
$request->getOrigin()
|
|
||||||
);
|
|
||||||
|
|
||||||
$ref = new Reference();
|
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
|
||||||
$ref->name = $media->name;
|
|
||||||
$ref->source = new NullMedia($media->id);
|
|
||||||
$ref->createdBy = new NullAccount($request->header->account);
|
|
||||||
$ref->setVirtualPath($path);
|
|
||||||
|
|
||||||
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
|
if ($collection === null) {
|
||||||
|
/** @var \Modules\Media\Models\Collection $collection */
|
||||||
|
$collection = MediaMapper::getParentCollection($path)->limit(1)->execute();
|
||||||
|
|
||||||
if ($collection === null) {
|
if ($collection->id === 0) {
|
||||||
/** @var \Modules\Media\Models\Collection $collection */
|
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
||||||
$collection = MediaMapper::getParentCollection($path)->limit(1)->execute();
|
$path,
|
||||||
|
$request->header->account,
|
||||||
if ($collection->id === 0) {
|
__DIR__ . '/../../../Modules/Media/Files' . $path
|
||||||
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
);
|
||||||
$path,
|
|
||||||
$request->header->account,
|
|
||||||
__DIR__ . '/../../../Modules/Media/Files' . $path
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->createModelRelation(
|
|
||||||
$request->header->account,
|
|
||||||
$collection->id,
|
|
||||||
$ref->id,
|
|
||||||
CollectionMapper::class,
|
|
||||||
'sources',
|
|
||||||
'',
|
|
||||||
$request->getOrigin()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->createModelRelation(
|
||||||
|
$request->header->account,
|
||||||
|
$collection->id,
|
||||||
|
$ref->id,
|
||||||
|
CollectionMapper::class,
|
||||||
|
'sources',
|
||||||
|
'',
|
||||||
|
$request->getOrigin()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -538,8 +536,10 @@ final class ApiController extends Controller
|
||||||
/** @var \Modules\Admin\Models\Account $account */
|
/** @var \Modules\Admin\Models\Account $account */
|
||||||
$account = AccountMapper::get()->where('id', $request->header->account)->execute();
|
$account = AccountMapper::get()->where('id', $request->header->account)->execute();
|
||||||
|
|
||||||
|
$collection = null;
|
||||||
|
|
||||||
if (!empty($uploadedFiles = $request->files)) {
|
if (!empty($uploadedFiles = $request->files)) {
|
||||||
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
|
$uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles(
|
||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
$uploadedFiles,
|
$uploadedFiles,
|
||||||
|
|
@ -548,7 +548,6 @@ final class ApiController extends Controller
|
||||||
$path,
|
$path,
|
||||||
);
|
);
|
||||||
|
|
||||||
$collection = null;
|
|
||||||
foreach ($uploaded as $media) {
|
foreach ($uploaded as $media) {
|
||||||
$this->createModelRelation(
|
$this->createModelRelation(
|
||||||
$request->header->account,
|
$request->header->account,
|
||||||
|
|
@ -574,16 +573,14 @@ final class ApiController extends Controller
|
||||||
|
|
||||||
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
|
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
|
||||||
|
|
||||||
if ($collection === null) {
|
$collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
||||||
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
$accountPath,
|
||||||
$accountPath,
|
$request->header->account,
|
||||||
$request->header->account,
|
__DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id
|
||||||
__DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id
|
. '/Tasks/' . $task->createdAt->format('Y') . '/'
|
||||||
. '/Tasks/' . $task->createdAt->format('Y') . '/'
|
. $task->createdAt->format('m') . '/'
|
||||||
. $task->createdAt->format('m') . '/'
|
. $task->id
|
||||||
. $task->id
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->createModelRelation(
|
$this->createModelRelation(
|
||||||
$request->header->account,
|
$request->header->account,
|
||||||
|
|
@ -597,49 +594,44 @@ final class ApiController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($mediaFiles = $request->getDataJson('media'))) {
|
$mediaFiles = $request->getDataJson('media');
|
||||||
$collection = null;
|
foreach ($mediaFiles as $file) {
|
||||||
|
/** @var \Modules\Media\Models\Media $media */
|
||||||
|
$media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute();
|
||||||
|
|
||||||
foreach ($mediaFiles as $file) {
|
$this->createModelRelation(
|
||||||
/** @var \Modules\Media\Models\Media $media */
|
$request->header->account,
|
||||||
$media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute();
|
$element->id,
|
||||||
|
$media->id,
|
||||||
|
TaskElementMapper::class,
|
||||||
|
'files',
|
||||||
|
'',
|
||||||
|
$request->getOrigin()
|
||||||
|
);
|
||||||
|
|
||||||
$this->createModelRelation(
|
$ref = new Reference();
|
||||||
$request->header->account,
|
$ref->name = $media->name;
|
||||||
$element->id,
|
$ref->source = new NullMedia($media->id);
|
||||||
$media->id,
|
$ref->createdBy = new NullAccount($request->header->account);
|
||||||
TaskElementMapper::class,
|
$ref->setVirtualPath($path);
|
||||||
'files',
|
|
||||||
'',
|
|
||||||
$request->getOrigin()
|
|
||||||
);
|
|
||||||
|
|
||||||
$ref = new Reference();
|
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
|
||||||
$ref->name = $media->name;
|
|
||||||
$ref->source = new NullMedia($media->id);
|
|
||||||
$ref->createdBy = new NullAccount($request->header->account);
|
|
||||||
$ref->setVirtualPath($path);
|
|
||||||
|
|
||||||
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
|
$collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
||||||
|
$path,
|
||||||
|
$request->header->account,
|
||||||
|
__DIR__ . '/../../../Modules/Media/Files' . $path
|
||||||
|
);
|
||||||
|
|
||||||
if ($collection === null) {
|
$this->createModelRelation(
|
||||||
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
$request->header->account,
|
||||||
$path,
|
$collection->id,
|
||||||
$request->header->account,
|
$ref->id,
|
||||||
__DIR__ . '/../../../Modules/Media/Files' . $path
|
CollectionMapper::class,
|
||||||
);
|
'sources',
|
||||||
}
|
'',
|
||||||
|
$request->getOrigin()
|
||||||
$this->createModelRelation(
|
);
|
||||||
$request->header->account,
|
|
||||||
$collection->id,
|
|
||||||
$ref->id,
|
|
||||||
CollectionMapper::class,
|
|
||||||
'sources',
|
|
||||||
'',
|
|
||||||
$request->getOrigin()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Modules\Tasks\Controller;
|
namespace Modules\Tasks\Controller;
|
||||||
|
|
||||||
|
use Modules\Tasks\Models\TaskMapper;
|
||||||
|
use phpOMS\DataStorage\Database\Query\OrderType;
|
||||||
use phpOMS\Message\RequestAbstract;
|
use phpOMS\Message\RequestAbstract;
|
||||||
use phpOMS\Message\ResponseAbstract;
|
use phpOMS\Message\ResponseAbstract;
|
||||||
use phpOMS\System\MimeType;
|
use phpOMS\System\MimeType;
|
||||||
|
|
@ -41,16 +43,57 @@ final class SearchController extends Controller
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public function searchTag(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
public function searchGeneral(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||||
{
|
{
|
||||||
// join tags with tag l11n
|
// @performance Guaranteed <= 1 hasMany selects should behave like a join instead of creating sub-queries
|
||||||
// join tags with tasks
|
// https://github.com/Karaka-Management/phpOMS/issues/363
|
||||||
// return where tag l11n matches X
|
|
||||||
|
|
||||||
$tags = [];
|
// @bug limit(1, 'taskElements') applies to all taskElements not just taskElements per task!
|
||||||
|
// https://github.com/Karaka-Management/phpOMS/issues/362
|
||||||
|
|
||||||
|
/** @var \Modules\Tasks\Models\Task[] $tasks */
|
||||||
|
$tasks = TaskMapper::getAll()
|
||||||
|
->with('tags')
|
||||||
|
->with('tags/title')
|
||||||
|
->with('taskElements')
|
||||||
|
->where('title', '%' . ($request->getDataString('search') ?? '') . '%', 'LIKE')
|
||||||
|
->where('tags/title/language', $response->header->l11n->language)
|
||||||
|
->sort('createdAt', OrderType::DESC)
|
||||||
|
->sort('taskElements/createdAt', OrderType::ASC)
|
||||||
|
->limit(25)
|
||||||
|
//->limit(1, 'taskElements')
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$results = [];
|
||||||
|
$count = 0;
|
||||||
|
|
||||||
|
foreach ($tasks as $task) {
|
||||||
|
if ($count >= 8) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @performance Check if this can be combined with the above getAll()
|
||||||
|
// https://github.com/Karaka-Management/oms-Tasks/issues/41
|
||||||
|
if (!TaskMapper::hasReadingPermission($request->header->account, $task->id)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
++$count;
|
||||||
|
|
||||||
|
$results[] = [
|
||||||
|
'title' => $task->title,
|
||||||
|
'summary' => \substr(\trim($task->description), 0, 500),
|
||||||
|
'link' => '{/base}/task/view?id=' . $task->id,
|
||||||
|
'account' => '',
|
||||||
|
'createdAt' => $task->createdAt,
|
||||||
|
'image' => '',
|
||||||
|
'tags' => $task->tags,
|
||||||
|
'type' => 'list_links',
|
||||||
|
'module' => 'Tasks',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$response->header->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
|
$response->header->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
|
||||||
|
$response->add($request->uri->__toString(), $results);
|
||||||
$response->set($request->uri->__toString(), $tags);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6
Models/Elastic/Task.json
Normal file
6
Models/Elastic/Task.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"id": "{id}",
|
||||||
|
"title": "{title}",
|
||||||
|
"content": "{content}",
|
||||||
|
"tags": ["{tags}"]
|
||||||
|
}
|
||||||
|
|
@ -19,7 +19,6 @@ use Modules\Calendar\Models\ScheduleMapper;
|
||||||
use Modules\Media\Models\MediaMapper;
|
use Modules\Media\Models\MediaMapper;
|
||||||
use Modules\Tag\Models\TagMapper;
|
use Modules\Tag\Models\TagMapper;
|
||||||
use Modules\Tasks\Models\Attribute\TaskAttributeMapper;
|
use Modules\Tasks\Models\Attribute\TaskAttributeMapper;
|
||||||
use phpOMS\DataStorage\Database\Mapper\DataMapperAbstract;
|
|
||||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||||
use phpOMS\DataStorage\Database\Mapper\ReadMapper;
|
use phpOMS\DataStorage\Database\Mapper\ReadMapper;
|
||||||
use phpOMS\DataStorage\Database\Query\Builder;
|
use phpOMS\DataStorage\Database\Query\Builder;
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ return ['Tasks' => [
|
||||||
'Completion' => 'Abgeschlossen',
|
'Completion' => 'Abgeschlossen',
|
||||||
'Created' => 'Erstellt',
|
'Created' => 'Erstellt',
|
||||||
'Creator' => 'Ersteller',
|
'Creator' => 'Ersteller',
|
||||||
|
'Advanced' => 'Fortgeschritten',
|
||||||
'Due' => 'Fällig',
|
'Due' => 'Fällig',
|
||||||
'Due/Priority' => 'Fällig / Priorität',
|
'Due/Priority' => 'Fällig / Priorität',
|
||||||
'For' => 'Für',
|
'For' => 'Für',
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ return ['Tasks' => [
|
||||||
'Completion' => 'Completion',
|
'Completion' => 'Completion',
|
||||||
'Created' => 'Created',
|
'Created' => 'Created',
|
||||||
'Creator' => 'Creator',
|
'Creator' => 'Creator',
|
||||||
|
'Advanced' => 'Advanced',
|
||||||
'Due' => 'Due',
|
'Due' => 'Due',
|
||||||
'Due/Priority' => 'Due/Priority',
|
'Due/Priority' => 'Due/Priority',
|
||||||
'For' => 'For',
|
'For' => 'For',
|
||||||
|
|
|
||||||
|
|
@ -376,28 +376,27 @@ echo $this->data['nav']->render(); ?>
|
||||||
<div class="more-container wf-100">
|
<div class="more-container wf-100">
|
||||||
<input id="more-customer-sales" type="checkbox" name="more-container">
|
<input id="more-customer-sales" type="checkbox" name="more-container">
|
||||||
<label for="more-customer-sales">
|
<label for="more-customer-sales">
|
||||||
<span>Advanced</span>
|
<span><?= $this->getHtml('Advanced'); ?></span>
|
||||||
<i class="g-icon expand">chevron_right</i>
|
<i class="g-icon expand">chevron_right</i>
|
||||||
</label>
|
</label>
|
||||||
<div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="iPriority"><?= $this->getHtml('Priority'); ?></label>
|
|
||||||
<select id="iPriority" name="priority">
|
|
||||||
<option value="<?= TaskPriority::NONE; ?>"<?= $task->priority === TaskPriority::NONE ? ' selected' : '';?>><?= $this->getHtml('P0'); ?>
|
|
||||||
<option value="<?= TaskPriority::VLOW; ?>"<?= $task->priority === TaskPriority::VLOW ? ' selected' : '';?>><?= $this->getHtml('P1'); ?>
|
|
||||||
<option value="<?= TaskPriority::LOW; ?>"<?= $task->priority === TaskPriority::LOW ? ' selected' : '';?>><?= $this->getHtml('P2'); ?>
|
|
||||||
<option value="<?= TaskPriority::MEDIUM; ?>"<?= $task->priority === TaskPriority::MEDIUM ? ' selected' : '';?>><?= $this->getHtml('P3'); ?>
|
|
||||||
<option value="<?= TaskPriority::HIGH; ?>"<?= $task->priority === TaskPriority::HIGH ? ' selected' : '';?>><?= $this->getHtml('P4'); ?>
|
|
||||||
<option value="<?= TaskPriority::VHIGH; ?>"<?= $task->priority === TaskPriority::VHIGH ? ' selected' : '';?>><?= $this->getHtml('P5'); ?>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="iDue"><?= $this->getHtml('Due'); ?></label>
|
<label for="iPriority"><?= $this->getHtml('Priority'); ?></label>
|
||||||
<input type="datetime-local" id="iDue" name="due" value="<?= $this->printHtml(
|
<select id="iPriority" name="priority">
|
||||||
empty($elements) ? $task->due->format('Y-m-d\TH:i:s') : \end($elements)->due->format('Y-m-d\TH:i:s')
|
<option value="<?= TaskPriority::NONE; ?>"<?= $task->priority === TaskPriority::NONE ? ' selected' : '';?>><?= $this->getHtml('P0'); ?>
|
||||||
); ?>">
|
<option value="<?= TaskPriority::VLOW; ?>"<?= $task->priority === TaskPriority::VLOW ? ' selected' : '';?>><?= $this->getHtml('P1'); ?>
|
||||||
</div>
|
<option value="<?= TaskPriority::LOW; ?>"<?= $task->priority === TaskPriority::LOW ? ' selected' : '';?>><?= $this->getHtml('P2'); ?>
|
||||||
|
<option value="<?= TaskPriority::MEDIUM; ?>"<?= $task->priority === TaskPriority::MEDIUM ? ' selected' : '';?>><?= $this->getHtml('P3'); ?>
|
||||||
|
<option value="<?= TaskPriority::HIGH; ?>"<?= $task->priority === TaskPriority::HIGH ? ' selected' : '';?>><?= $this->getHtml('P4'); ?>
|
||||||
|
<option value="<?= TaskPriority::VHIGH; ?>"<?= $task->priority === TaskPriority::VHIGH ? ' selected' : '';?>><?= $this->getHtml('P5'); ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="iDue"><?= $this->getHtml('Due'); ?></label>
|
||||||
|
<input type="datetime-local" id="iDue" name="due" value="<?= $this->printHtml(
|
||||||
|
empty($elements) ? $task->due->format('Y-m-d\TH:i:s') : \end($elements)->due->format('Y-m-d\TH:i:s')
|
||||||
|
); ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user