From d568109a059b080c3cbbd411c3fb699b2e602194 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 8 Sep 2017 10:50:27 +0200 Subject: [PATCH] draft support templates --- Admin/Installer.php | 2 +- Controller.php | 27 ++++++- Models/Ticket.php | 7 +- Models/TicketMapper.php | 8 +- Theme/Backend/support-list.tpl.php | 4 +- Theme/Backend/ticket-single.tpl.php | 112 ++++++++++++++++++++++++++++ 6 files changed, 150 insertions(+), 10 deletions(-) create mode 100644 Theme/Backend/ticket-single.tpl.php diff --git a/Admin/Installer.php b/Admin/Installer.php index d22cced..0ebd315 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -53,7 +53,7 @@ class Installer extends InstallerAbstract $dbPool->get('core')->con->prepare( 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'support_ticket` - ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_ibfk_1` FOREIGN KEY (`support_ticket`) REFERENCES `' . $dbPool->get('core')->prefix . 'task` (`task_id`);' + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'support_ticket_ibfk_1` FOREIGN KEY (`support_ticket_task`) REFERENCES `' . $dbPool->get('core')->prefix . 'task` (`task_id`);' )->execute(); $dbPool->get('core')->con->commit(); diff --git a/Controller.php b/Controller.php index f0472da..e24987e 100644 --- a/Controller.php +++ b/Controller.php @@ -65,7 +65,9 @@ class Controller extends ModuleAbstract implements WebInterface * @var string * @since 1.0.0 */ - protected static $providing = []; + protected static $providing = [ + 'Navigation' + ]; /** * Dependencies. @@ -91,12 +93,33 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Support/Theme/Backend/support-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002901101, $request, $response)); - $ticktes = TicketMapper::getNewest(50); + $tickets = TicketMapper::getAll(); $view->setData('tickets', $tickets); return $view; } + /** + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return \Serializable + * + * @since 1.0.0 + */ + public function viewSupportTicket(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable + { + $view = new View($this->app, $request, $response); + $view->setTemplate('/Modules/Support/Theme/Backend/ticket-single'); + $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002901101, $request, $response)); + + $ticket = TicketMapper::get((int) $request->getData('id')); + $view->addData('ticket', $ticket); + + return $view; + } + /** * @param RequestAbstract $request Request * @param ResponseAbstract $response Response diff --git a/Models/Ticket.php b/Models/Ticket.php index e9fb5f9..4534470 100644 --- a/Models/Ticket.php +++ b/Models/Ticket.php @@ -12,7 +12,7 @@ * @link http://orange-management.com */ declare(strict_types=1); -namespace Modules\Support; +namespace Modules\Support\Models; use Modules\Tasks\Models\Task; use Modules\Tasks\Models\TaskType; @@ -39,6 +39,11 @@ class Ticket $this->task->setType(TaskType::HIDDEN); } + public function getId() : int + { + return $this->id; + } + public function getTask() : Task { return $this->task; diff --git a/Models/TicketMapper.php b/Models/TicketMapper.php index dd31505..0f753c4 100644 --- a/Models/TicketMapper.php +++ b/Models/TicketMapper.php @@ -19,7 +19,7 @@ use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Column; use phpOMS\DataStorage\Database\RelationType; -use Modules\Tasks\Models\Task; +use Modules\Tasks\Models\TaskMapper; /** * Mapper class. @@ -52,7 +52,7 @@ class TicketMapper extends DataMapperAbstract */ protected static $ownsOne = [ 'task' => [ - 'mapper' => Task::class, + 'mapper' => TaskMapper::class, 'src' => 'support_ticket_task', ], ]; @@ -71,7 +71,7 @@ class TicketMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static $primaryField = 'ticket_id'; + protected static $primaryField = 'support_ticket_id'; /** * Create object. @@ -108,7 +108,7 @@ class TicketMapper extends DataMapperAbstract 'account_permission_p' ) ->into('account_permission') - ->values($obj->getCreatedBy(), 'task', 'task', 1, $objId, 1, 1, 1, 1, 1); + ->values($obj->getTask()->getCreatedBy(), 'ticket', 'ticket', 1, $objId, 1, 1, 1, 1, 1); self::$db->con->prepare($query->toSql())->execute(); } catch (\Exception $e) { diff --git a/Theme/Backend/support-list.tpl.php b/Theme/Backend/support-list.tpl.php index 2427410..c5557b1 100644 --- a/Theme/Backend/support-list.tpl.php +++ b/Theme/Backend/support-list.tpl.php @@ -15,14 +15,14 @@ * @var \phpOMS\Views\View $this * @var \Modules\Tasks\Models\Task[] $tickets */ -$tickets = $this->getData('tasks'); +$tickets = $this->getData('tickets'); echo $this->getData('nav')->render(); ?>
- +
getHtml('Tasks') ?>getHtml('Tickets') ?>
getHtml('Status') ?> getHtml('Due') ?> diff --git a/Theme/Backend/ticket-single.tpl.php b/Theme/Backend/ticket-single.tpl.php new file mode 100644 index 0000000..4ec1f84 --- /dev/null +++ b/Theme/Backend/ticket-single.tpl.php @@ -0,0 +1,112 @@ +getData('ticket'); +$elements = $ticket->getTask()->getTaskElements(); +$cElements = count($elements); + +if($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } +elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } +elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } +elseif($ticket->getTask()->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } + +echo $this->getData('nav')->render(); ?> + +
+
+
+

getTask()->getTitle(), ENT_COMPAT, 'utf-8'); ?>

+
+
Due getTask()->getDue()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?>
+
Created getTask()->getCreatedAt()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?>
+
+
+
+ getTask()->getDescription(), ENT_COMPAT, 'utf-8'); ?> +
+
+
+
+
Created getTask()->getCreatedBy()->getName1(), ENT_COMPAT, 'utf-8'); ?>
+ getHtml('S' . $ticket->getTask()->getStatus()) ?> +
+
+
+ + $element) : $c++; + if($element->getStatus() === \Modules\Tasks\Models\TaskStatus::DONE) { $color = 'green'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::OPEN) { $color = 'darkblue'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::WORKING) { $color = 'purple'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::CANCELED) { $color = 'red'; } + elseif($element->getStatus() === \Modules\Tasks\Models\TaskStatus::SUSPENDED) { $color = 'yellow'; } ?> +
+
+
getCreatedBy()->getName1(), ENT_COMPAT, 'utf-8'); ?> - getCreatedAt()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?>
+ getHtml('S' . $element->getStatus()) ?> +
+ + getDescription() !== '') : ?> +
+
+ getDescription(), ENT_COMPAT, 'utf-8'); ?> +
+
+ + +
+ getForwarded() !== 0) : ?> +
Forwarded getForwarded()->getName1(), ENT_COMPAT, 'utf-8'); ?>
+ + getStatus() !== \Modules\Tasks\Models\TaskStatus::CANCELED || + $element->getStatus() !== \Modules\Tasks\Models\TaskStatus::DONE || + $element->getStatus() !== \Modules\Tasks\Models\TaskStatus::SUSPENDED || $c != $cElements + ) : ?> +
Due getDue()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?>
+ +
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+