Visibilité par article (masqué/visible) — supprimer les catégories privées #39

Open
opened 2026-05-13 22:09:56 +00:00 by cedricAbonnel · 0 comments
Owner

Contexte

Actuellement, la notion de "privé/public" est portée par la catégorie : un fichier data/private_cats.json liste les catégories dont tous les articles sont cachés aux visiteurs anonymes. Le toggle "🔒 Privée / Publique" apparaît sur chaque ligne de /admin/categories.

Ce modèle est inadapté : la visibilité est une propriété de l'article, pas de la catégorie. Une catégorie n'est qu'une étiquette de classement.

Comportement souhaité

  • Chaque article possède un booléen hidden dans son meta.json.
  • Un article masqué n'est pas visible des visiteurs anonymes (ni dans les listings, ni en accès direct, ni dans la recherche), mais reste accessible aux utilisateurs connectés.
  • Les filtres existants qui testent in_array($cat, $privateCats) sont remplacés par $article['hidden'] ?? false.
  • Le vocabulaire utilisé partout (UI, logs, code) est masqué / visible (plus de "privé/public").

Changements UI

  • /admin/categories : supprimer le bouton toggle Privée/Publique de chaque ligne.
  • Formulaire d'édition d'article (post_form.php) : ajouter un toggle Masqué/Visible (en plus du toggle Publié/Brouillon).
  • Liste admin articles : afficher un badge "masqué" sur les articles concernés ; ajouter un filtre par statut masqué.

Migration des données

À l'activation, parcourir tous les articles dont la catégorie est dans private_cats.json et leur écrire "hidden": true dans meta.json. Supprimer ensuite private_cats.json.

Un script de migration one-shot suffit (pas besoin de compatibilité descendante).

Fichiers concernés

  • src/ArticleManager.php — supprimer getPrivateCategories(), togglePrivateCategory() ; ajouter setHidden(string $uuid, bool $hidden) ; inclure hidden dans loadAll()
  • public/index.php — remplacer toutes les occurrences de privateCats par le filtre hidden ; supprimer les cases toggle_private_category
  • templates/categories.php — supprimer le formulaire toggle
  • templates/post_form.php — ajouter le toggle masqué/visible
  • templates/admin.php — badge et filtre masqué
  • Script de migration à créer dans scripts/

Migré depuis varlog#54

## Contexte Actuellement, la notion de "privé/public" est portée par la **catégorie** : un fichier `data/private_cats.json` liste les catégories dont tous les articles sont cachés aux visiteurs anonymes. Le toggle "🔒 Privée / Publique" apparaît sur chaque ligne de `/admin/categories`. Ce modèle est inadapté : la visibilité est une propriété **de l'article**, pas de la catégorie. Une catégorie n'est qu'une étiquette de classement. ## Comportement souhaité - Chaque article possède un booléen `hidden` dans son `meta.json`. - Un article masqué n'est pas visible des visiteurs anonymes (ni dans les listings, ni en accès direct, ni dans la recherche), mais reste accessible aux utilisateurs connectés. - Les filtres existants qui testent `in_array($cat, $privateCats)` sont remplacés par `$article['hidden'] ?? false`. - Le vocabulaire utilisé partout (UI, logs, code) est **masqué / visible** (plus de "privé/public"). ## Changements UI - **`/admin/categories`** : supprimer le bouton toggle Privée/Publique de chaque ligne. - **Formulaire d'édition d'article** (`post_form.php`) : ajouter un toggle Masqué/Visible (en plus du toggle Publié/Brouillon). - **Liste admin articles** : afficher un badge "masqué" sur les articles concernés ; ajouter un filtre par statut masqué. ## Migration des données À l'activation, parcourir tous les articles dont la catégorie est dans `private_cats.json` et leur écrire `"hidden": true` dans `meta.json`. Supprimer ensuite `private_cats.json`. Un script de migration one-shot suffit (pas besoin de compatibilité descendante). ## Fichiers concernés - `src/ArticleManager.php` — supprimer `getPrivateCategories()`, `togglePrivateCategory()` ; ajouter `setHidden(string $uuid, bool $hidden)` ; inclure `hidden` dans `loadAll()` - `public/index.php` — remplacer toutes les occurrences de `privateCats` par le filtre `hidden` ; supprimer les cases `toggle_private_category` - `templates/categories.php` — supprimer le formulaire toggle - `templates/post_form.php` — ajouter le toggle masqué/visible - `templates/admin.php` — badge et filtre masqué - Script de migration à créer dans `scripts/` --- *Migré depuis [varlog#54](https://git.abonnel.fr/cedricAbonnel/varlog/issues/54)*
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#39