test 21
Tu es Codex et tu as accès au projet RAUCIMS & PARTNERS (PHP + MySQL).
Objectif: modifier la gestion des PDF des TEXTES JURIDIQUES pour respecter strictement la règle métier suivante :
========================
RÈGLE MÉTIER OFFICIELLE (PDF)
========================
1) Un PDF est lié à un texte juridique (champ pdf_file en DB).
2) Le PDF est uploadé depuis le dashboard et stocké dans le dossier uploads du projet (tu dois identifier le chemin exact utilisé par le module).
3) Sur le FRONT (page détail d’un texte juridique) :
- On NE DOIT JAMAIS afficher/ouvrir le PDF (pas d’iframe/embed/object, pas de preview, pas de “ouvrir”, pas de target=_blank).
- On affiche uniquement le NOM du fichier PDF (ex: “Document PDF : <nom_du_fichier>”).
- On conserve uniquement l’option “TÉLÉCHARGER”, et le téléchargement doit obligatoirement passer par une boîte de dialogue (modal) qui demande :
• Nom
• Prénom
• Téléphone
• Email
=> L’utilisateur ne peut télécharger le PDF qu’après avoir rempli et validé ce formulaire.
4) Le téléchargement doit être FORCÉ (pas d’ouverture inline). Donc il faut un endpoint PHP qui renvoie :
Content-Disposition: attachment
========================
TÂCHES À RÉALISER (OBLIGATOIRES)
========================
A) Identifier le chemin réel des PDFs uploadés
1) Localiser le code d’upload PDF côté admin (module textes juridiques).
2) Confirmer le dossier de destination (ex: public/uploads/legal-texts/ ou autre).
3) Confirmer le nom stocké en DB (pdf_file) et comment il est formé.
Livrer: “Chemin final PDF = …” + fichiers/sections concernées.
B) Front: supprimer tout affichage/preview et afficher uniquement le nom du PDF
1) Dans la page détail (ex: public/base-juridique-single.php ou équivalent):
- Retirer tout <iframe>, <embed>, <object>, aperçu PDF, et tout lien d’ouverture.
- Afficher uniquement une ligne du type :
“Document PDF : <nom_du_fichier>”
- Ajouter un bouton unique “Télécharger le PDF”.
C) Modal obligatoire avant téléchargement
1) Au clic sur “Télécharger le PDF”, afficher un modal (Bootstrap ou solution déjà utilisée dans le projet).
2) Champs requis:
- first_name (Prénom)
- last_name (Nom)
- phone (Téléphone)
- email (Email)
3) Validation:
- Tous les champs obligatoires
- Email valide
- Téléphone non vide (format simple OK)
4) À la validation, envoyer un POST vers un handler serveur.
IMPORTANT: Aucun téléchargement ne doit démarrer tant que le formulaire n’est pas validé.
D) Backend: enregistrer les infos utilisateur et déclencher le téléchargement forcé
Tu dois implémenter un flux serveur sécurisé :
Option recommandée (à implémenter) :
1) Créer une table (si absente) pour tracer les téléchargements, ex:
legal_text_downloads:
- id
- legal_text_id (FK)
- first_name
- last_name
- phone
- email
- ip_address (optionnel)
- user_agent (optionnel)
- downloaded_at (NOW)
2) Créer un endpoint de téléchargement (ex: public/download-legal-pdf.php ou public/download.php):
- Reçoit legal_text_id + données formulaire (POST) OU un token généré après enregistrement.
- Vérifie que le texte existe et que pdf_file existe.
- Construit le chemin avec basename (protection traversal).
- Envoie headers:
Content-Type: application/pdf
Content-Disposition: attachment; filename="..."
X-Content-Type-Options: nosniff
- readfile() et exit
3) Sécurité:
- Utiliser CSRF si déjà disponible dans le projet (réutiliser helpers existants).
- Ne jamais accepter un chemin libre en input (utiliser uniquement l’ID texte juridique).
- Retourner 404 si fichier absent.
E) Nettoyage UI / cohérence
- Sur la page détail, on garde le contenu (description + content détaillé).
- Seul ajout: “Document PDF : nom.pdf” + bouton “Télécharger le PDF”.
- Pas de preview, pas d’ouverture.
========================
LIVRABLES ATTENDUS
========================
1) Liste des fichiers modifiés + fichiers ajoutés
2) Patchs concrets (diff/extraits) :
- base-juridique-single.php (ou équivalent)
- JS/modal (dans la page ou fichier assets)
- handler POST (ex: handlers/legal-texts/download.php) ou endpoint public
- endpoint download forcé
- migration SQL pour créer legal_text_downloads (si nécessaire)
3) Checklist de tests manuels:
- texte avec PDF: bouton ouvre modal, champs requis, après validation téléchargement démarre
- texte sans PDF: affiche “Aucun PDF” et pas de bouton
- vérifier qu’aucun lien n’ouvre le PDF dans le navigateur
- vérifier qu’un download crée une ligne en DB
4) Requêtes SQL de validation:
- SELECT * FROM legal_text_downloads ORDER BY id DESC LIMIT 20;
- Vérifier que le fichier existe dans le dossier uploads identifié.
Commence par (A) identifier le chemin réel des PDF uploadés, puis implémente (B) (C) (D) (E).
Objectif: modifier la gestion des PDF des TEXTES JURIDIQUES pour respecter strictement la règle métier suivante :
========================
RÈGLE MÉTIER OFFICIELLE (PDF)
========================
1) Un PDF est lié à un texte juridique (champ pdf_file en DB).
2) Le PDF est uploadé depuis le dashboard et stocké dans le dossier uploads du projet (tu dois identifier le chemin exact utilisé par le module).
3) Sur le FRONT (page détail d’un texte juridique) :
- On NE DOIT JAMAIS afficher/ouvrir le PDF (pas d’iframe/embed/object, pas de preview, pas de “ouvrir”, pas de target=_blank).
- On affiche uniquement le NOM du fichier PDF (ex: “Document PDF : <nom_du_fichier>”).
- On conserve uniquement l’option “TÉLÉCHARGER”, et le téléchargement doit obligatoirement passer par une boîte de dialogue (modal) qui demande :
• Nom
• Prénom
• Téléphone
=> L’utilisateur ne peut télécharger le PDF qu’après avoir rempli et validé ce formulaire.
4) Le téléchargement doit être FORCÉ (pas d’ouverture inline). Donc il faut un endpoint PHP qui renvoie :
Content-Disposition: attachment
========================
TÂCHES À RÉALISER (OBLIGATOIRES)
========================
A) Identifier le chemin réel des PDFs uploadés
1) Localiser le code d’upload PDF côté admin (module textes juridiques).
2) Confirmer le dossier de destination (ex: public/uploads/legal-texts/ ou autre).
3) Confirmer le nom stocké en DB (pdf_file) et comment il est formé.
Livrer: “Chemin final PDF = …” + fichiers/sections concernées.
B) Front: supprimer tout affichage/preview et afficher uniquement le nom du PDF
1) Dans la page détail (ex: public/base-juridique-single.php ou équivalent):
- Retirer tout <iframe>, <embed>, <object>, aperçu PDF, et tout lien d’ouverture.
- Afficher uniquement une ligne du type :
“Document PDF : <nom_du_fichier>”
- Ajouter un bouton unique “Télécharger le PDF”.
C) Modal obligatoire avant téléchargement
1) Au clic sur “Télécharger le PDF”, afficher un modal (Bootstrap ou solution déjà utilisée dans le projet).
2) Champs requis:
- first_name (Prénom)
- last_name (Nom)
- phone (Téléphone)
- email (Email)
3) Validation:
- Tous les champs obligatoires
- Email valide
- Téléphone non vide (format simple OK)
4) À la validation, envoyer un POST vers un handler serveur.
IMPORTANT: Aucun téléchargement ne doit démarrer tant que le formulaire n’est pas validé.
D) Backend: enregistrer les infos utilisateur et déclencher le téléchargement forcé
Tu dois implémenter un flux serveur sécurisé :
Option recommandée (à implémenter) :
1) Créer une table (si absente) pour tracer les téléchargements, ex:
legal_text_downloads:
- id
- legal_text_id (FK)
- first_name
- last_name
- phone
- ip_address (optionnel)
- user_agent (optionnel)
- downloaded_at (NOW)
2) Créer un endpoint de téléchargement (ex: public/download-legal-pdf.php ou public/download.php):
- Reçoit legal_text_id + données formulaire (POST) OU un token généré après enregistrement.
- Vérifie que le texte existe et que pdf_file existe.
- Construit le chemin avec basename (protection traversal).
- Envoie headers:
Content-Type: application/pdf
Content-Disposition: attachment; filename="..."
X-Content-Type-Options: nosniff
- readfile() et exit
3) Sécurité:
- Utiliser CSRF si déjà disponible dans le projet (réutiliser helpers existants).
- Ne jamais accepter un chemin libre en input (utiliser uniquement l’ID texte juridique).
- Retourner 404 si fichier absent.
E) Nettoyage UI / cohérence
- Sur la page détail, on garde le contenu (description + content détaillé).
- Seul ajout: “Document PDF : nom.pdf” + bouton “Télécharger le PDF”.
- Pas de preview, pas d’ouverture.
========================
LIVRABLES ATTENDUS
========================
1) Liste des fichiers modifiés + fichiers ajoutés
2) Patchs concrets (diff/extraits) :
- base-juridique-single.php (ou équivalent)
- JS/modal (dans la page ou fichier assets)
- handler POST (ex: handlers/legal-texts/download.php) ou endpoint public
- endpoint download forcé
- migration SQL pour créer legal_text_downloads (si nécessaire)
3) Checklist de tests manuels:
- texte avec PDF: bouton ouvre modal, champs requis, après validation téléchargement démarre
- texte sans PDF: affiche “Aucun PDF” et pas de bouton
- vérifier qu’aucun lien n’ouvre le PDF dans le navigateur
- vérifier qu’un download crée une ligne en DB
4) Requêtes SQL de validation:
- SELECT * FROM legal_text_downloads ORDER BY id DESC LIMIT 20;
- Vérifier que le fichier existe dans le dossier uploads identifié.
Commence par (A) identifier le chemin réel des PDF uploadés, puis implémente (B) (C) (D) (E).
Document PDF
Document PDF : legal_696f3d46ad3060.58629979.pdf
Contenu
Pour la première affiche : "Les avantages d'un système d'information moderne"
🌟 Dans un monde où chaque décision compte, un système d'information moderne est votre allié ultime ! Il suit vos activités en temps réel, sécurise vos données sensibles, fluidifie la communication et booste l'efficacité de vos opérations. Transformez-le en levier de performance pour propulser votre entreprise vers le succès. 💼🚀
Ce que vous ne mesurez pas, vous ne contrôlez pas. Prêt à moderniser le vôtre ? Contactez-nous !
#SystemeDInformation #PerformanceEntreprise #InnovationDigitale #KMSentreprises #DeveloppementEntreprise
Pour la deuxième affiche : "Pourquoi les leaders doivent penser 'système' avant 'équipe'"
🔑 Leaders, arrêtez de recruter à tout-va pour combler les lacunes ! Un bon système d'organisation résout les vrais problèmes en créant des équipes efficaces, cohérentes et autonomes. Pensez "système" d'abord, et l'équipe suivra naturellement. C'est la clé pour une croissance durable ! 👥💡
Un bon système crée de bonnes équipes. Quel est votre prochain move ? Partagez en commentaire !
#Leadership #SystemeOrganisation #EquipePerformante #KMSentreprises #DeveloppementPersonnel
Pour la troisième affiche : "Le système comme avantage concurrentiel"
⚔️ Sur un marché impitoyable, l'organisation fait la différence ! Un système performant apporte rapidité, précision et fiabilité – des armes imparables pour devancer la concurrence. Faites de votre système votre atout majeur et dominez le jeu. 🏆📈
Le système est une arme de performance. Comment le vôtre vous aide-t-il à gagner ? Dites-nous !
#AvantageConcurrentiel #PerformanceBusiness #OrganisationEntreprise #KMSentreprises #StrategieDigitale