mirror of
https://github.com/Karaka-Management/oms-Support.git
synced 2026-01-11 17:18:40 +00:00
many small fixes
This commit is contained in:
parent
f696b5e7fc
commit
508718fed3
|
|
@ -200,6 +200,37 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"support_attr_value_l11n": {
|
||||
"name": "support_attr_value_l11n",
|
||||
"fields": {
|
||||
"support_attr_value_l11n_id": {
|
||||
"name": "support_attr_value_l11n_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"support_attr_value_l11n_title": {
|
||||
"name": "support_attr_value_l11n_title",
|
||||
"type": "VARCHAR(255)",
|
||||
"null": false
|
||||
},
|
||||
"support_attr_value_l11n_value": {
|
||||
"name": "support_attr_value_l11n_value",
|
||||
"type": "INT(11)",
|
||||
"null": false,
|
||||
"foreignTable": "support_attr_value",
|
||||
"foreignKey": "support_attr_value_id"
|
||||
},
|
||||
"support_attr_value_l11n_lang": {
|
||||
"name": "support_attr_value_l11n_lang",
|
||||
"type": "VARCHAR(2)",
|
||||
"null": false,
|
||||
"foreignTable": "language",
|
||||
"foreignKey": "language_639_1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"support_ticket_attr_default": {
|
||||
"name": "support_ticket_attr_default",
|
||||
"fields": {
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ use Modules\Support\Models\TicketAttributeTypeL11n;
|
|||
use Modules\Support\Models\TicketAttributeTypeL11nMapper;
|
||||
use Modules\Support\Models\TicketAttributeTypeMapper;
|
||||
use Modules\Support\Models\TicketAttributeValue;
|
||||
use Modules\Support\Models\TicketAttributeValueL11nMapper;
|
||||
use Modules\Support\Models\TicketAttributeValueMapper;
|
||||
use Modules\Support\Models\TicketElement;
|
||||
use Modules\Support\Models\TicketElementMapper;
|
||||
|
|
@ -114,7 +115,7 @@ final class ApiController extends Controller
|
|||
*/
|
||||
private function createTicketFromRequest(RequestAbstract $request) : Ticket
|
||||
{
|
||||
$request->setData('redirect', 'support/ticket?for={?id}');
|
||||
$request->setData('redirect', 'support/ticket?for={$id}');
|
||||
$task = $this->app->moduleManager->get('Tasks')->createTaskFromRequest($request);
|
||||
$task->setType(TaskType::HIDDEN);
|
||||
|
||||
|
|
@ -696,4 +697,73 @@ final class ApiController extends Controller
|
|||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create ticket attribute l11n
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiTicketAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateTicketAttributeValueL11nCreate($request))) {
|
||||
$response->set('attr_value_l11n_create', new FormValidation($val));
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$attrL11n = $this->createTicketAttributeValueL11nFromRequest($request);
|
||||
$this->createModel($request->header->account, $attrL11n, TicketAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type localization', 'Attribute type localization successfully created', $attrL11n);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create ticket attribute l11n from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return BaseStringL11n
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function createTicketAttributeValueL11nFromRequest(RequestAbstract $request) : BaseStringL11n
|
||||
{
|
||||
$attrL11n = new BaseStringL11n();
|
||||
$attrL11n->ref = (int) ($request->getData('value') ?? 0);
|
||||
$attrL11n->setLanguage((string) (
|
||||
$request->getData('language') ?? $request->getLanguage()
|
||||
));
|
||||
$attrL11n->content = (string) ($request->getData('title') ?? '');
|
||||
|
||||
return $attrL11n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate ticket attribute l11n create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateTicketAttributeValueL11nCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['title'] = empty($request->getData('title')))
|
||||
|| ($val['value'] = empty($request->getData('value')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -122,13 +122,16 @@ final class BackendController extends Controller
|
|||
$mapperQuery = TicketMapper::get()
|
||||
->with('task')
|
||||
->with('task/createdBy')
|
||||
->with('task/tags')
|
||||
->with('task/tags/title')
|
||||
->with('ticketElements')
|
||||
->with('ticketElements/taskElement')
|
||||
->with('ticketElements/taskElement/createdBy')
|
||||
->with('ticketElements/taskElement/media')
|
||||
->with('attributes')
|
||||
->with('for')
|
||||
->with('app');
|
||||
->with('app')
|
||||
->where('task/tags/title/language', $request->getLanguage());
|
||||
|
||||
/** @var \Modules\Support\Models\Ticket $ticket */
|
||||
$ticket = $request->getData('for') !== null
|
||||
|
|
|
|||
66
Models/TicketAttributeValueL11nMapper.php
Normal file
66
Models/TicketAttributeValueL11nMapper.php
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/**
|
||||
* Karaka
|
||||
*
|
||||
* PHP Version 8.1
|
||||
*
|
||||
* @package Modules\Support\Models
|
||||
* @copyright Dennis Eichhorn
|
||||
* @license OMS License 1.0
|
||||
* @version 1.0.0
|
||||
* @link https://jingga.app
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Support\Models;
|
||||
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use phpOMS\Localization\BaseStringL11n;
|
||||
|
||||
/**
|
||||
* Item mapper class.
|
||||
*
|
||||
* @package Modules\Support\Models
|
||||
* @license OMS License 1.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class TicketAttributeValueL11nMapper extends DataMapperFactory
|
||||
{
|
||||
/**
|
||||
* Columns.
|
||||
*
|
||||
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const COLUMNS = [
|
||||
'support_attr_value_l11n_id' => ['name' => 'support_attr_value_l11n_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'support_attr_value_l11n_title' => ['name' => 'support_attr_value_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
|
||||
'support_attr_value_l11n_value' => ['name' => 'support_attr_value_l11n_value', 'type' => 'int', 'internal' => 'ref'],
|
||||
'support_attr_value_l11n_lang' => ['name' => 'support_attr_value_l11n_lang', 'type' => 'string', 'internal' => 'language'],
|
||||
];
|
||||
|
||||
/**
|
||||
* Primary table.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const TABLE = 'support_attr_value_l11n';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const PRIMARYFIELD ='support_attr_value_l11n_id';
|
||||
|
||||
/**
|
||||
* Model to use by the mapper.
|
||||
*
|
||||
* @var class-string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODEL = BaseStringL11n::class;
|
||||
}
|
||||
|
|
@ -179,7 +179,7 @@ echo $this->getData('nav')->render(); ?>
|
|||
) : ?>
|
||||
<section class="portlet">
|
||||
<div class="portlet-body">
|
||||
<?= \sprintf($this->getHtml('status_change'),
|
||||
<?= \sprintf($this->getHtml('status_change', 'Tasks', 'Backend'),
|
||||
'<a href="' . UriFactory::build('profile/single?{?}&for=' . $element->taskElement->createdBy->getId()) . '">' . $this->printHtml($element->taskElement->createdBy->name1) . '</a>',
|
||||
$element->taskElement->createdAt->format('Y-m-d H:i')
|
||||
); ?>
|
||||
|
|
@ -195,7 +195,7 @@ echo $this->getData('nav')->render(); ?>
|
|||
) : ?>
|
||||
<section class="portlet">
|
||||
<div class="portlet-body">
|
||||
<?= \sprintf($this->getHtml('priority_change'),
|
||||
<?= \sprintf($this->getHtml('priority_change', 'Tasks', 'Backend'),
|
||||
'<a href="' . UriFactory::build('profile/single?{?}&for=' . $element->taskElement->createdBy->getId()) . '">' . $this->printHtml($element->taskElement->createdBy->name1) . '</a>',
|
||||
$element->taskElement->createdAt->format('Y-m-d H:i')
|
||||
); ?>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user