up wiki compare

This commit is contained in:
Tykayn 2025-08-22 17:58:04 +02:00 committed by tykayn
parent ce508974c9
commit 2f49ef6479
23 changed files with 567403 additions and 5132 deletions

View file

@ -0,0 +1,37 @@
<nav class="navbar navbar-expand-lg navbar-light bg-light mb-4">
<div class="container-fluid">
<a class="navbar-brand" href="{{ path('app_admin_wiki') }}">Wiki OSM</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#wikiNavbar" aria-controls="wikiNavbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="wikiNavbar">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link {% if app.request.get('_route') == 'app_admin_wiki' %}active{% endif %}" href="{{ path('app_admin_wiki') }}">
<i class="bi bi-list-ul"></i> Liste des pages
</a>
</li>
<li class="nav-item">
<a class="nav-link {% if app.request.get('_route') == 'app_admin_wiki_random_suggestion' %}active{% endif %}" href="{{ path('app_admin_wiki_random_suggestion') }}">
<i class="bi bi-shuffle"></i> Suggestion aléatoire
</a>
</li>
<li class="nav-item">
<a class="nav-link {% if app.request.get('_route') == 'app_admin_wiki_tag_proposals' %}active{% endif %}" href="{{ path('app_admin_wiki_tag_proposals') }}">
<i class="bi bi-tag"></i> Propositions de tags
</a>
</li>
<li class="nav-item">
<a class="nav-link {% if app.request.get('_route') == 'app_admin_wiki_suspicious_deletions' %}active{% endif %}" href="{{ path('app_admin_wiki_suspicious_deletions') }}">
<i class="bi bi-exclamation-triangle"></i> Suppressions suspectes
</a>
</li>
<li class="nav-item">
<a class="nav-link {% if app.request.get('_route') == 'app_admin_wiki_missing_translations' %}active{% endif %}" href="{{ path('app_admin_wiki_missing_translations') }}">
<i class="bi bi-translate"></i> Pages sans traduction
</a>
</li>
</ul>
</div>
</div>
</nav>

View file

@ -4,6 +4,8 @@
{% block body %}
<div class="container mt-4">
{% include 'admin/_wiki_navigation.html.twig' %}
<h1>Pages Wiki OpenStreetMap</h1>
<p class="lead">Comparaison des pages wiki en français et en anglais pour les clés OSM les plus utilisées.</p>

View file

@ -8,14 +8,29 @@
transform: none !important;
box-shadow: none !important;
}
.title-level-1 {
font-weight: bold;
}
.title-level-2 {
padding-left: 1.5rem;
}
.title-level-3 {
padding-left: 2.8rem;
}
.title-level-4 {
padding-left: 4rem;
}
.title-level-5 {
padding-left: 5.2rem;
}
.title-level-6 {
padding-left: 6.4rem;
font-size: 0.9rem;
}
</style>
<div class="container mt-4">
{% include 'admin/_wiki_navigation.html.twig' %}
<h1>Comparaison Wiki OpenStreetMap - {{ key }}</h1>
<p class="lead">Comparaison détaillée des pages wiki en français et en anglais pour la clé OSM "{{ key }}".</p>
@ -118,22 +133,20 @@
<span class="badge bg-light text-dark">{{ en_page.sections }} sections</span>
</div>
<div class="card-body">
{# <h4>Sections communes ({{ detailed_comparison.section_comparison.common|length }})</h4>#}
{# <ul class="list-group mb-3">#}
{# {% for section in detailed_comparison.section_comparison.common %}#}
{# <li class="list-group-item">#}
{# <span class="badge bg-secondary">h{{ section.en.level }}</span>#}
{# {{ section.en.title }}#}
{# </li>#}
{# {% endfor %}#}
{# </ul>#}
<h4>Sections uniquement en anglais ({{ detailed_comparison.section_comparison.en_only|length }})</h4>
<ul class="list-group">
<h4>Sections alignées par hiérarchie</h4>
<ul class="list-group mb-3">
{% for section in detailed_comparison.section_comparison.common %}
<li class="list-group-item title-level-{{ section.en.level }}">
<span class="badge bg-secondary">h{{ section.en.level }}</span>
{{ section.en.title }}
</li>
{% endfor %}
{% for section in detailed_comparison.section_comparison.en_only %}
<li class="list-group-item list-group-item-warning title-level-{{ section.level }}">
<li class="list-group-item list-group-item-warning title-level-{{ section.level }}">
<span class="badge bg-secondary">h{{ section.level }}</span>
{{ section.title }}
<span class="badge bg-warning text-dark float-end">EN uniquement</span>
</li>
{% endfor %}
</ul>
@ -147,22 +160,20 @@
<span class="badge bg-light text-dark">{{ fr_page.sections }} sections</span>
</div>
<div class="card-body">
{# <h4>Sections communes ({{ detailed_comparison.section_comparison.common|length }})</h4>#}
{# <ul class="list-group mb-3">#}
{# {% for section in detailed_comparison.section_comparison.common %}#}
{# <li class="list-group-item">#}
{# <span class="badge bg-secondary">h{{ section.fr.level }}</span>#}
{# {{ section.fr.title }}#}
{# </li>#}
{# {% endfor %}#}
{# </ul>#}
<h4>Sections uniquement en français ({{ detailed_comparison.section_comparison.fr_only|length }})</h4>
<ul class="list-group">
<h4>Sections alignées par hiérarchie</h4>
<ul class="list-group mb-3">
{% for section in detailed_comparison.section_comparison.common %}
<li class="list-group-item title-level-{{ section.fr.level }}">
<span class="badge bg-secondary">h{{ section.fr.level }}</span>
{{ section.fr.title }}
</li>
{% endfor %}
{% for section in detailed_comparison.section_comparison.fr_only %}
<li class="list-group-item list-group-item-info title-level-{{ section.level }}">
<li class="list-group-item list-group-item-info title-level-{{ section.level }}">
<span class="badge bg-secondary">h{{ section.level }}</span>
{{ section.title }}
<span class="badge bg-info float-end">FR uniquement</span>
</li>
{% endfor %}
</ul>

View file

@ -0,0 +1,83 @@
{% extends 'base.html.twig' %}
{% block title %}Pages Wiki françaises sans traduction anglaise{% endblock %}
{% block body %}
<div class="container mt-4">
{% include 'admin/_wiki_navigation.html.twig' %}
<h1>Pages Wiki françaises sans traduction anglaise</h1>
<p class="lead">Liste des pages françaises du wiki OSM qui n'ont pas de traduction en anglais.</p>
<div class="card mb-4">
<div class="card-header">
<h2>Pages françaises uniquement</h2>
</div>
<div class="card-body">
{% if french_only_pages|length > 0 %}
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead class="thead-dark">
<tr>
<th>Clé</th>
<th>Sections</th>
<th>Mots</th>
<th>Liens</th>
<th>Dernière modification</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for key, page in french_only_pages %}
<tr>
<td><strong>{{ key }}</strong></td>
<td>{{ page.sections }}</td>
<td>{{ page.word_count }}</td>
<td>{{ page.link_count }}</td>
<td>{{ page.last_modified }}</td>
<td>
<div class="btn-group" role="group">
<a href="{{ page.url }}" target="_blank" class="btn btn-sm btn-outline-info" title="Version française">
<i class="bi bi-translate"></i> FR
</a>
<a href="https://wiki.openstreetmap.org/wiki/Key:{{ key }}" target="_blank" class="btn btn-sm btn-success" title="Créer la version anglaise">
<i class="bi bi-plus-circle"></i> Créer EN
</a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="alert alert-info">
<p><i class="bi bi-info-circle"></i> Aucune page française sans traduction anglaise n'a été trouvée.</p>
</div>
{% endif %}
</div>
</div>
<div class="card mb-4">
<div class="card-header">
<h2>À propos des pages sans traduction anglaise</h2>
</div>
<div class="card-body">
<p>Ces pages sont des contenus originaux créés en français qui n'ont pas encore été traduits en anglais.</p>
<p>Bien que la langue principale du wiki OSM soit l'anglais, il est parfois utile de créer d'abord du contenu dans sa langue maternelle, puis de le traduire.</p>
<p>Contribuer à la traduction de ces pages en anglais permet de :</p>
<ul>
<li>Partager les connaissances avec la communauté internationale</li>
<li>Améliorer la visibilité des contributions françaises</li>
<li>Faciliter la collaboration entre contributeurs de différentes langues</li>
</ul>
</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 %}

View file

@ -0,0 +1,122 @@
{% extends 'base.html.twig' %}
{% block title %}Suggestion de page Wiki à améliorer{% endblock %}
{% block body %}
<div class="container mt-4">
{% include 'admin/_wiki_navigation.html.twig' %}
<h1>Suggestion de page Wiki à améliorer</h1>
<p class="lead">Voici une page wiki qui a besoin d'être améliorée.</p>
<div class="card mb-4">
<div class="card-header bg-primary text-white">
<h2>{{ page.key }}</h2>
</div>
<div class="card-body">
<div class="alert alert-info">
<h3>Raisons d'amélioration</h3>
<p>{{ page.reason }}</p>
</div>
<div class="row">
<div class="col-md-6">
<div class="card h-100">
<div class="card-header bg-primary text-white">
<h3>Version anglaise</h3>
<p class="mb-0">
<small>Dernière modification: {{ page.en_page.last_modified }}</small>
</p>
</div>
<div class="card-body">
<ul class="list-group mb-3">
<li class="list-group-item d-flex justify-content-between align-items-center">
Sections
<span class="badge bg-primary rounded-pill">{{ page.en_page.sections }}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
Mots
<span class="badge bg-primary rounded-pill">{{ page.en_page.word_count|default(0) }}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
Liens
<span class="badge bg-primary rounded-pill">{{ page.en_page.link_count|default(0) }}</span>
</li>
</ul>
<div class="d-grid gap-2">
<a href="{{ page.en_page.url }}" target="_blank" class="btn btn-outline-primary">
<i class="bi bi-box-arrow-up-right"></i> Voir la page anglaise
</a>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card h-100">
<div class="card-header bg-info text-white">
<h3>Version française</h3>
{% if page.fr_page %}
<p class="mb-0">
<small>Dernière modification: {{ page.fr_page.last_modified }}</small>
</p>
{% else %}
<p class="mb-0">
<small>Page non existante</small>
</p>
{% endif %}
</div>
<div class="card-body">
{% if page.fr_page %}
<ul class="list-group mb-3">
<li class="list-group-item d-flex justify-content-between align-items-center">
Sections
<span class="badge bg-info rounded-pill">{{ page.fr_page.sections }}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
Mots
<span class="badge bg-info rounded-pill">{{ page.fr_page.word_count|default(0) }}</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
Liens
<span class="badge bg-info rounded-pill">{{ page.fr_page.link_count|default(0) }}</span>
</li>
</ul>
<div class="d-grid gap-2">
<a href="{{ page.fr_page.url }}" target="_blank" class="btn btn-outline-info">
<i class="bi bi-box-arrow-up-right"></i> Voir la page française
</a>
</div>
{% else %}
<div class="alert alert-warning">
<p><i class="bi bi-exclamation-triangle"></i> <strong>La page wiki pour la clé "{{ page.key }}" n'existe pas en français.</strong></p>
<p>Vous pouvez contribuer en créant cette page sur le wiki OpenStreetMap.</p>
</div>
<div class="d-grid gap-2">
<a href="https://wiki.openstreetmap.org/wiki/FR:Key:{{ page.key }}" target="_blank" class="btn btn-success">
<i class="bi bi-plus-circle"></i> Créer la page française
</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<div class="mt-4 d-grid gap-2">
<a href="{{ path('app_admin_wiki_compare', {'key': page.key}) }}" class="btn btn-primary">
<i class="bi bi-arrows-angle-expand"></i> Voir la comparaison détaillée
</a>
<a href="{{ path('app_admin_wiki_random_suggestion') }}" class="btn btn-secondary">
<i class="bi bi-shuffle"></i> Autre suggestion aléatoire
</a>
</div>
</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 %}

View file

@ -0,0 +1,94 @@
{% extends 'base.html.twig' %}
{% block title %}Pages Wiki avec suppressions suspectes{% endblock %}
{% block body %}
<div class="container mt-4">
{% include 'admin/_wiki_navigation.html.twig' %}
<h1>Pages Wiki avec suppressions suspectes</h1>
<p class="lead">Pages françaises du wiki OSM qui ont des suppressions suspectes, avec un grand pourcentage de suppression par rapport à la version anglaise.</p>
<div class="card mb-4">
<div class="card-header">
<h2>Pages avec suppressions suspectes</h2>
</div>
<div class="card-body">
{% if suspicious_pages|length > 0 %}
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead class="thead-dark">
<tr>
<th>Clé</th>
<th>Mots (EN)</th>
<th>Mots (FR)</th>
<th>Différence</th>
<th>% Suppression</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for page in suspicious_pages %}
<tr>
<td><strong>{{ page.key }}</strong></td>
<td>{{ page.en_page.word_count }}</td>
<td>{{ page.fr_page.word_count }}</td>
<td>{{ page.en_page.word_count - page.fr_page.word_count }}</td>
<td>
{% if page.deletion_percentage > 70 %}
<span class="badge bg-danger">{{ page.deletion_percentage }}%</span>
{% elseif page.deletion_percentage > 50 %}
<span class="badge bg-warning text-dark">{{ page.deletion_percentage }}%</span>
{% else %}
<span class="badge bg-info">{{ page.deletion_percentage }}%</span>
{% endif %}
</td>
<td>
<div class="btn-group" role="group">
<a href="{{ page.en_page.url }}" target="_blank" class="btn btn-sm btn-outline-primary" title="Version anglaise">
<i class="bi bi-translate"></i> EN
</a>
<a href="{{ page.fr_page.url }}" target="_blank" class="btn btn-sm btn-outline-info" title="Version française">
<i class="bi bi-translate"></i> FR
</a>
<a href="{{ path('app_admin_wiki_compare', {'key': page.key}) }}" class="btn btn-sm btn-outline-secondary" title="Comparer les versions">
<i class="bi bi-arrows-angle-expand"></i> Comparer
</a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="alert alert-info">
<p><i class="bi bi-info-circle"></i> Aucune page avec suppressions suspectes n'a été trouvée.</p>
</div>
{% endif %}
</div>
</div>
<div class="card mb-4">
<div class="card-header">
<h2>À propos des suppressions suspectes</h2>
</div>
<div class="card-body">
<p>Les suppressions suspectes sont identifiées lorsque la version française d'une page wiki contient significativement moins de mots que la version anglaise (plus de 30% de différence).</p>
<p>Cela peut indiquer :</p>
<ul>
<li>Une traduction incomplète</li>
<li>Des sections manquantes dans la version française</li>
<li>Des mises à jour importantes dans la version anglaise qui n'ont pas été reportées en français</li>
</ul>
<p>Ces pages sont des candidates prioritaires pour une mise à jour de la traduction française.</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 %}

View file

@ -0,0 +1,92 @@
{% extends 'base.html.twig' %}
{% block title %}Propositions de tags OSM{% endblock %}
{% block body %}
<div class="container mt-4">
{% include 'admin/_wiki_navigation.html.twig' %}
<h1>Propositions de tags OSM en cours de vote</h1>
<p class="lead">Liste des propositions de tags OpenStreetMap actuellement en cours de vote ou de discussion.</p>
<div class="card mb-4">
<div class="card-header">
<h2>Propositions actives</h2>
</div>
<div class="card-body">
{% if proposals|length > 0 %}
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead class="thead-dark">
<tr>
<th>Fonctionnalité</th>
<th>Description</th>
<th>Proposé par</th>
<th>Statut</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for proposal in proposals %}
<tr>
<td>{{ proposal.feature }}</td>
<td>{{ proposal.description }}</td>
<td>{{ proposal.proposer }}</td>
<td>
{% if 'voting' in proposal.status|lower %}
<span class="badge bg-primary">En vote</span>
{% elseif 'draft' in proposal.status|lower %}
<span class="badge bg-warning text-dark">Brouillon</span>
{% elseif 'rfc' in proposal.status|lower %}
<span class="badge bg-info">RFC</span>
{% else %}
<span class="badge bg-secondary">{{ proposal.status }}</span>
{% endif %}
</td>
<td>
<a href="{{ proposal.url }}" target="_blank" class="btn btn-sm btn-outline-primary">
<i class="bi bi-box-arrow-up-right"></i> Voir
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="alert alert-info">
<p><i class="bi bi-info-circle"></i> Aucune proposition de tag n'a été trouvée.</p>
</div>
{% endif %}
</div>
</div>
<div class="card mb-4">
<div class="card-header">
<h2>À propos des propositions de tags</h2>
</div>
<div class="card-body">
<p>Les propositions de tags sont un processus communautaire pour introduire de nouveaux tags ou modifier des tags existants dans OpenStreetMap.</p>
<p>Le processus typique comprend les étapes suivantes :</p>
<ol>
<li><strong>Brouillon</strong> : La proposition initiale est rédigée et discutée.</li>
<li><strong>RFC (Request for Comments)</strong> : La proposition est ouverte aux commentaires de la communauté.</li>
<li><strong>Vote</strong> : La proposition est soumise au vote de la communauté.</li>
<li><strong>Approbation ou rejet</strong> : Selon les résultats du vote, la proposition est approuvée ou rejetée.</li>
</ol>
<p>Vous pouvez participer à ce processus en commentant les propositions ou en votant lorsqu'elles sont en phase de vote.</p>
<div class="d-grid gap-2 col-md-6 mx-auto mt-3">
<a href="https://wiki.openstreetmap.org/wiki/Proposed_features" target="_blank" class="btn btn-outline-primary">
<i class="bi bi-box-arrow-up-right"></i> Voir toutes les propositions sur le wiki OSM
</a>
</div>
</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 %}