Imprint
-Karaka
+Jingga
Vertreten durch
Dennis Eichhorn
@@ -31,7 +31,7 @@ declare(strict_types=1);Nicht vorhanden
Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV
-Karaka
+Jingga
Dennis Eichhorn
Datenschutzbeauftragter
diff --git a/Admin/Install/Application/Shop/Themes/Default/tpl/privacy.tpl.php b/Admin/Install/Application/Shop/Themes/Default/tpl/privacy.tpl.php index ba7a2d7..131b841 100755 --- a/Admin/Install/Application/Shop/Themes/Default/tpl/privacy.tpl.php +++ b/Admin/Install/Application/Shop/Themes/Default/tpl/privacy.tpl.php @@ -16,7 +16,7 @@ declare(strict_types=1);Privacy Policy
-This privacy policy ("POLICY") will help you understand how [name] ("us", "we", "our") uses and protects the data you provide to us when you visit and use Karaka ("website", "service" and "application").
+This privacy policy ("POLICY") will help you understand how [name] ("us", "we", "our") uses and protects the data you provide to us when you visit and use Jingga ("website", "service" and "application").
Definitions
For the purposes of these POLICIES:
@@ -24,7 +24,7 @@ declare(strict_types=1);
- AFFILIATED means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.
- COUNTRY refers to Germany -
- COMPANY (referred to as either "the Company", "We", "Us" or "Our" in this AGREEMENT) refers to Karaka, Kirchstr. 33, 61191 Rosbach. +
- COMPANY (referred to as either "the Company", "We", "Us" or "Our" in this AGREEMENT) refers to Jingga, Kirchstr. 33, 61191 Rosbach.
- DEVICE means any device that can access the SERVICE such as a computer, a cellphone or a digital tablet.
- SERVICE refers to the Website
- POLICY or AGREEMENT mean these policies that form the entire agreement between You and the COMPANY regarding the use of the SERVICE. @@ -55,7 +55,7 @@ declare(strict_types=1);
Safeguarding and Securing the Data
-Karaka is committed to securing your data and keeping it confidential. Karaka has done all in its power to prevent data theft, unauthorized access, and disclosure by implementing the latest technologies and software, which help us safeguard all the information we collect online.
+Jingga is committed to securing your data and keeping it confidential. Jingga has done all in its power to prevent data theft, unauthorized access, and disclosure by implementing the latest technologies and software, which help us safeguard all the information we collect online.
Our Cookie Policy
Once you agree to allow our WEBSITE or APPLICATION to use cookies, you also agree to these POLICIES.
@@ -76,7 +76,7 @@ declare(strict_types=1);Karaka will not lease, sell or distribute your personal information to any third parties, unless we have your permission. We might do so if the law forces us. Your personal information will be used when we need to send you promotional materials if you agree to this privacy policy.
+Jingga will not lease, sell or distribute your personal information to any third parties, unless we have your permission. We might do so if the law forces us. Your personal information will be used when we need to send you promotional materials if you agree to this privacy policy.
Governing Law
The laws of the COUNTRY, excluding its conflicts of law rules, shall govern this POLICY and Your use of the SERVICE. Your use of the APPLICATION may also be subject to other local, state, national, or international laws.
diff --git a/Admin/Install/Application/Shop/Themes/Default/tpl/terms.tpl.php b/Admin/Install/Application/Shop/Themes/Default/tpl/terms.tpl.php index c357d83..5ce916b 100755 --- a/Admin/Install/Application/Shop/Themes/Default/tpl/terms.tpl.php +++ b/Admin/Install/Application/Shop/Themes/Default/tpl/terms.tpl.php @@ -23,7 +23,7 @@ declare(strict_types=1);- AFFILIATED means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.
- COUNTRY refers to Germany -
- COMPANY (referred to as either "the Company", "We", "Us" or "Our" in this AGREEMENT) refers to Karaka, Kirchstr. 33, 61191 Rosbach. +
- COMPANY (referred to as either "the Company", "We", "Us" or "Our" in this AGREEMENT) refers to Jingga, Kirchstr. 33, 61191 Rosbach.
- DEVICE means any device that can access the Service such as a computer, a cellphone or a digital tablet.
- SERVICE refers to the Website
- TERMS or AGREEMENT mean these terms that form the entire agreement between You and the COMPANY regarding the use of the SERVICE. @@ -41,7 +41,7 @@ declare(strict_types=1);
Your access to and use of the SERVICE is also conditioned on Your acceptance of and compliance with the Privacy Policy of the COMPANY. Our Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your personal information when You use the Application or the WEBSITE and tells You about Your privacy rights and how the law protects You. Please read Our Privacy Policy carefully before using Our SERVICE.
Copyright
-Unless otherwise noted, all materials including without limitation, logos, brand names, images, designs, photographs, videos, audio, source code and written and other materials that appear as part of our WEBSITE are copyrights, trademarks, service marks, trade dress and/or other intellectual property whether registered or unregistered ("Intellectual Property") owned, controlled or licensed by Karaka. Our WEBSITE as a whole is protected by copyright and trade dress. Nothing on our WEBSITE should be construed as granting, by implication, estoppel or otherwise, any license or right to use any Intellectual Property displayed or used on our WEBSITE, without the prior written permission of the Intellectual Property owner. Karaka aggressively enforces its intellectual property rights to the fullest extent of the law. The names and logos of Karaka, may not be used in any way, including in advertising or publicity pertaining to distribution of materials on our WEBSITE, without prior, written permission from Karaka. Karaka prohibits use of any logo of Karaka or any of its affiliates as part of a link to or from any WEBSITE unless Karaka approves such link in advance and in writing. Fair use of Karaka Intellectual Property requires proper acknowledgment. Other product and company names mentioned in our Website may be the Intellectual Property of their respective owners.
+Unless otherwise noted, all materials including without limitation, logos, brand names, images, designs, photographs, videos, audio, source code and written and other materials that appear as part of our WEBSITE are copyrights, trademarks, service marks, trade dress and/or other intellectual property whether registered or unregistered ("Intellectual Property") owned, controlled or licensed by Jingga. Our WEBSITE as a whole is protected by copyright and trade dress. Nothing on our WEBSITE should be construed as granting, by implication, estoppel or otherwise, any license or right to use any Intellectual Property displayed or used on our WEBSITE, without the prior written permission of the Intellectual Property owner. Jingga aggressively enforces its intellectual property rights to the fullest extent of the law. The names and logos of Jingga, may not be used in any way, including in advertising or publicity pertaining to distribution of materials on our WEBSITE, without prior, written permission from Jingga. Jingga prohibits use of any logo of Jingga or any of its affiliates as part of a link to or from any WEBSITE unless Jingga approves such link in advance and in writing. Fair use of Jingga Intellectual Property requires proper acknowledgment. Other product and company names mentioned in our Website may be the Intellectual Property of their respective owners.
Links
Our SERVICE may contain links to third-party web sites or services that are not owned or controlled by the COMPANY.
diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 73c970c..c141e81 100755 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -41,14 +41,6 @@ "foreignTable": "task", "foreignKey": "task_id" }, - "support_ticket_for": { - "name": "support_ticket_for", - "type": "INT", - "null": true, - "default": null, - "foreignTable": "account", - "foreignKey": "account_id" - }, "support_ticket_app": { "name": "support_ticket_app", "type": "INT", @@ -68,11 +60,6 @@ "primary": true, "autoincrement": true }, - "support_ticket_element_time": { - "name": "support_ticket_element_time", - "type": "INT", - "null": false - }, "support_ticket_element_task_element": { "name": "support_ticket_element_task_element", "type": "INT", diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index 23267fa..6077856 100755 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -47,7 +47,7 @@ return [ // ], // ], // ], - // '^.*/task/element.*$' => [ + // '^.*/task/element(\?.*$|$)' => [ // [ // 'dest' => '\Modules\Support\Controller\ApiController:apiTaskElementCreate', // 'verb' => RouteVerb::PUT, diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 492318b..82f6dfb 100755 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -18,7 +18,7 @@ use phpOMS\Account\PermissionType; use phpOMS\Router\RouteVerb; return [ - '^.*/support/list.*$' => [ + '^.*/support/list(\?.*$|$)' => [ [ 'dest' => '\Modules\Support\Controller\BackendController:viewSupportList', 'verb' => RouteVerb::GET, @@ -29,7 +29,7 @@ return [ ], ], ], - '^.*/support/ticket.*$' => [ + '^.*/support/ticket(\?.*$|$)' => [ [ 'dest' => '\Modules\Support\Controller\BackendController:viewSupportTicket', 'verb' => RouteVerb::GET, @@ -40,7 +40,7 @@ return [ ], ], ], - '^.*/support/create.*$' => [ + '^.*/support/create(\?.*$|$)' => [ [ 'dest' => '\Modules\Support\Controller\BackendController:viewSupportCreate', 'verb' => RouteVerb::GET, @@ -51,7 +51,7 @@ return [ ], ], ], - '^.*/support/analysis.*$' => [ + '^.*/support/analysis(\?.*$|$)' => [ [ 'dest' => '\Modules\Support\Controller\BackendController:viewSupportAnalysis', 'verb' => RouteVerb::GET, @@ -62,7 +62,7 @@ return [ ], ], ], - '^.*/support/settings.*$' => [ + '^.*/support/settings(\?.*$|$)' => [ [ 'dest' => '\Modules\Support\Controller\BackendController:viewSupportSettings', 'verb' => RouteVerb::GET, @@ -73,7 +73,7 @@ return [ ], ], ], - '^.*/private/support/dashboard.*$' => [ + '^.*/private/support/dashboard(\?.*$|$)' => [ [ 'dest' => '\Modules\Support\Controller\BackendController:viewPrivateSupportDashboard', 'verb' => RouteVerb::GET, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index ea639eb..1bb3ce1 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -14,7 +14,6 @@ declare(strict_types=1); namespace Modules\Support\Controller; -use Modules\Admin\Models\NullAccount; use Modules\Support\Models\NullSupportApp; use Modules\Support\Models\SupportApp; use Modules\Support\Models\SupportAppMapper; @@ -99,16 +98,12 @@ final class ApiController extends Controller private function createTicketFromRequest(RequestAbstract $request) : Ticket { $request->setData('redirect', 'support/ticket?for={$id}'); - $task = $this->app->moduleManager->get('Tasks')->createTaskFromRequest($request); - $task->setType(TaskType::HIDDEN); + $task = $this->app->moduleManager->get('Tasks')->createTaskFromRequest($request); + $task->type = TaskType::HIDDEN; $ticket = new Ticket($task); $ticket->app = new NullSupportApp($request->getDataInt('app') ?? 1); - if ($request->hasData('for')) { - $ticket->for = new NullAccount((int) $request->getData('for')); - } - return $ticket; } @@ -220,9 +215,9 @@ final class ApiController extends Controller $old = clone $ticket->task; - $ticket->task->setStatus($element->taskElement->getStatus()); - $ticket->task->setPriority($element->taskElement->getPriority()); - $ticket->task->due = $element->taskElement->due; + $ticket->task->status = $element->taskElement->status; + $ticket->task->priority = $element->taskElement->priority; + $ticket->task->due = $element->taskElement->due; $this->createModel($request->header->account, $element, TicketElementMapper::class, 'ticketelement', $request->getOrigin()); $this->updateModel($request->header->account, $old, $ticket->task, TaskMapper::class, 'ticket', $request->getOrigin()); @@ -244,7 +239,6 @@ final class ApiController extends Controller $taskElement = $this->app->moduleManager->get('Tasks')->createTaskElementFromRequest($request, $ticket->task); $ticketElement = new TicketElement($taskElement); - $ticketElement->time = $request->getDataInt('time') ?? 0; $ticketElement->ticket = $ticket->id; return $ticketElement; diff --git a/Models/SupportApp.php b/Models/SupportApp.php index 5eba918..8f81349 100755 --- a/Models/SupportApp.php +++ b/Models/SupportApp.php @@ -48,18 +48,6 @@ class SupportApp implements \JsonSerializable */ public ?int $unit = null; - /** - * Get id. - * - * @return int Model id - * - * @since 1.0.0 - */ - public function getId() : int - { - return $this->id; - } - /** * {@inheritdoc} */ diff --git a/Models/Ticket.php b/Models/Ticket.php index 2595cbe..7ceb881 100755 --- a/Models/Ticket.php +++ b/Models/Ticket.php @@ -14,7 +14,6 @@ declare(strict_types=1); namespace Modules\Support\Models; -use Modules\Admin\Models\Account; use Modules\Tasks\Models\Task; use Modules\Tasks\Models\TaskType; @@ -60,17 +59,6 @@ class Ticket */ public array $ticketElements = []; - /** - * Account this ticket is for - * - * This is not the person who is working on the ticket but the person who needs help. - * This can be different from the person who created it. - * - * @var null|Account - * @since 1.0.0 - */ - public ?Account $for = null; - /** * Constructor. * @@ -78,23 +66,11 @@ class Ticket * * @since 1.0.0 */ - public function __construct(Task $task = null) + public function __construct(?Task $task = null) { - $this->task = $task ?? new Task(); - $this->task->setType(TaskType::HIDDEN); - $this->app = new SupportApp(); - } - - /** - * Get id. - * - * @return int Model id - * - * @since 1.0.0 - */ - public function getId() : int - { - return $this->id; + $this->task = $task ?? new Task(); + $this->task->type = TaskType::HIDDEN; + $this->app = new SupportApp(); } /** @@ -181,11 +157,10 @@ class Ticket public function toArray() : array { return [ - 'id' => $this->id, - 'task' => $this->task, - 'app' => $this->app, - 'for' => $this->for, - 'ticketElements' => $this->ticketElements, + 'id' => $this->id, + 'task' => $this->task, + 'app' => $this->app, + 'ticketElements' => $this->ticketElements, ]; } diff --git a/Models/TicketElement.php b/Models/TicketElement.php index d65e750..d7ce538 100755 --- a/Models/TicketElement.php +++ b/Models/TicketElement.php @@ -34,14 +34,6 @@ class TicketElement implements \JsonSerializable */ public int $id = 0; - /** - * Ticket element time - * - * @var int - * @since 1.0.0 - */ - public int $time = 0; - /** * Ticket. * @@ -65,7 +57,7 @@ class TicketElement implements \JsonSerializable * * @since 1.0.0 */ - public function __construct(TaskElement $taskElement = null) + public function __construct(?TaskElement $taskElement = null) { $this->taskElement = $taskElement ?? new TaskElement(); } @@ -77,7 +69,6 @@ class TicketElement implements \JsonSerializable { return [ 'id' => $this->id, - 'time' => $this->time, 'ticket' => $this->ticket, 'taskElement' => $this->taskElement, ]; diff --git a/Models/TicketElementMapper.php b/Models/TicketElementMapper.php index f8b189d..1fbf68a 100755 --- a/Models/TicketElementMapper.php +++ b/Models/TicketElementMapper.php @@ -39,7 +39,6 @@ final class TicketElementMapper extends DataMapperFactory public const COLUMNS = [ 'support_ticket_element_id' => ['name' => 'support_ticket_element_id', 'type' => 'int', 'internal' => 'id'], 'support_ticket_element_task_element' => ['name' => 'support_ticket_element_task_element', 'type' => 'int', 'internal' => 'taskElement'], - 'support_ticket_element_time' => ['name' => 'support_ticket_element_time', 'type' => 'int', 'internal' => 'time'], 'support_ticket_element_ticket' => ['name' => 'support_ticket_element_ticket', 'type' => 'int', 'internal' => 'ticket'], ]; @@ -51,8 +50,8 @@ final class TicketElementMapper extends DataMapperFactory */ public const OWNS_ONE = [ 'taskElement' => [ - 'mapper' => TaskElementMapper::class, - 'external' => 'support_ticket_element_task_element', + 'mapper' => TaskElementMapper::class, + 'external' => 'support_ticket_element_task_element', ], ]; diff --git a/Models/TicketMapper.php b/Models/TicketMapper.php index 1305156..5242436 100755 --- a/Models/TicketMapper.php +++ b/Models/TicketMapper.php @@ -42,7 +42,6 @@ final class TicketMapper extends DataMapperFactory public const COLUMNS = [ 'support_ticket_id' => ['name' => 'support_ticket_id', 'type' => 'int', 'internal' => 'id'], 'support_ticket_task' => ['name' => 'support_ticket_task', 'type' => 'int', 'internal' => 'task'], - 'support_ticket_for' => ['name' => 'support_ticket_for', 'type' => 'int', 'internal' => 'for'], 'support_ticket_app' => ['name' => 'support_ticket_app', 'type' => 'int', 'internal' => 'app'], ]; @@ -54,8 +53,8 @@ final class TicketMapper extends DataMapperFactory */ public const OWNS_ONE = [ 'task' => [ - 'mapper' => TaskMapper::class, - 'external' => 'support_ticket_task', + 'mapper' => TaskMapper::class, + 'external' => 'support_ticket_task', ], ]; @@ -67,10 +66,10 @@ final class TicketMapper extends DataMapperFactory */ public const HAS_MANY = [ 'ticketElements' => [ - 'mapper' => TicketElementMapper::class, - 'table' => 'support_ticket_element', - 'self' => 'support_ticket_element_ticket', - 'external' => null, + 'mapper' => TicketElementMapper::class, + 'table' => 'support_ticket_element', + 'self' => 'support_ticket_element_ticket', + 'external' => null, ], ]; @@ -112,11 +111,11 @@ final class TicketMapper extends DataMapperFactory $start = SmartDateTime::startOfMonth(); return [ - 'total' => TicketMapper::count()->with('task')->where('task/createdAt', $start, '>=')->execute(), - 'unassigned' => TicketMapper::count()->with('task')->where('for', null)->execute(), - 'open' => TicketMapper::count()->with('task')->where('task/status', TaskStatus::OPEN)->execute(), - 'closed' => TicketMapper::count()->with('task')->where('task/createdAt', $start, '>=')->where('task/status', TaskStatus::DONE)->where('task/status', TaskStatus::CANCELED, '=', 'OR')->where('task/status', TaskStatus::SUSPENDED, '=', 'OR')->execute(), - 'inprogress' => TicketMapper::count()->with('task')->where('task/status', TaskStatus::WORKING)->execute(), + 'total' => self::count()->with('task')->where('task/createdAt', $start, '>=')->execute(), + 'unassigned' => self::count()->with('task')->where('for', null)->execute(), + 'open' => self::count()->with('task')->where('task/status', TaskStatus::OPEN)->execute(), + 'closed' => self::count()->with('task')->where('task/createdAt', $start, '>=')->where('task/status', TaskStatus::DONE)->where('task/status', TaskStatus::CANCELED, '=', 'OR')->where('task/status', TaskStatus::SUSPENDED, '=', 'OR')->execute(), + 'inprogress' => self::count()->with('task')->where('task/status', TaskStatus::WORKING)->execute(), ]; } } diff --git a/Theme/Backend/Lang/de.lang.php b/Theme/Backend/Lang/de.lang.php index 116525c..69ba946 100755 --- a/Theme/Backend/Lang/de.lang.php +++ b/Theme/Backend/Lang/de.lang.php @@ -64,6 +64,6 @@ return ['Support' => [ 'Upload' => 'Hochladen', 'Week' => 'Woche', 'Year' => 'Jahr', - 'Total' => 'Gesamt', - 'InProgress' => 'In Bearbeitung', + 'Total' => 'Gesamt', + 'InProgress' => 'In Bearbeitung', ]]; diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index 09d276f..70b4f84 100755 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -64,6 +64,6 @@ return ['Support' => [ 'Upload' => 'Upload', 'Week' => 'Week', 'Year' => 'Year', - 'Total' => 'Total', - 'InProgress' => 'In Progress', + 'Total' => 'Total', + 'InProgress' => 'In Progress', ]]; diff --git a/Theme/Backend/support-list.tpl.php b/Theme/Backend/support-list.tpl.php index 536f6c0..eb5cea3 100755 --- a/Theme/Backend/support-list.tpl.php +++ b/Theme/Backend/support-list.tpl.php @@ -44,14 +44,14 @@ echo $this->data['nav']->render(); ?> ?>