mirror of
https://github.com/getnamingo/registry.git
synced 2025-07-04 10:03:19 +02:00
223 lines
No EOL
13 KiB
Twig
223 lines
No EOL
13 KiB
Twig
{% extends "layouts/app.twig" %}
|
|
|
|
{% block title %}{{ __('Ticket Overview') }}{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="page-wrapper">
|
|
<!-- Page header -->
|
|
<div class="page-header d-print-none">
|
|
<div class="container-xl">
|
|
<div class="row g-2 align-items-center">
|
|
<div class="col">
|
|
<!-- Page pre-title -->
|
|
<div class="page-pretitle">
|
|
{{ __('Overview') }}
|
|
</div>
|
|
<h2 class="page-title">
|
|
{{ __('Ticket Overview') }}
|
|
</h2>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Page body -->
|
|
<div class="page-body">
|
|
<div class="container-xl">
|
|
<div class="col-12">
|
|
{% include 'partials/flash.twig' %}
|
|
<form action="/support/status" method="post">
|
|
{{ csrf.field | raw }}
|
|
<div class="card">
|
|
{% if ticket.priority == 'High' or ticket.priority == 'Critical' %}
|
|
<div class="card-status-top bg-danger"></div>
|
|
{% endif %}
|
|
<div class="card-header">
|
|
<h3 class="card-title">{{ __('Ticket') }} #{{ ticket.id }} - {{ ticket.subject }}</h3>
|
|
<div class="card-actions">
|
|
{% if ticket.status != 'Closed' %}
|
|
<button type="submit" name="action" value="close" class="btn btn-ghost-warning">
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5.641 5.631a9 9 0 1 0 12.719 12.738m1.68 -2.318a9 9 0 0 0 -12.074 -12.098" /><path d="M12 17v.01" /><path d="M12 13.5a1.5 1.5 0 0 1 .394 -1.1m2.106 -1.9a2.6 2.6 0 0 0 -3.347 -3.361" /><path d="M3 3l18 18" /></svg>
|
|
{{ __('Close Ticket') }}
|
|
</button>
|
|
<button type="submit" name="action" value="escalate" class="btn btn-outline-secondary">
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M19.5 7h-2.672a2 2 0 0 0 -1.414 .586l-8.414 8.414h-2.5a2.5 2.5 0 1 0 0 5h3.672a2 2 0 0 0 1.414 -.586l8.414 -8.414h1.5a2.5 2.5 0 1 0 0 -5z" /><path d="M6 10v-7" /><path d="M3 6l3 -3l3 3" /></svg>
|
|
{{ __('Escalate Ticket') }}
|
|
</button>
|
|
{% else %}
|
|
<button type="submit" name="action" value="reopen" class="btn btn-outline-pink">
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M4 12v-3a3 3 0 0 1 3 -3h13m-3 -3l3 3l-3 3" /><path d="M20 12v3a3 3 0 0 1 -3 3h-13m3 3l-3 -3l3 -3" /></svg>
|
|
{{ __('Reopen Ticket') }}
|
|
</button>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</form>
|
|
{% if ticket.status != 'Closed' %}<form action="/support/reply" method="post">
|
|
{{ csrf.field | raw }}
|
|
{% endif %}
|
|
<div class="row g-0">
|
|
<div class="col-12 col-lg-5 col-xl-3 border-end">
|
|
<div class="card-body">
|
|
<div class="datagrid">
|
|
<div class="datagrid-item">
|
|
<div class="datagrid-title">{{ __('Created On') }}</div>
|
|
<div class="datagrid-content"><strong>{{ ticket.date_created }}</strong></div>
|
|
</div>
|
|
<div class="datagrid-item">
|
|
<div class="datagrid-title">{{ __('Category') }}</div>
|
|
<div class="datagrid-content"><span class="status status-indigo">{{ category }}</span></div>
|
|
</div>
|
|
<div class="datagrid-item">
|
|
<div class="datagrid-title">{{ __('Status') }}</div>
|
|
<div class="datagrid-content">
|
|
{% if ticket.status == 'Open' %}
|
|
<span class="status status-success">{{ __('Open') }}</span>
|
|
{% elseif ticket.status == 'In Progress' %}
|
|
<span class="status status-warning">{{ __('In Progress') }}</span>
|
|
{% elseif ticket.status == 'Resolved' %}
|
|
<span class="status status-info">{{ __('Resolved') }}</span>
|
|
{% elseif ticket.status == 'Closed' %}
|
|
<span class="status status-cyan">{{ __('Closed') }}</span>
|
|
{% else %}
|
|
<span class="status status-teal">{{ __('Unknown Status') }}</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="datagrid-item">
|
|
<div class="datagrid-title">{{ __('Priority') }}</div>
|
|
<div class="datagrid-content">
|
|
{% if ticket.priority == 'Low' %}
|
|
<span class="status status-teal">{{ __('Low') }}</span>
|
|
{% elseif ticket.priority == 'Medium' %}
|
|
<span class="status status-blue">{{ __('Medium') }}</span>
|
|
{% elseif ticket.priority == 'High' %}
|
|
<span class="status status-orange">{{ __('High') }}</span>
|
|
{% elseif ticket.priority == 'Critical' %}
|
|
<span class="status status-red">{{ __('Critical') }}</span>
|
|
{% else %}
|
|
<span class="status status-cyan">{{ __('Unknown') }}</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 col-lg-7 col-xl-9 d-flex flex-column">
|
|
<div class="card-body">
|
|
<div class="card mt-4">
|
|
<div class="card-body scrollable" style="height: 35rem">
|
|
<div class="chat">
|
|
<div class="chat-bubbles">
|
|
{% if ticket.user_id != user_id %}
|
|
<div class="chat-item">
|
|
<div class="row align-items-end">
|
|
<div class="col-auto"><span class="avatar">{{ ticket.ticket_creator|slice(0, 2) }}</span></div>
|
|
<div class="col col-lg-6">
|
|
<div class="chat-bubble">
|
|
<div class="chat-bubble-title">
|
|
<div class="row">
|
|
<div class="col chat-bubble-author">{{ ticket.ticket_creator }}</div>
|
|
<div class="col-auto chat-bubble-date">{{ ticket.date_created|date("Y-m-d H:i") }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="chat-bubble-body">
|
|
<p>{{ ticket.message }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="chat-item">
|
|
<div class="row align-items-end justify-content-end">
|
|
<div class="col col-lg-6">
|
|
<div class="chat-bubble chat-bubble-me">
|
|
<div class="chat-bubble-title">
|
|
<div class="row">
|
|
<div class="col chat-bubble-author">{{ ticket.ticket_creator }}</div>
|
|
<div class="col-auto chat-bubble-date">{{ ticket.date_created|date("Y-m-d H:i") }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="chat-bubble-body">
|
|
<p>{{ ticket.message }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-auto"><span class="avatar">{{ ticket.ticket_creator|slice(0, 2) }}</span></div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% for reply in replies %}
|
|
{% if reply.responder_id == user_id %}
|
|
<div class="chat-item">
|
|
<div class="row align-items-end justify-content-end">
|
|
<div class="col col-lg-6">
|
|
<div class="chat-bubble chat-bubble-me">
|
|
<div class="chat-bubble-title">
|
|
<div class="row">
|
|
<div class="col chat-bubble-author">{{ reply.responder_name }}</div>
|
|
<div class="col-auto chat-bubble-date">{{ reply.date_created|date("Y-m-d H:i") }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="chat-bubble-body">
|
|
<p>{{ reply.response }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-auto"><span class="avatar">{{ reply.responder_name|slice(0, 2) }}</span></div>
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="chat-item">
|
|
<div class="row align-items-end">
|
|
<div class="col-auto"><span class="avatar">{{ reply.responder_name|slice(0, 2) }}</span></div>
|
|
<div class="col col-lg-6">
|
|
<div class="chat-bubble">
|
|
<div class="chat-bubble-title">
|
|
<div class="row">
|
|
<div class="col chat-bubble-author">{{ reply.responder_name }}</div>
|
|
<div class="col-auto chat-bubble-date">{{ reply.date_created|date("Y-m-d H:i") }}</div>
|
|
</div>
|
|
</div>
|
|
<div class="chat-bubble-body">
|
|
<p>{{ reply.response }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if ticket.status != 'Closed' %}
|
|
<div class="mt-3">
|
|
<label for="responseText" class="form-label">{{ __('Your Response') }}</label>
|
|
<textarea class="form-control" id="responseText" name="responseText" rows="3" required></textarea>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{% if ticket.status != 'Closed' %}
|
|
<div class="card-footer">
|
|
<div class="row align-items-center">
|
|
<div class="col-auto">
|
|
<button type="submit" class="btn btn-primary">{{ __('Submit Response') }}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% if ticket.status != 'Closed' %}</form>{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% include 'partials/footer.twig' %}
|
|
</div>
|
|
{% endblock %} |