Extension annonce OBSOLETE

Pour la prise en charge des petites annonces, j'ai exploré

  • le catalogue des extensions, mais je n'ai rien trouvé de satisfaisant
  • l'extension listaing, mais si elle permettait d'afficher la liste, il était plus difficile de gérer les formulaires, leur traitement et les acuittement.

J'ai finalement décidé de créer une extesion spécifique.

 

 

Création de l'extension

  1. Outils de développement->Créateur d'extension
  2. Nouvelle extension
  3. cocher Ajouter un module back office, Ajouter un module front office, Ajouter des packs de langue
    on peut toujours en supprimer ensuite
  4. remplir les champs
  5. sauvegarder et fremer
  6. cliquer sur l'icone à droite de la nouvelle extension (ATTENTION : pas le refaire par la suite)
    Cela va créer les fichiers de la nouvelle extension
    • les classes apparaîtront dans la dossier classes
    • un Model apparara dans le dossier models
    • les tables apparaîtront dans la dossier dca
    • les templates apparaîtront dans la dossier templates
    • les packs da langues dans des dossiers du dossier languages
    • ainsi autoload.ini et config.php dans le dossier config

Il ne reste plus qu'à remplir les fichiers

Les fichiers

Ils sont dans le dossier system/modules/annonce

assets petites_annonces.png l'icone qui apparait dans la section Contenu elle est déclarée dans config.php
classes AnnonceDemande.php

cette classe contient les fonctions

  • processFormData() qui traite le formulaire de demande des coordonnées
  • storeFormData qui calcule l'uuid de la photo en binaire

cette classe est déclaréedans autoload.php

elle est référencée dans dca/tl_annonce.php

config autoload.ini inchangé
config autoload.php déclaration de la localisation des classes et des templates
config config.php définit le module backend, le module fronend et le hook pour la prise en compte du formulaire de demande d'info
dca tl_annonce.php la description de la table des annonces et du module backend de gestion

pour la gestion automatique des annonces en backend

pour la mise à jour de la BDD

tl_module.php les champs du formulaire de création d'un module frontend
languages/fr modules.xlf les libellés pour les modules backend et frontend
tl_module.xlf les libellés pour les champs du formulaire de création d'un module frontend backend et frontend référencé dans dca/tl_module.php
tl_annonce.xlf les libellés pour les champs du formulaire de création d'une annonce référencé dans dca/tl_annonce.php
modules ModuleAnnonceList.php le module Frontend d'affichage de la liste

localisé dans config/autoload.php

déclaré dans config/config.php en tant que module frontend

templates annonce_list.html5 le template d'affichage de la liste

localisé dans config/autoload.php

appelé par le module modules/ModuleAnnonceList

modules.xlf

Ce fichier décrite le libellés

  • pour le module backend de gestion des petites annonces (MOD)
  • pour le module backen de création de modules frontend (FMD)

dca/tl_module.php et languages/fr/tl_module.xlf

Ce fichier décrit le formulaire de création (en backend)  du module frontend annoncelist; en fait il ne fait que compléter le module général de création de module:

  • palettes : la liste des champs
  • fields : description des champs spécifiques
  • un callback pour le champ jumpTo

Il est complété pour les libellés par le fichier tl_module.xlf

dca/tl_annonce.php et languages/fr/tl_annonce.xlf

C'est dans ce fichier que l'on décrit

  • la table des petites annonce tl_annonce et ses champs : config et fields
  • l'interface d'administraion des petites annonces
    • les opérations edit, delete, toggle et show
    • le formulaire : pllettes
  • la fonction de traitement du toggle

Il est complété pour les libellés par le fichier tl_annonce.xlf

IMPORTANT : après avoir modifier un champ, il faut mettre à joure la base de données par Gestionnaire d'extensions->Mettre à jour la base de données

ModuleAnnonceList.php et le template annonce_list.html5

Le template décrit la construction du code-HTML de la liste des annonces

La classe ModuleAnnonceList contient 2 fonctions :

  • generate construit l'apparence du module frontenddans la liste des contenus d'un article
  • compile calcule les variables nécessaires au template

Le template affiche les champs de l'annonce avec le cas particulier de l'imagette :pour activer la lightbox vour afficher l'image

classes/AnnonceDemande.php

Cette classe contient la foncion processFormData de traitement du formulaire de demande d'info d'une annonce

CORRIGER : les adresses-mail

config/autoload.php

Ce fichier indique dans quel fichier se trouvent

  • les classes ModuleAnnonceList et AnnonceDemande
  • le template annonce_list

config/config.php

Ce fichier contient la déclaration

  • du module backend de gestion des petites annonces : en fait son fichier dca
  • du module frontend ModuleAnnonceList d'affichage de la liste des annonces

Les pages

Il y a 5 pages :

  • La page Bonnes affaires affiche la liste des annonces et le formulaire Petite annonce (dépôt)
  • La page Acquittement Dépôt Annonce s'affiche en réponse à un dépôt d'annonce
  • la page Demande Info Annonce est affichée lorsqu'une personne intéressée demande les coordonnées du déposant d'une annonce; elle contient le formulaire PetiteAnnonce (demande info&)
  • la page Acquittement Demande Info Annonce est affichée en réponse à une demande des coordonnées du déposant d'une annonce
    Les données transmises par le formulaire (en POST) sont obtenues gràce à l'extension inputvar.
  • la page erreur Numéro annonce est affichée en réponse à une demande des coordonnées du déposant d'une annonce lorsque le numéro est incorrect

Les formulaires

Il y a 2 formulaires :

PetiteAnnonce (dépôt) affiché dans la page Petites annonces
PetiteAnnonce (demande info) affiché dans la page Demande Info Annonce

Les points qui ont posé problème

Le lien vers la photo

Pour voir le lien dans le backend, il faut mettre dans tl_annonce l'UUID du fichier en binaire

Pour le faire on utilise le HOOK AnnonceDemande::storeFormData()

Le traitement de la demande d'info

Il est effectué par le HOOK AnnonceDemande::processFormData()
Mais il faut vérifier le formulaire.