93 lines
3.2 KiB
Twig
93 lines
3.2 KiB
Twig
{# app/Modules/Clients/Views/_table.twig #}
|
|
|
|
{# Определяем тип запроса: AJAX = только tbody + footer #}
|
|
{% set isAjax = app.request.headers.get('X-Requested-With') == 'XMLHttpRequest' %}
|
|
|
|
{# Настройки пагинации - ИСПОЛЬЗУЕМ pagerDetails напрямую #}
|
|
{% if pagerDetails is defined %}
|
|
{% set pagination = pagerDetails %}
|
|
{% else %}
|
|
{# Fallback если pagerDetails нет #}
|
|
{% set pagination = {
|
|
currentPage: 1,
|
|
totalPages: 1,
|
|
total: clients|length|default(0),
|
|
perPage: perPage|default(10),
|
|
from: 1,
|
|
to: clients|length|default(0)
|
|
} %}
|
|
{% endif %}
|
|
|
|
|
|
{# Проверка на пустое состояние #}
|
|
{% set isEmpty = clients is empty or clients|length == 0 %}
|
|
|
|
{# AJAX запрос - tbody + footer #}
|
|
<tbody>
|
|
{% if isEmpty %}
|
|
<tr>
|
|
<td colspan="4" class="text-center py-5">
|
|
<i class="fa-solid fa-users text-muted mb-3" style="font-size: 3rem;"></i>
|
|
<p class="text-muted mb-3">
|
|
{% if filters.name or filters.email or filters.phone %}
|
|
Клиенты не найдены
|
|
{% else %}
|
|
Клиентов пока нет
|
|
{% endif %}
|
|
</p>
|
|
<a href="{{ base_url('/clients/new') }}" class="btn btn-primary">
|
|
<i class="fa-solid fa-plus me-2"></i>Добавить клиента
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
{% else %}
|
|
{% for client in clients %}
|
|
<tr>
|
|
<td>
|
|
<div class="d-flex align-items-center">
|
|
<div class="bg-primary text-white rounded-circle d-flex justify-content-center align-items-center me-3" style="width:40px;height:40px;">
|
|
{{ client.name|first|upper }}
|
|
</div>
|
|
<div>
|
|
<strong>{{ client.name }}</strong>
|
|
{% if client.notes %}
|
|
<br><small class="text-muted">{{ client.notes|slice(0, 50) }}{{ client.notes|length > 50 ? '...' : '' }}</small>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
{% if client.email %}
|
|
<a href="mailto:{{ client.email }}">{{ client.email }}</a>
|
|
{% else %}
|
|
<span class="text-muted">—</span>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if client.phone %}
|
|
<a href="tel:{{ client.phone }}">{{ client.phone }}</a>
|
|
{% else %}
|
|
<span class="text-muted">—</span>
|
|
{% endif %}
|
|
</td>
|
|
<td class="text-end">
|
|
<a href="{{ base_url('/clients/edit/' ~ client.id) }}" class="btn btn-sm btn-outline-primary" title="Редактировать">
|
|
<i class="fa-solid fa-pen"></i>
|
|
</a>
|
|
<a href="{{ base_url('/clients/delete/' ~ client.id) }}" class="btn btn-sm btn-outline-danger" title="Удалить" onclick="return confirm('Вы уверены что хотите удалить этого клиента?');">
|
|
<i class="fa-solid fa-trash"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</tbody>
|
|
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="4">
|
|
{{ include('@components/table/pagination.twig', { pagination: pagination, id: 'clients-table' }) }}
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|