Admin livres : slug auto + sélecteur d'articles par mot entier #3
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problèmes actuels
1. Création d'un livre — slug à saisir manuellement
Dans
?new=1, l'utilisateur doit taper lui-même le slug. C'est redondant :BookManager::sanitizeSlug()existe déjà et produit un slug valide à partir du titre.2. Édition — sélecteur de pages trop limité
Dans
?edit=<slug>, l'ajout de pages utilise un<select>listant tous les articles non encore inclus. Avec beaucoup d'articles, trouver le bon est difficile. Il n'y a aucun filtrage.Correction 1 — Slug auto-généré à la création
UX
?new=1readonly, mis à jour en JS au fil de la saisie du titre)Mon livre ESP8266→ affichemon-livre-esp8266Backend (
public/index.php,case 'book_save')$_POST['slug']est vide, dériver le slug du titre :sanitizeSlug()public dansBookManager-2,-3…)Template (
templates/admin.php, bloc?new=1)<input name="slug">affiché<input type="hidden" name="slug" value="">(vide → dérivé côté serveur)sanitizeSlug()PHP)Correction 2 — Sélecteur d'articles filtrable par mot entier
UX attendue
<select>par :plain) de l'articleesp→ matche les articles contenant le motESP(ouesp,Esp)esp→ ne matche pas les articles oùespéranceest le seul occurrencenew RegExp("\\b" + mot.replace(/[.*+?^${}()|[\]\\]/g, "\\\\$&") + "\\b", "i")Données disponibles
$adminData['all_articles']contient déjàtitle,slug,published,plain— tout est disponible côté template sans requête supplémentaire.Implémentation suggérée
all_articles(non encore dans le livre) endata-*JSON ou<script>inline<input type="text" id="book-article-filter"><ul id="book-article-results">peuplée par JS#book-articles-ta+ retire l'item de la listeCritères d'acceptation
?new=1: pas de champ slug saisi manuellement$_POST['slug']est vide-2,-3)plain)espne matche pasespérance