test
Tu es Codex et tu as accès au projet RAUCIMS & PARTNERS (PHP + MySQL).
Objectif: corriger la partie BLOG (articles) sur 2 axes:
(1) TinyMCE demande une API key et bloque la saisie
(2) Simplifier la logique métier des articles: "toujours publié" (comme legal_texts)
========================
A) ÉDITEUR CONTENU (TinyMCE)
========================
Constat:
Dans admin/articles/create.php (et edit.php), TinyMCE affiche:
"A valid API key is required to continue using TinyMCE" et empêche l'usage.
Exigence:
On ne veut PAS payer. On accepte uniquement des solutions gratuites.
Ta mission:
1) Identifie comment TinyMCE est chargé (script src tiny.cloud ? config tinymce.init ?).
2) Implémente 2 solutions possibles, contrôlées par une option de config (dans config.local.php idéalement):
OPTION A (simple, gratuit): Tiny Cloud avec API key gratuite
- Ajouter une variable config: TINYMCE_API_KEY (vide par défaut).
- Si clé présente: initialiser TinyMCE avec la clé (ou script src qui inclut la clé) selon la méthode actuelle du projet.
- Si clé absente: ne pas init TinyMCE et afficher un textarea normal (fallback) pour que l’admin puisse écrire.
OPTION B (zéro dépendance): supprimer TinyMCE
- Remplacer définitivement l’éditeur par un textarea simple (comme textes juridiques).
- Garder la mise en forme basique via HTML autorisé contrôlé au rendu front (whitelist + suppression on*/javascript:) comme déjà fait ailleurs.
Livrer:
- fichiers modifiés (create.php, edit.php, includes header si besoin)
- code exact + explication courte "où mettre la clé si on choisit Option A"
========================
B) ARTICLES : STATUT SUPPRIMÉ / TOUJOURS PUBLIÉ
========================
Décision métier:
- Quand on crée un article, il est automatiquement PUBLIÉ.
- Plus de statut (pas draft/archived).
- Deux actions: publier (automatique) ou supprimer.
Tâches:
1) DB:
- Aligner articles.status en "published only" (comme legal_texts) OU retirer le champ status si possible sans casse.
- Fournir une migration SQL claire.
2) Admin:
- Supprimer tout champ "status" dans admin/articles/create.php et edit.php.
- INSERT/UPDATE ne doivent plus gérer status (ou forcer 'published').
- Index admin ne doit plus filtrer/afficher status.
3) Front:
- blog.php et blog-single.php doivent afficher les articles créés immédiatement.
- S’il y a un filtre status='published', il doit rester cohérent avec la DB.
4) Tests:
- créer article -> il apparaît sur blog.php
- modifier article -> OK
- supprimer -> disparaît
- vérifier rendu du contenu (HTML/textarea selon Option A/B)
Ne passe pas à la suppression totale de TinyMCE tant que tu n’as pas listé précisément où il est chargé et comment il est configuré.
Objectif: corriger la partie BLOG (articles) sur 2 axes:
(1) TinyMCE demande une API key et bloque la saisie
(2) Simplifier la logique métier des articles: "toujours publié" (comme legal_texts)
========================
A) ÉDITEUR CONTENU (TinyMCE)
========================
Constat:
Dans admin/articles/create.php (et edit.php), TinyMCE affiche:
"A valid API key is required to continue using TinyMCE" et empêche l'usage.
Exigence:
On ne veut PAS payer. On accepte uniquement des solutions gratuites.
Ta mission:
1) Identifie comment TinyMCE est chargé (script src tiny.cloud ? config tinymce.init ?).
2) Implémente 2 solutions possibles, contrôlées par une option de config (dans config.local.php idéalement):
OPTION A (simple, gratuit): Tiny Cloud avec API key gratuite
- Ajouter une variable config: TINYMCE_API_KEY (vide par défaut).
- Si clé présente: initialiser TinyMCE avec la clé (ou script src qui inclut la clé) selon la méthode actuelle du projet.
- Si clé absente: ne pas init TinyMCE et afficher un textarea normal (fallback) pour que l’admin puisse écrire.
OPTION B (zéro dépendance): supprimer TinyMCE
- Remplacer définitivement l’éditeur par un textarea simple (comme textes juridiques).
- Garder la mise en forme basique via HTML autorisé contrôlé au rendu front (whitelist + suppression on*/javascript:) comme déjà fait ailleurs.
Livrer:
- fichiers modifiés (create.php, edit.php, includes header si besoin)
- code exact + explication courte "où mettre la clé si on choisit Option A"
========================
B) ARTICLES : STATUT SUPPRIMÉ / TOUJOURS PUBLIÉ
========================
Décision métier:
- Quand on crée un article, il est automatiquement PUBLIÉ.
- Plus de statut (pas draft/archived).
- Deux actions: publier (automatique) ou supprimer.
Tâches:
1) DB:
- Aligner articles.status en "published only" (comme legal_texts) OU retirer le champ status si possible sans casse.
- Fournir une migration SQL claire.
2) Admin:
- Supprimer tout champ "status" dans admin/articles/create.php et edit.php.
- INSERT/UPDATE ne doivent plus gérer status (ou forcer 'published').
- Index admin ne doit plus filtrer/afficher status.
3) Front:
- blog.php et blog-single.php doivent afficher les articles créés immédiatement.
- S’il y a un filtre status='published', il doit rester cohérent avec la DB.
4) Tests:
- créer article -> il apparaît sur blog.php
- modifier article -> OK
- supprimer -> disparaît
- vérifier rendu du contenu (HTML/textarea selon Option A/B)
Ne passe pas à la suppression totale de TinyMCE tant que tu n’as pas listé précisément où il est chargé et comment il est configuré.
J’ai d’abord localisé précisément TinyMCE avant toute suppression : il est chargé via tinymce.min.js"> dans create.php et edit.php, avec tinymce.init({ selector: '#content', height: 400, plugins: 'lists link image table code help wordcount', toolbar: ... }).
Modifs appliquées pour résoudre A + B (TinyMCE gratuit + articles “toujours publié”):
Changements appliqués
TinyMCE devient optionnel via TINYMCE_API_KEY : si vide, fallback textarea simple (pas d’init) ; si clé présente, TinyMCE se charge.
Articles: suppression complète de la notion de statut côté admin (create/edit/index). Publication automatique (published_at = now).
Migration SQL: force tous les articles en published, corrige les published_at null, et verrouille l’ENUM.
Fichiers modifiés
config.php (ajout TINYMCE_API_KEY)
config.local.php.example (exemple de clé)
create.php (TinyMCE conditionnel, suppression status + planification, published_at auto)
edit.php (TinyMCE conditionnel, suppression status + planification)
index.php (suppression filtre/colonne statut)
2026_articles_status_published_only.sql (migration)
Où mettre la clé TinyMCE (Option A)
Dans config.local.php :
define('TINYMCE_API_KEY', 'VOTRE_CLE_TINYMCE');
Si la clé est vide (défaut), TinyMCE est désactivé et l’admin utilise un textarea simple (Option B).
Patchs concrets
A) TinyMCE optionnel (create/edit)
create.php et edit.php :