qualiwiki/templates/admin/wiki_recent_changes.html.twig

173 lines
10 KiB
Twig
Raw Normal View History

2025-09-01 18:28:23 +02:00
{% extends 'base.html.twig' %}
{% block title %}Changements récents Wiki OSM{% endblock %}
{% block body %}
<div class="container mt-4">
<h1>Changements récents Wiki OpenStreetMap</h1>
<p class="lead">Liste des changements récents dans l'espace de noms français du wiki OpenStreetMap.</p>
{% if last_updated %}
<div class="alert alert-info">
<i class="bi bi-info-circle"></i> Dernière mise à jour : {{ last_updated|date('d/m/Y H:i') }}
</div>
{% endif %}
{% if team_members|length > 0 %}
<div class="card mb-4">
<div class="card-header bg-success text-white">
<h2>Équipe Wiki OSM FR</h2>
<p class="mb-0">Contributeurs classés par nombre de modifications</p>
</div>
<div class="card-body">
<div class="row">
{% for member in team_members %}
<div class="col-md-4 mb-3">
<div class="d-flex align-items-center">
{% if member.avatar_url is defined and member.avatar_url %}
<img src="{{ member.avatar_url }}" alt="{{ member.username }}" class="rounded-circle me-2" style="width: 40px; height: 40px; object-fit: cover;">
{% else %}
<div class="rounded-circle bg-secondary text-white d-flex align-items-center justify-content-center me-2" style="width: 40px; height: 40px;">
<span>{{ member.username|first|upper }}</span>
</div>
{% endif %}
<div>
<a href="{{ member.user_url }}" target="_blank" class="text-decoration-none">
<span class="fw-bold">{{ member.username }}</span>
</a>
<span class="badge bg-primary ms-2">{{ member.contributions }}</span>
<div class="small">
<span class="text-success" title="Caractères ajoutés">+{{ member.chars_added }}</span>
{% if member.chars_changed > 0 %}
<span class="text-warning" title="Caractères modifiés">~{{ member.chars_changed }}</span>
{% endif %}
{% if member.chars_deleted > 0 %}
<span class="text-danger" title="Caractères supprimés">-{{ member.chars_deleted }}</span>
{% endif %}
</div>
2025-09-01 18:28:23 +02:00
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endif %}
<div class="card mb-4">
<div class="card-header bg-primary text-white">
<h2>Changements récents</h2>
<p class="mb-0">
<a href="https://wiki.openstreetmap.org/w/index.php?hidebots=1&hidepreviousrevisions=1&hidecategorization=1&hideWikibase=1&hidelog=1&hidenewuserlog=1&namespace=202&limit=500&days=30&enhanced=1&title=Special:RecentChanges&urlversion=2"
target="_blank" class="text-white">
<i class="bi bi-box-arrow-up-right"></i> Voir sur le wiki OSM
</a>
</p>
</div>
<div class="card-body">
{% if recent_changes|length > 0 %}
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead class="thead-dark">
<tr>
<th>Page</th>
<th>Date</th>
<th>Utilisateur</th>
<th>Commentaire</th>
<th>Taille</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for change in recent_changes %}
<tr>
<td>
<strong>
<a href="{{ change.page_url }}" target="_blank" class="text-decoration-none">
{{ change.page_name }}
</a>
</strong>
</td>
<td>{{ change.timestamp }}</td>
<td>
<div class="d-flex align-items-center">
{% if change.avatar_url is defined and change.avatar_url %}
<img src="{{ change.avatar_url }}" alt="{{ change.user }}" class="rounded-circle me-2" style="width: 30px; height: 30px; object-fit: cover;">
{% else %}
<div class="rounded-circle bg-secondary text-white d-flex align-items-center justify-content-center me-2" style="width: 30px; height: 30px; font-size: 0.8rem;">
<span>{{ change.user|first|upper }}</span>
</div>
{% endif %}
{% if change.user_url %}
<a href="{{ change.user_url }}" target="_blank" class="text-decoration-none">
{{ change.user }}
</a>
{% else %}
2025-09-01 18:28:23 +02:00
{{ change.user }}
{% endif %}
</div>
2025-09-01 18:28:23 +02:00
</td>
<td>
{{ change.comment }}
{% if change.added_text or change.removed_text %}
<div class="mt-1 small">
{% if change.added_text %}
<span class="text-success">{{ change.added_text }}</span>
{% endif %}
{% if change.removed_text %}
<span class="text-danger">{{ change.removed_text }}</span>
{% endif %}
</div>
{% endif %}
</td>
<td>
{% if change.change_size starts with '+' or change.change_size > 0 %}
<span class="text-success">{{ change.change_size }}</span>
{% elseif change.change_size starts with '' or change.change_size < 0 %}
<span class="text-danger">{{ change.change_size }}</span>
{% else %}
{{ change.change_size }}
{% endif %}
</td>
<td>
<a href="{{ change.page_url }}" target="_blank" class="btn btn-sm btn-outline-primary">
<i class="bi bi-box-arrow-up-right"></i> Voir
</a>
{% if change.diff_url %}
<a href="{{ change.diff_url }}" target="_blank" class="btn btn-sm btn-outline-secondary mt-1">
<i class="bi bi-file-diff"></i> Diff
</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="alert alert-info">
<p><i class="bi bi-info-circle"></i> Aucun changement récent n'a été trouvé.</p>
</div>
{% endif %}
</div>
</div>
<div class="card mb-4">
<div class="card-header">
<h2>À propos des changements récents</h2>
</div>
<div class="card-body">
<p>Cette page affiche les changements récents dans l'espace de noms français (FR:) du wiki OpenStreetMap.</p>
<p>Ces informations sont utiles pour suivre les traductions manquantes et les mises à jour des pages wiki.</p>
<p>Les données sont mises à jour automatiquement toutes les heures.</p>
</div>
</div>
<div class="mt-3">
<a href="{{ path('app_admin_wiki') }}" class="btn btn-secondary">
<i class="bi bi-arrow-left"></i> Retour à la liste des pages wiki
</a>
</div>
</div>
{% endblock %}