We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Inscription à un rendez-vous

Anthony Clergeot · on 12/22/16 at 2:49 PM

Bonjour,

Je débute sur JCMS et j'aurais besoin d'un peu d'aide.

Je vous explique le contexte: Je développe un module de gestion de rendez-vous. On crée un rendez-vous et des personnes peuvent s'y inscrire.

J'ai deux types: le type Rendezvous et le type InscriptionRdv.

Je gère déjà tout ce qui est contrôle des informations pour les publications de type Rendezvous (aucun rendez-vous ne se chevauchent, dates de rendez-vous cohérentes etc...) dans un DataController: RendezVousController.

De même, pour une publication de types Inscriptions, j'effectue mes contrôles dans un dataController: InscriptionRdvController.

Les fonctions/méthodes que j'utilise dans mes controllers sont dans un Manager: RendezVousManager.

Je souhaiterais savoir comment je pourrais m'y prendre pour que le formulaire d'inscription corresponde à ce qui est demandé dans les paramètre du rendez-vous:

Exemple: On crée une publication de type Rendezvous  et on coche "oui" sur un radio: "Mail obligatoire à l'inscription?".

Je souhaiterais que les publication de type InscriptionsRdv liées à ce rendez-vous est leur champ "mail" obligatoire. Tandis que pour un autre rendez-vous ou l'on aurais choisie "non" au champ "mail obligatoire à l'inscription?", le champ mail des inscriptions y étant lié ne soit pas obligatoire.

Pour être clair, j'aimerais que les propriétés ou même l'apparition des champs de InscriptionRdv dépendent des informations rentrées lors de la création d'un Rendezvous.

On m'a dit qu'un customFormHandler me serait utile, donc j'ai créer CustomRendezVousHandler et CustomInscriptionRdvHandler.

Mais je ne sais pas trop quoi mettre dedans. Voila, si vous avez des conseils à me donner, je vous en serais très reconnaissant.

Cordialement.

8 pts
Kévin Moreau · on 12/23/16 at 8:40 AM

Bonjour, 

En reprennant votre exemple du champs mail obligatoire, vous pouvez verifier dans votre InscriptionRdvController via la méthode checkIntegrity() (celle-ci se declenche au moment de l'enregistrement de votre forumulaire, vous pourrez ainsi faire vos vérifications d'intégrité du contenu). 

Pour l'apparition des champs de voter formulaire, vous pouvez surcharger votre gabarit d'édition de votre formulaire et rajouter vos conditions d'affichage. 

 

#2

Bonjour,

En effet, si vous souhaitez avoir la petit étoile rouge, la datacontroller ne vous le permettra pas. Vous devez donc surcharger le gabarit d'édition. Sur quelle version de JCMS êtes-vous ?

Kévin Moreau · on 12/23/16 at 10:43 AM
#3

De même, j'aimerais faire disparaitre un champ en fonction des paramètres du rendez-vous. Exemple: Le rendez-vous autorise à joindre un document lors de l'inscription. le champ "pièce jointe" apparait lors de l'inscription. Si le rendez-vous ne l'autorise pas, le champ n'apparait pas lors de l'inscription.

Je précise que je ne sais pas encore manipuler les portlets (enfin, très peu) ou les gabarits.

Anthony Clergeot · on 12/23/16 at 10:44 AM
#4

Merci pour la réponse rapide. Je suis sur la version 9.0.4

Anthony Clergeot · on 12/23/16 at 10:44 AM
0 pts
Kévin Moreau · on 12/23/16 at 10:52 AM

Sur une version en 9.0.4 vous devez surcharger le gabarit d'édition de votre type. Pour cela : 

- Déclarer dans votre plugin.xml (celui de votre module, à la fin avant la balise fermante </plugin>) :

  <webapp-files>
         <filepath="types/VotreType/doEditVotreType.jsp"/>
   </webapp-files>

- Dans cette JSP vous trouverez le code de chaque champs :

 <%-- Message ------------------------------------------------------------ --%>
<jalios:field name="message" formHandler="<%= formHandler %>">
   <jalios:control />
</jalios:field>

-   Vous pouvez donc rajouter sur le tag <jalios:filed> un attribut required (true/false) en fonction de vos conditions.

- Même chose pour l'apparition d'un champs ou non, un simple if vous suffira. 

 

 

#6

Comme je débute (je ne travaille dans l'entreprise que depuis novembre en alternance), je n'ai pas encore bien appris à me servir des portlets, des gabarits ou tout ce qui concerne l'affichage. Donc je me contente de créer des publication dans l'espace de travail de test dont je dispose. Je vous joins des captures d'écran pour que vous compreniez :) Le type Rendezvous: 2016 12 23 13 55 08 Académie de Paris Édition du Type de Co Le type InscriptionRdv: 2016 12 23 13 56 08 Académie de Paris Édition du Type de Co Ma page d'accueil: 2016 12 23 13 57 00 Académie de Paris Copie de JCMS Accueil Je crée mes rendez-vous dans l'espace de travail: 2016 12 23 13 57 20 Académie de Paris Mes contenus Je crée mes inscription dans l'espace de travail: 2016 12 23 13 57 43 Académie de Paris Tous les contenus uti Ce que j'ai quand je crée une publication de type InscriptionRdv: 2016 12 23 13 58 05 Académie de Paris Édition d une publica Évidemment, l'idéale serais de cliquer directement sur un rendez-vous de la liste sur la page d'accueil pour que l'inscription y soit directement liée, sans avoir à sélectionner le rendez-vous manuellement quand je crée une inscription comme je le fais actuellement.

Anthony Clergeot · on 12/23/16 at 2:03 PM
#7

Dans ce cas, vous devez modifier le gabarit de votre portlet (portlet Requête/Itération je suppose, celle qui liste vos Rendez-vous). Ce nouveau gabarit est a déclaré dans votre plugin.xml.
Dans ce gabarit, il faudra modifier les liens des RendezVous de manière à ce qu'il pointe vers le formulaire d'édition du type Inscription en passant l'id du RendezVous en paramètre (dans l'URL). Ainsi, dans votre gabarit d'édition, à partir de l'id passé dans l'URL vous pourrez pré-remplir votre champs rendez-vous et le désactiver pour que l'utilisateur ne puisse pas le modifier.
En revanche, votre comportement sera plus difficile à mettre en place en back-office. Les développements à effectuer seront plus conséquents.

Kévin Moreau · on 12/23/16 at 2:19 PM
#8

Ok, je vais me pencher la dessus. A nouveau, merci pour votre aide.

Anthony Clergeot · on 12/23/16 at 2:52 PM
0 pts