Aller au contenu

Aide:Structure du wiki

De livre noir
Ceci est la version approuvée de la page et aussi la plus récente.

Documentation technique : comment le site est construit, comment il fonctionne, et comment le faire évoluer. Pour la liste détaillée des modèles, voir Aide:Modèles.

Principe général

Le site repose sur MediaWiki et trois extensions principales :

  • Cargo stocke les informations des fiches dans des tables, comme une base de données.
  • Page Forms fournit le formulaire de saisie.
  • ParserFunctions permet les conditions et calculs dans les modèles.

Chaque fiche appelle le modèle Modèle:Affaire, qui enregistre ses champs dans une table. Toutes les listes, compteurs, frises et classements du site sont des requêtes sur ces tables : ils se mettent à jour seuls, sans jamais être écrits à la main.

Types de pages

Type Modèle Rôle
Fiche Affaire (+ Victime, Blessé) Un fait précis, avec un statut. Créée via Formulaire:Affaire.
Analyse Analyse Mise en relation de faits et de chiffres, avec une conclusion de la rédaction.
Dossier Dossier Regroupe des fiches de plusieurs catégories autour d'un événement.
Catégorie Catégorie du site Liste automatique des fiches d'une catégorie.
Personne Personne Liste automatique des fiches qui citent la personne.
Institution Institution Liste automatique des fiches qui concernent l'institution.

Tables Cargo

Table Déclarée par Champs
Affaires Modèle:Affaire Categorie, Dossier (liste), DateFaits, Lieu, Departement, Institution (liste), Personnes (liste), Citation, Montant, Decision, Statut, Resume, Sources (liste, séparateur ;), Verifie
Victimes Modèle:Victime Nom, Age, DateDeces, Cause
Blesses Modèle:Blessé Nom, Age, DateBlessure, Blessure, Arme
Categories Modèle:Catégorie du site Description, Couleur, Ordre
Dossiers Modèle:Dossier Description, Periode, Couleur
Analyses Modèle:Analyse Theme, MiseAJour, Resume

Les tables et leur contenu sont visibles sur Spécial:CargoTables. Victimes et Blesses sont reliées aux fiches par le nom de la page (_pageName).

Pages de navigation

Accueil · Catégories · Dossiers · Analyses · Toutes les fiches · Frise chronologique · Personnes · Institutions · Aide:Statuts · Lexique · Sources et ressources · À propos

Circuit d'une fiche

  1. Un contributeur crée la fiche avec le formulaire. Elle est marquée « non vérifiée ».
  2. Si Approved Revs est installé, la modification reste invisible au public jusqu'à son approbation par un relecteur ou un administrateur (page Spécial:Révisions_approuvées).
  3. Un relecteur vérifie chaque information contre ses sources, puis passe « Fiche vérifiée » à Oui.

Les relecteurs sont nommés sur Spécial:Droits_des_utilisateurs (groupe « relecteur »).

Faire évoluer le site

Ajouter une catégorie

  1. Créer une page portant le nom de la catégorie, contenant : {{Catégorie du site|Ordre=15|Couleur=#123456|Description=...}}
  2. Elle apparaît automatiquement sur l'accueil, la page Catégories et dans le formulaire.
  3. Ajouter à la main un lien dans MediaWiki:Sidebar.

Ajouter un dossier

  1. Créer une page portant le nom du dossier, contenant : {{Dossier|Periode=...|Couleur=#...|Description=...}}
  2. Indiquer ce nom dans le champ « Dossier » des fiches concernées.

Ajouter un statut

  1. Ajouter sa ligne dans Modèle:Statut, avant |#default=.
  2. L'ajouter à la liste allowed values du champ Statut dans Modèle:Affaire, puis reconstruire la table Affaires.
  3. L'ajouter à la liste values= du champ Statut dans Formulaire:Affaire.
  4. L'expliquer dans Aide:Statuts.

Ajouter un champ aux fiches

  1. L'ajouter dans cargo_declare et cargo_store de Modèle:Affaire, et dans l'encadré si on veut l'afficher.
  2. L'ajouter dans Formulaire:Affaire.
  3. Reconstruire la table Affaires.

Maintenance

Commandes à lancer sur le serveur, depuis le dossier du docker-compose. L'ordre compte lorsque Approved Revs est installé : approuver, puis recalculer les liens, puis reconstruire les tables.

# 1. Approuver toutes les pages (Approved Revs)
sudo docker compose exec wiki php extensions/ApprovedRevs/maintenance/approveAllPages.php

# 2. Recalculer les liens entre pages et modèles
sudo docker compose exec wiki php maintenance/run.php refreshLinks

# 3. Reconstruire une table Cargo (remplacer Affaires par le nom de la table)
sudo docker compose exec wiki php maintenance/run.php ./extensions/Cargo/maintenance/cargoRecreateData.php --table Affaires

# 4. Mettre à jour la base après l'ajout d'une extension
sudo docker compose exec wiki php maintenance/run.php update --quick

Une page qui affiche des données anciennes se rafraîchit en ajoutant ?action=purge à son adresse.

Problèmes fréquents

« Erreur
table X non trouvée »
La table n'existe pas encore. Réenregistrer le modèle qui la déclare (avec une petite modification), puis reconstruire la table.
Une fiche n'apparaît pas dans les listes
Elle n'est pas approuvée, ou ses liens n'ont pas été calculés. Approuver, lancer refreshLinks, reconstruire la table.
La reconstruction affiche « pages 1 to 0 »
MediaWiki ne sait pas quelles pages utilisent le modèle. Lancer refreshLinks puis recommencer.
« fonction SQL non autorisée »
Cargo n'autorise qu'une liste limitée de fonctions SQL (par exemple pas RAND()).

Configuration

Extensions utilisées, déclarées dans LocalSettings.php :

Extension Rôle Obligatoire
Cargo Tables de données et requêtes Oui
Page Forms Formulaire de saisie Oui
ParserFunctions Conditions et calculs dans les modèles Oui
Cite Notes et références (<ref>) Oui
Approved Revs Relecture avant publication Recommandée
ConfirmEdit (QuestyCaptcha) Anti-spam à la création de compte Recommandée
AbuseFilter Filtres automatiques contre le vandalisme Recommandée
VisualEditor, WikiEditor, CodeMirror Édition visuelle et coloration du code Confort
EmbedVideo Vidéos intégrées Optionnelle

Réglages importants :

// Approved Revs : les modèles et formulaires ne passent pas par la relecture
$egApprovedRevsEnabledNamespaces[NS_TEMPLATE] = false;
$egApprovedRevsEnabledNamespaces[106] = false;   // espace Formulaire
// Seuls les administrateurs modifient modèles et formulaires
$wgNamespaceProtection[NS_TEMPLATE] = [ 'editinterface' ];
$wgNamespaceProtection[106] = [ 'editinterface' ];

Utiliser le numéro 106 et non la constante PF_NS_FORM, qui n'est pas encore définie quand LocalSettings.php est lu.

Réinstaller la structure

Le script installer-structure.sh recrée tous les modèles, le formulaire, les pages de catégorie, de navigation et d'aide, l'accueil et la barre latérale, sans toucher aux fiches. Les coordonnées de contact et l'adresse de don se renseignent en haut du script.