diff --git a/cp/app/Controllers/SupportController.php b/cp/app/Controllers/SupportController.php new file mode 100644 index 0000000..f8440e5 --- /dev/null +++ b/cp/app/Controllers/SupportController.php @@ -0,0 +1,33 @@ +container->get('db')); + $tickets = $ticketModel->getAllTickets(); + return view($response,'admin/support/view.twig', compact('tickets')); + } + + public function newticket(Request $request, Response $response) + { + return view($response,'admin/support/newticket.twig'); + } + + public function docs(Request $request, Response $response) + { + return view($response,'admin/support/docs.twig'); + } + + public function mediakit(Request $request, Response $response) + { + return view($response,'admin/support/mediakit.twig'); + } +} \ No newline at end of file diff --git a/cp/app/Models/Tickets.php b/cp/app/Models/Tickets.php new file mode 100644 index 0000000..f11a39a --- /dev/null +++ b/cp/app/Models/Tickets.php @@ -0,0 +1,40 @@ +db = $db; + } + + public function getAllTickets() + { + return $this->db->select('SELECT * FROM support_tickets'); + } + + public function getTicketsById($id) + { + return $this->db->select('SELECT * FROM support_tickets WHERE id = ?', [$id])->fetch(); + } + + public function createTickets($id, $user_id, $category_id, $subject, $message, $status, $priority, $reported_domain, $nature_of_abuse, $evidence, $relevant_urls, $date_of_incident, $date_created, $last_updated) + { + $id = $this->db->quote($id); $user_id = $this->db->quote($user_id); $category_id = $this->db->quote($category_id); $subject = $this->db->quote($subject); $message = $this->db->quote($message); $status = $this->db->quote($status); $priority = $this->db->quote($priority); $reported_domain = $this->db->quote($reported_domain); $nature_of_abuse = $this->db->quote($nature_of_abuse); $evidence = $this->db->quote($evidence); $relevant_urls = $this->db->quote($relevant_urls); $date_of_incident = $this->db->quote($date_of_incident); $date_created = $this->db->quote($date_created); $last_updated = $this->db->quote($last_updated); + + $this->db->insert('INSERT INTO support_tickets (id, user_id, category_id, subject, message, status, priority, reported_domain, nature_of_abuse, evidence, relevant_urls, date_of_incident, date_created, last_updated) VALUES ($id, $user_id, $category_id, $subject, $message, $status, $priority, $reported_domain, $nature_of_abuse, $evidence, $relevant_urls, $date_of_incident, $date_created, $last_updated)'); + + return $this->db->lastInsertId(); + } + + public function deleteTickets($id) + { + $this->db->delete('DELETE FROM support_tickets WHERE id = ?', [$id]); + return true; + } +} \ No newline at end of file diff --git a/cp/resources/views/admin/support/docs.twig b/cp/resources/views/admin/support/docs.twig new file mode 100644 index 0000000..b534426 --- /dev/null +++ b/cp/resources/views/admin/support/docs.twig @@ -0,0 +1,62 @@ +{% extends "layouts/app.twig" %} + +{% block title %}{{ __('Documentation') }}{% endblock %} + +{% block content %} +
+ + + +
+
+
+
+
+

Documentation

+

{{ documentation_intro|default('Replace this section with a brief introduction about your documentation.') }}

+ +

Getting Started

+

{{ getting_started_text|default('Provide users with the basics to get started with your TLD registry management system here.') }}

+ +

Registration Process

+

{{ registration_process_text|default('Describe the process for domain registration in detail here.') }}

+ + + +
+

Replace or remove this footer as necessary. Add any relevant information or links here.

+
+
+
+
+
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/cp/resources/views/admin/support/mediakit.twig b/cp/resources/views/admin/support/mediakit.twig new file mode 100644 index 0000000..5bebe61 --- /dev/null +++ b/cp/resources/views/admin/support/mediakit.twig @@ -0,0 +1,67 @@ +{% extends "layouts/app.twig" %} + +{% block title %}{{ __('Media Kit') }}{% endblock %} + +{% block content %} +
+ + + +
+
+
+
+
+

Media Kit

+

{{ media_kit_intro|default('Replace this section with an introduction about the media kit contents and its intended audience.') }}

+ +

Logos

+

{{ logos_intro|default('Provide guidelines on how to use your registry logos correctly.') }}

+ + Registry Logo + +

Branding Guidelines

+

{{ branding_guidelines|default('Detail any color schemes, typography, or design patterns related to your TLD registry brand here.') }}

+ +

Press Releases

+

{{ press_releases_text|default('List recent press releases or provide links to them for registrars and the media.') }}

+ + + +
+

Replace or remove this footer as necessary. Add any relevant information or links here.

+
+
+
+
+
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/cp/resources/views/admin/support/newticket.twig b/cp/resources/views/admin/support/newticket.twig new file mode 100644 index 0000000..d11a276 --- /dev/null +++ b/cp/resources/views/admin/support/newticket.twig @@ -0,0 +1,70 @@ +{% extends "layouts/app.twig" %} + +{% block title %}{{ __('New Support Ticket') }}{% endblock %} + +{% block content %} +
+ + + +
+
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/cp/resources/views/admin/support/view.twig b/cp/resources/views/admin/support/view.twig new file mode 100644 index 0000000..ed4a8ce --- /dev/null +++ b/cp/resources/views/admin/support/view.twig @@ -0,0 +1,87 @@ +{% extends "layouts/app.twig" %} + +{% block title %}{{ __('Support Tickets') }}{% endblock %} + +{% block content %} +
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + {% for ticket in tickets %} + + + + + + + + {% endfor %} + +
ID + + SubjectStatusPriority
{{ ticket.subject }}{{ ticket.status }}{{ ticket.priority }} + + + + +
+
+
+
+
+
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/cp/resources/views/layouts/app.twig b/cp/resources/views/layouts/app.twig index fc5b8bd..baace82 100644 --- a/cp/resources/views/layouts/app.twig +++ b/cp/resources/views/layouts/app.twig @@ -326,7 +326,7 @@ -
  • +
  • diff --git a/cp/routes/web.php b/cp/routes/web.php index 0584650..c9a5832 100644 --- a/cp/routes/web.php +++ b/cp/routes/web.php @@ -10,6 +10,7 @@ use App\Controllers\RegistrarsController; use App\Controllers\FinancialsController; use App\Controllers\ReportsController; use App\Controllers\ProfileController; +use App\Controllers\SupportController; use App\Middleware\AuthMiddleware; use App\Middleware\GuestMiddleware; use Slim\Exception\HttpNotFoundException; @@ -46,15 +47,21 @@ $app->group('', function ($route) { $route->get('/contacts', ContactsController::class .':view')->setName('contacts'); $route->map(['GET', 'POST'], '/contact/create', ContactsController::class . ':create')->setName('contactcreate'); - + $route->get('/hosts', HostsController::class .':view')->setName('hosts'); $route->map(['GET', 'POST'], '/host/create', HostsController::class . ':create')->setName('hostcreate'); - + $route->get('/registrars', RegistrarsController::class .':view')->setName('registrars'); $route->get('/logs', LogsController::class .':view')->setName('logs'); $route->get('/reports', ReportsController::class .':view')->setName('reports'); $route->get('/transactions', FinancialsController::class .':transactions')->setName('transactions'); $route->get('/overview', FinancialsController::class .':overview')->setName('overview'); + + $route->get('/support', SupportController::class .':view')->setName('ticketview'); + $route->get('/support/new', SupportController::class .':newticket')->setName('newticket'); + $route->get('/support/docs', SupportController::class .':docs')->setName('docs'); + $route->get('/support/media', SupportController::class .':mediakit')->setName('mediakit'); + $route->get('/profile', ProfileController::class .':profile')->setName('profile'); $route->get('/profile/notifications', ProfileController::class .':notifications')->setName('notifications'); $route->get('/profile/security', ProfileController::class .':security')->setName('security');