draft support templates

This commit is contained in:
Dennis Eichhorn 2017-09-08 10:50:27 +02:00
parent ec9b55229b
commit d568109a05
6 changed files with 150 additions and 10 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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(); ?>
<div class="row">
<div class="col-xs-12 col-md-9">
<div class="box wf-100">
<table class="table red">
<caption><?= $this->getHtml('Tasks') ?></caption>
<caption><?= $this->getHtml('Tickets') ?></caption>
<thead>
<td><?= $this->getHtml('Status') ?>
<td><?= $this->getHtml('Due') ?>

View File

@ -0,0 +1,112 @@
<?php
/**
* Orange Management
*
* PHP Version 7.1
*
* @category TBD
* @package TBD
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link http://orange-management.com
*/
/**
* @var \phpOMS\Views\View $this
* @var \Modules\Support\Models\Ticket $ticket
*/
$ticket = $this->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(); ?>
<div class="row">
<div class="col-xs-12">
<section class="box wf-100">
<header><h1><?= htmlspecialchars($ticket->getTask()->getTitle(), ENT_COMPAT, 'utf-8'); ?></h1></header>
<div class="inner">
<div class="floatRight">Due <?= htmlspecialchars($ticket->getTask()->getDue()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?></div>
<div>Created <?= htmlspecialchars($ticket->getTask()->getCreatedAt()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?></div>
</div>
<div class="inner">
<blockquote>
<?= htmlspecialchars($ticket->getTask()->getDescription(), ENT_COMPAT, 'utf-8'); ?>
</blockquote>
</div>
<div class="inner">
<div class="pAlignTable">
<div class="vCenterTable wf-100">Created <?= htmlspecialchars($ticket->getTask()->getCreatedBy()->getName1(), ENT_COMPAT, 'utf-8'); ?></div>
<span class="vCenterTable nobreak tag"><?= $this->getHtml('S' . $ticket->getTask()->getStatus()) ?></span>
</div>
</div>
</section>
<?php $c = 0;
foreach ($elements as $key => $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'; } ?>
<section class="box wf-100">
<div class="inner pAlignTable">
<div class="vCenterTable wf-100"><?= htmlspecialchars($element->getCreatedBy()->getName1(), ENT_COMPAT, 'utf-8'); ?> - <?= htmlspecialchars($element->getCreatedAt()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?></div>
<span class="vCenterTable tag <?= htmlspecialchars($color, ENT_COMPAT, 'utf-8'); ?>"><?= $this->getHtml('S' . $element->getStatus()) ?></span>
</div>
<?php if ($element->getDescription() !== '') : ?>
<div class="inner">
<blockquote>
<?= htmlspecialchars($element->getDescription(), ENT_COMPAT, 'utf-8'); ?>
</blockquote>
</div>
<?php endif; ?>
<div class="inner pAlignTable">
<?php if ($element->getForwarded() !== 0) : ?>
<div class="vCenterTable wf-100">Forwarded <?= htmlspecialchars($element->getForwarded()->getName1(), ENT_COMPAT, 'utf-8'); ?></div>
<?php endif; ?>
<?php if ($element->getStatus() !== \Modules\Tasks\Models\TaskStatus::CANCELED ||
$element->getStatus() !== \Modules\Tasks\Models\TaskStatus::DONE ||
$element->getStatus() !== \Modules\Tasks\Models\TaskStatus::SUSPENDED || $c != $cElements
) : ?>
<div class="vCenterTable nobreak">Due <?= htmlspecialchars($element->getDue()->format('Y-m-d H:i'), ENT_COMPAT, 'utf-8'); ?></div>
<?php endif; ?>
</section>
<?php endforeach; ?>
<section class="box wf-100">
<div class="inner">
<form id="taskElementCreate" method="POST" action="<?= \phpOMS\Uri\UriFactory::build('{/base}/{/lang}/api/task/element?{?}&csrf={$CSRF}'); ?>">
<table class="layout wf-100">
<tr><td><label for="iMessage"><?= $this->getHtml('Message') ?></label>
<tr><td><textarea id="iMessage" name="description"></textarea>
<tr><td><label for="iDue"><?= $this->getHtml('Due') ?></label>
<tr><td><input type="datetime-local" id="iDue" name="due" value="<?= htmlspecialchars(!empty($elements) ? end($elements)->getDue()->format('Y-m-d\TH:i:s') : $ticket->getTask()->getDue()->format('Y-m-d\TH:i:s'), ENT_COMPAT, 'utf-8'); ?>">
<tr><td><label for="iStatus"><?= $this->getHtml('Status') ?></label>
<tr><td><select id="iStatus" name="status">
<option value="<?= htmlspecialchars(\Modules\Tasks\Models\TaskStatus::OPEN, ENT_COMPAT, 'utf-8'); ?>" selected>Open
<option value="<?= htmlspecialchars(\Modules\Tasks\Models\TaskStatus::WORKING, ENT_COMPAT, 'utf-8'); ?>">Working
<option value="<?= htmlspecialchars(\Modules\Tasks\Models\TaskStatus::SUSPENDED, ENT_COMPAT, 'utf-8'); ?>">Suspended
<option value="<?= htmlspecialchars(\Modules\Tasks\Models\TaskStatus::CANCELED, ENT_COMPAT, 'utf-8'); ?>">Canceled
<option value="<?= htmlspecialchars(\Modules\Tasks\Models\TaskStatus::DONE, ENT_COMPAT, 'utf-8'); ?>">Done
</select>
<tr><td><label for="iReceiver"><?= $this->getHtml('To') ?></label>
<tr><td><input type="text" id="iReceiver" name="forward" value="<?= htmlspecialchars($this->request->getHeader()->getAccount(), ENT_COMPAT, 'utf-8'); ?>" placeholder="&#xf007; Guest">
<tr><td colspan="2"><label for="iMedia"><?= $this->getHtml('Media') ?></label>
<tr><td><input type="text" id="iMedia" placeholder="&#xf15b; File"><td><button><?= $this->getHtml('Select') ?></button>
<tr><td colspan="2"><label for="iUpload"><?= $this->getHtml('Upload') ?></label>
<tr><td><input type="file" id="iUpload" form="fTask"><input form="fTask" type="hidden" name="type"><td>
<tr><td><input type="submit" value="<?= $this->getHtml('Create', 0, 0); ?>"><input type="hidden" name="task" value="<?= htmlspecialchars($this->request->getData('id')); ?>"><input type="hidden" name="type" value="1">
</table>
</form>
</div>
</section>
</div>
</div>