templates/admin/article/index.html.twig line 1

Open in your IDE?
  1. {% extends 'admin/base.html.twig' %}
  2. {% block title %}Gestion des articles{% endblock %}
  3. {% block body %}
  4. <div class="d-flex justify-content-between align-items-center mb-4">
  5.     <h1><i class="fas fa-newspaper"></i> Articles</h1>
  6.     <div>
  7.         <a href="{{ path('admin_article_new') }}" class="btn btn-primary">
  8.             <i class="fas fa-plus"></i> Nouvel article
  9.         </a>
  10.     </div>
  11. </div>
  12. <div class="card mb-4">
  13.     <div class="card-body">
  14.         <div class="btn-group" role="group">
  15.             <a href="{{ path('admin_articles') }}" 
  16.                class="btn btn-sm btn-outline-secondary {% if current_status == '' %}active{% endif %}">
  17.                 Tous
  18.             </a>
  19.             <a href="{{ path('admin_articles', {status: 'draft'}) }}" 
  20.                class="btn btn-sm btn-outline-secondary {% if current_status == 'draft' %}active{% endif %}">
  21.                 Brouillons
  22.             </a>
  23.             <a href="{{ path('admin_articles', {status: 'pending'}) }}" 
  24.                class="btn btn-sm btn-outline-warning {% if current_status == 'pending' %}active{% endif %}">
  25.                 En attente
  26.             </a>
  27.             <a href="{{ path('admin_articles', {status: 'published'}) }}" 
  28.                class="btn btn-sm btn-outline-success {% if current_status == 'published' %}active{% endif %}">
  29.                 Publiés
  30.             </a>
  31.             <a href="{{ path('admin_articles', {status: 'rejected'}) }}" 
  32.                class="btn btn-sm btn-outline-danger {% if current_status == 'rejected' %}active{% endif %}">
  33.                 Rejetés
  34.             </a>
  35.         </div>
  36.     </div>
  37. </div>
  38. <div class="card">
  39.     <div class="card-body">
  40.         <div class="table-responsive">
  41.             <table class="table table-hover">
  42.                 <thead>
  43.                     <tr>
  44.                         <th>ID</th>
  45.                         <th>Titre</th>
  46.                         <th>Catégorie</th>
  47.                         <th>Statut</th>
  48.                         <th>IA</th>
  49.                         <th>Vues</th>
  50.                         <th>Date création</th>
  51.                         <th>Actions</th>
  52.                     </tr>
  53.                 </thead>
  54.                 <tbody>
  55.                     {% for article in articles %}
  56.                     <tr>
  57.                         <td>{{ article.id }}</td>
  58.                         <td>
  59.                             <strong>{{ article.title|slice(0, 60) }}</strong>
  60.                             {% if article.isFeatured %}
  61.                             <i class="fas fa-star text-warning" title="À la une"></i>
  62.                             {% endif %}
  63.                         </td>
  64.                         <td>
  65.                             <span class="badge bg-secondary">{{ article.category.name }}</span>
  66.                         </td>
  67.                         <td>
  68.                             {% set status_class = {
  69.                                 'draft': 'secondary',
  70.                                 'pending': 'warning',
  71.                                 'published': 'success',
  72.                                 'rejected': 'danger',
  73.                                 'archived': 'dark'
  74.                             } %}
  75.                             <span class="badge bg-{{ status_class[article.status] }}">
  76.                                 {{ article.status }}
  77.                             </span>
  78.                         </td>
  79.                         <td>
  80.                             {% if article.isAiGenerated %}
  81.                             <i class="fas fa-robot text-primary"></i>
  82.                             {% endif %}
  83.                         </td>
  84.                         <td>{{ article.viewCount }}</td>
  85.                         <td>{{ article.createdAt|date('d/m/Y H:i') }}</td>
  86.                         <td>
  87.                             <div class="btn-group btn-group-sm">
  88.                                 <a href="{{ path('admin_article_edit', {id: article.id}) }}" 
  89.                                    class="btn btn-outline-primary">
  90.                                     <i class="fas fa-edit"></i>
  91.                                 </a>
  92.                                 <a href="{{ path('article_preview', {id: article.id}) }}" 
  93.                                    class="btn btn-outline-info" 
  94.                                    target="_blank">
  95.                                     <i class="fas fa-eye"></i>
  96.                                 </a>
  97.                                 {% if article.status != 'published' %}
  98.                                 <form method="post" 
  99.                                       action="{{ path('admin_article_publish', {id: article.id}) }}" 
  100.                                       style="display:inline;">
  101.                                     <button type="submit" 
  102.                                             class="btn btn-outline-success"
  103.                                             onclick="return confirm('Publier cet article ?')">
  104.                                         <i class="fas fa-check"></i>
  105.                                     </button>
  106.                                 </form>
  107.                                 {% endif %}
  108.                             </div>
  109.                         </td>
  110.                     </tr>
  111.                     {% else %}
  112.                     <tr>
  113.                         <td colspan="8" class="text-center text-muted">Aucun article</td>
  114.                     </tr>
  115.                     {% endfor %}
  116.                 </tbody>
  117.             </table>
  118.         </div>
  119.         {% if articles.pageCount > 1 %}
  120.         <div class="mt-3">
  121.             {{ knp_pagination_render(articles) }}
  122.         </div>
  123.         {% endif %}
  124.     </div>
  125. </div>
  126. {% endblock %}