Working state

This commit is contained in:
julien
2026-03-16 13:40:18 +01:00
parent dec76fa2c7
commit 557360dfde
57 changed files with 1044 additions and 1668 deletions

View File

@@ -54,9 +54,7 @@
<input type="hidden" name="{{ csrf.keys.name }}" value="{{ csrf.name }}">
<input type="hidden" name="{{ csrf.keys.value }}" value="{{ csrf.value }}">
<button type="submit" class="btn btn--sm btn--danger"
onclick="return confirm('Supprimer la catégorie « {{ category.name }} » ?
Cette action est impossible si des articles lui sont rattachés.')">
onclick="return confirm('Supprimer la catégorie « {{ category.name }} » ?\n\nCette action est impossible si des articles lui sont rattachés.')">
Supprimer
</button>
</form>
@@ -66,6 +64,8 @@ Cette action est impossible si des articles lui sont rattachés.')">
{% endfor %}
</tbody>
</table>
{% include 'partials/_pagination.twig' with { pagination: pagination } %}
{% else %}
<p><em>Aucune catégorie créée.</em></p>
{% endif %}

View File

@@ -21,12 +21,14 @@
<tr>
<th>Aperçu</th>
<th>URL</th>
<th>Usage</th>
<th>Uploadé le</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for item in media %}
{% set usage = mediaUsage[item.id] ?? {'count': 0, 'posts': []} %}
<tr>
<td data-label="Aperçu">
<div class="upload">
@@ -47,6 +49,18 @@
</div>
</div>
</td>
<td data-label="Usage">
{% if usage.count > 0 %}
<strong>{{ usage.count }} article{{ usage.count > 1 ? 's' : '' }}</strong>
<ul>
{% for post in usage.posts %}
<li><a href="/admin/posts/edit/{{ post.id }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
{% else %}
<span class="admin-table__muted">Aucun</span>
{% endif %}
</td>
<td data-label="Uploadé le">{{ item.createdAt|date("d/m/Y H:i") }}</td>
<td data-label="Actions">
<div class="u-inline-actions">
@@ -54,7 +68,8 @@
<input type="hidden" name="{{ csrf.keys.name }}" value="{{ csrf.name }}">
<input type="hidden" name="{{ csrf.keys.value }}" value="{{ csrf.value }}">
<button type="submit" class="btn btn--sm btn--danger"
onclick="return confirm('Supprimer ce fichier ?\n\nAttention : s\'il est utilisé dans un article, l\'image n\'apparaîtra plus.')">
{% if usage.count > 0 %}disabled title="Supprimez ou remplacez d'abord l'image dans les articles référencés"{% endif %}
onclick="return confirm('Supprimer ce fichier ?')">
Supprimer
</button>
</form>
@@ -64,6 +79,8 @@
{% endfor %}
</tbody>
</table>
{% include 'partials/_pagination.twig' with { pagination: pagination } %}
{% else %}
<p><em>Aucun fichier uploadé.</em></p>
{% endif %}

View File

@@ -25,8 +25,8 @@
{% if searchQuery %}
<p class="search-bar__info">
{% if posts is not empty %}
{{ posts|length }} résultat{{ posts|length > 1 ? 's' : '' }} pour « {{ searchQuery }} »
{% if totalPosts > 0 %}
{{ totalPosts }} résultat{{ totalPosts > 1 ? 's' : '' }} pour « {{ searchQuery }} »
{% else %}
Aucun résultat pour « {{ searchQuery }} »
{% endif %}
@@ -74,8 +74,7 @@
<td data-label="Titre"><strong>{{ post.title }}</strong></td>
<td data-label="Catégorie">
{% if post.categoryName %}
<a href="/admin/posts?categorie={{ post.categorySlug }}"
class="badge badge--category">{{ post.categoryName }}</a>
<a href="/admin/posts?categorie={{ post.categorySlug }}" class="badge badge--category">{{ post.categoryName }}</a>
{% else %}
<span class="admin-table__muted">—</span>
{% endif %}
@@ -101,6 +100,8 @@
{% endfor %}
</tbody>
</table>
{% include 'partials/_pagination.twig' with { pagination: pagination } %}
{% else %}
<p><em>{% if searchQuery %}Aucun résultat pour « {{ searchQuery }} ».{% else %}Aucun article à gérer.{% endif %}</em></p>
{% endif %}

View File

@@ -54,10 +54,12 @@
<label for="role" class="form-container__label">
<span>Rôle</span>
<select id="role" name="role" class="form-container__select">
<option value="user">Utilisateur</option>
<option value="editor">Éditeur</option>
{% for role in assignableRoles %}
<option value="{{ role }}">{% if role == 'editor' %}Éditeur{% else %}Utilisateur{% endif %}</option>
{% endfor %}
</select>
</label>
<small class="form-container__hint">Le rôle administrateur reste réservé au provisionnement initial.</small>
</p>
<div class="form-container__actions">

View File

@@ -58,9 +58,11 @@
<input type="hidden" name="{{ csrf.keys.value }}" value="{{ csrf.value }}">
<div class="u-inline-actions">
<select name="role" class="admin-table__role-select">
<option value="user" {% if user.role == 'user' %}selected{% endif %}>Utilisateur</option>
<option value="editor" {% if user.role == 'editor' %}selected{% endif %}>Éditeur</option>
<option value="admin" {% if user.role == 'admin' %}selected{% endif %}>Admin</option>
{% for role in assignableRoles %}
<option value="{{ role }}" {% if user.role == role %}selected{% endif %}>
{% if role == 'editor' %}Éditeur{% else %}Utilisateur{% endif %}
</option>
{% endfor %}
</select>
<button type="submit" class="btn btn--sm btn--secondary">Modifier</button>
</div>
@@ -89,6 +91,8 @@
{% endfor %}
</tbody>
</table>
{% include 'partials/_pagination.twig' with { pagination: pagination } %}
{% else %}
<p><em>Aucun utilisateur.</em></p>
{% endif %}

View File

@@ -26,8 +26,8 @@
{% if searchQuery %}
<p class="search-bar__info">
{% if posts is not empty %}
{{ posts|length }} résultat{{ posts|length > 1 ? 's' : '' }} pour « {{ searchQuery }} »
{% if totalPosts > 0 %}
{{ totalPosts }} résultat{{ totalPosts > 1 ? 's' : '' }} pour « {{ searchQuery }} »
{% else %}
Aucun résultat pour « {{ searchQuery }} »
{% endif %}
@@ -53,7 +53,6 @@
{% for post in posts %}
{% set thumb = post_thumbnail(post) %}
<article class="card">
<a href="{{ post_url(post) }}" class="card__thumb-link" tabindex="-1" aria-hidden="true">
{% if thumb %}
<img class="card__thumb" src="{{ thumb }}" alt="">
@@ -85,10 +84,11 @@
<a href="{{ post_url(post) }}" class="card__actions-link">Lire la suite →</a>
</div>
</div>
</article>
{% else %}
<p>Aucun article publié{% if searchQuery %} pour « {{ searchQuery }} »{% elseif activeCategory %} dans cette catégorie{% endif %}.</p>
{% endfor %}
</div>
{% include 'partials/_pagination.twig' with { pagination: pagination } %}
{% endblock %}

View File

@@ -0,0 +1,29 @@
{% if pagination.totalPages > 1 %}
<nav class="pagination" aria-label="Pagination">
{% if pagination.hasPrevious %}
<a href="{{ pagination.previousUrl }}" class="btn btn--sm btn--secondary">← Précédent</a>
{% else %}
<span class="admin-table__muted">← Précédent</span>
{% endif %}
<span class="pagination__summary">
Page {{ pagination.currentPage }} sur {{ pagination.totalPages }}
</span>
<span class="pagination__pages">
{% for page in pagination.pages %}
{% if page.current %}
<strong>{{ page.number }}</strong>
{% else %}
<a href="{{ page.url }}">{{ page.number }}</a>
{% endif %}
{% endfor %}
</span>
{% if pagination.hasNext %}
<a href="{{ pagination.nextUrl }}" class="btn btn--sm btn--secondary">Suivant →</a>
{% else %}
<span class="admin-table__muted">Suivant →</span>
{% endif %}
</nav>
{% endif %}