С 9:00 до 21:00 Без выходных

catalog/view/template/extension/task_manager/log_list.twig

Вот содержимое файла catalog/view/template/extension/task_manager/log_list.twig:

{% extends 'common/column_left.twig' %}

{% block content %}
  <div class="container">
    <h1>{{ heading_title }}</h1>
    
    <div class="log-filters">
      <div class="filter-item">
        <label for="filter-date">{{ entry_filter_date }}</label>
        <input type="text" id="filter-date" class="form-control" placeholder="{{ placeholder_date }}" />
      </div>
      <div class="filter-item">
        <label for="filter-status">{{ entry_filter_status }}</label>
        <select id="filter-status" class="form-control">
          <option value="">{{ text_all }}</option>
          <option value="1">{{ text_success }}</option>
          <option value="0">{{ text_error }}</option>
        </select>
      </div>
      <div class="filter-item">
        <button id="filter-button" class="btn btn-primary">{{ button_filter }}</button>
      </div>
    </div>

    <div class="log-list">
      {% if logs %}
        <table class="table table-striped">
          <thead>
            <tr>
              <th>{{ column_date }}</th>
              <th>{{ column_type }}</th>
              <th>{{ column_message }}</th>
              <th>{{ column_action }}</th>
            </tr>
          </thead>
          <tbody>
            {% for log in logs %}
              <tr>
                <td>{{ log.date_added }}</td>
                <td>
                  {% if log.type == 1 %}
                    <span class="badge badge-success">{{ text_success }}</span>
                  {% else %}
                    <span class="badge badge-danger">{{ text_error }}</span>
                  {% endif %}
                </td>
                <td>{{ log.message }}</td>
                <td>
                  <a href="{{ log.view_url }}" class="btn btn-info">{{ button_view }}</a>
                </td>
              </tr>
            {% endfor %}
          </tbody>
        </table>
      {% else %}
        <p>{{ text_no_logs }}</p>
      {% endif %}
    </div>

    <div class="pagination">
      {{ pagination }}
    </div>
  </div>

  <script>
    document.addEventListener('DOMContentLoaded', function () {
      // Filter button click event
      document.getElementById('filter-button').addEventListener('click', function () {
        var filterDate = document.getElementById('filter-date').value;
        var filterStatus = document.getElementById('filter-status').value;

        var url = '{{ filter_url }}&date=' + filterDate + '&status=' + filterStatus;

        window.location.href = url;
      });
    });
  </script>
{% endblock %}

Объяснение:

  1. Фильтры для логов:

    • В верхней части страницы есть фильтры для даты и статуса логов. Пользователь может выбрать дату или статус логов (успешный или с ошибкой), а затем нажать кнопку для фильтрации.

  2. Список логов:

    • Таблица с логами содержит дату, тип (успех или ошибка), сообщение лога и кнопку для просмотра подробностей.

    • Лог может быть либо успешным (отображается зеленым значком), либо с ошибкой (отображается красным).

  3. Pagination:

    • Если логов много, добавлена пагинация, чтобы разделить их на несколько страниц.

  4. JavaScript:

    • Сценарий для обработки нажатий на кнопки фильтрации. При нажатии на кнопку фильтрации происходит перезагрузка страницы с новыми параметрами фильтра.

  5. Текстовые переменные и URL:

    • Переменные, такие как heading_title, text_no_logs, text_success, text_error, и другие, динамически подставляются в шаблон.

    • URL фильтрации генерируется на сервере и используется в JavaScript.

  6. Теги:

    • В шаблоне используются стандартные теги for и if для перебора логов и условного отображения их статуса.

Этот шаблон выполняет роль интерфейса для администраторов, где они могут просматривать, фильтровать и искать логи системы.