@kiubi/mcp-designer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +219 -0
  3. package/package.json +57 -0
  4. package/src/app.ts +39 -0
  5. package/src/index.ts +21 -0
  6. package/src/lib/stemmer.ts +38 -0
  7. package/src/lib/theme-checker/block-validator.ts +353 -0
  8. package/src/lib/theme-checker/checker.ts +897 -0
  9. package/src/lib/theme-checker/filter-validator.ts +163 -0
  10. package/src/lib/theme-checker/index.ts +6 -0
  11. package/src/lib/theme-checker/inspector.ts +193 -0
  12. package/src/lib/theme-checker/lang.ts +42 -0
  13. package/src/lib/theme-checker/parsers/component-xml.ts +120 -0
  14. package/src/lib/theme-checker/parsers/model-xml.ts +82 -0
  15. package/src/lib/theme-checker/parsers/post-type-xml.ts +92 -0
  16. package/src/lib/theme-checker/parsers/symbol-xml.ts +162 -0
  17. package/src/lib/theme-checker/parsers/theme-xml.ts +102 -0
  18. package/src/lib/theme-checker/types.ts +97 -0
  19. package/src/logger.ts +28 -0
  20. package/src/tool.ts +13 -0
  21. package/src/tools/create_type.ts +535 -0
  22. package/src/tools/detail_type.ts +208 -0
  23. package/src/tools/get_doc_section.ts +201 -0
  24. package/src/tools/list_types.ts +87 -0
  25. package/src/tools/list_widgets.ts +181 -0
  26. package/src/tools/ruleset.ts +25 -0
  27. package/src/tools/search_doc.ts +160 -0
  28. package/src/tools/validate_theme.ts +63 -0
  29. package/storage/definitions/blog.json +1444 -0
  30. package/storage/definitions/catalogue.json +2817 -0
  31. package/storage/definitions/cms.json +1002 -0
  32. package/storage/definitions/commandes.json +2409 -0
  33. package/storage/definitions/comptes.json +780 -0
  34. package/storage/definitions/modules.json +418 -0
  35. package/storage/definitions/recherche.json +804 -0
  36. package/storage/documents/CLAUDE.exemple.md +281 -0
  37. package/storage/documents/generated/exemples.md +8054 -0
  38. package/storage/documents/generated/integration/01_theme_perso.md +182 -0
  39. package/storage/documents/generated/integration/02_modeles.md +220 -0
  40. package/storage/documents/generated/integration/03_widgets.md +139 -0
  41. package/storage/documents/generated/integration/04_blocs.md +45 -0
  42. package/storage/documents/generated/integration/05_balises.md +43 -0
  43. package/storage/documents/generated/integration/06_balises_globales.md +201 -0
  44. package/storage/documents/generated/integration/07_balises_widget.md +257 -0
  45. package/storage/documents/generated/integration/08_types_billets.md +154 -0
  46. package/storage/documents/generated/integration/09_types_produits.md +77 -0
  47. package/storage/documents/generated/integration/10_types_composants.md +142 -0
  48. package/storage/documents/generated/integration/11_symboles.md +156 -0
  49. package/storage/documents/generated/integration/12_mediatheque.md +66 -0
  50. package/storage/documents/generated/integration/13_includes.md +25 -0
  51. package/storage/documents/generated/integration/14_404.md +32 -0
  52. package/storage/documents/generated/integration/15_arianne.md +62 -0
  53. package/storage/documents/generated/integration/16_fermeture.md +36 -0
  54. package/storage/documents/generated/integration/17_recherche.md +36 -0
  55. package/storage/documents/generated/integration/18_cms.md +582 -0
  56. package/storage/documents/generated/integration/19_modules.md +479 -0
  57. package/storage/documents/generated/integration/20_blog.md +946 -0
  58. package/storage/documents/generated/integration/21_catalogue.md +1834 -0
  59. package/storage/documents/generated/integration/22_commandes.md +2772 -0
  60. package/storage/documents/generated/integration/23_comptes.md +1195 -0
  61. package/storage/documents/generated/integration/24_recherche.md +542 -0
  62. package/storage/documents/hors_sujet_regles.md +43 -0
  63. package/storage/documents/kiubi_api.md +6690 -0
  64. package/storage/documents/kiubi_ruleset.md +419 -0
  65. package/storage/documents/kiubi_workflows.md +121 -0
@@ -0,0 +1,479 @@
1
+ # Modules
2
+
3
+ ## Widget Modules / Formulaire de contact
4
+
5
+ **Afficher le formulaire de contact.**
6
+ Si l'utilisateur ne rempli pas correctement tous les champs, le formulaire se réaffichera avec un message d'erreur indiquant quels champs sont manquants ou incorrects. Le formulaire sera pré-rempli avec les informations précédemment saisies.
7
+ Si toutes les informations obligatoires ont été saisies, un email sera envoyé au destinataire et la page se rechargera et n'affichera plus le formulaire, mais seulement le message de confirmation.
8
+
9
+ Contrairement aux autres widgets, le Formulaire de contact est composé de 2 fichiers :
10
+
11
+ - index.html : correspond au formulaire de contact à proprement dit.
12
+ - mail.html: correspond à l'email (au format texte) envoyé.
13
+
14
+ ### Template
15
+
16
+ Le template du widget : `theme/fr/widgets/communication/contact/index.html`. Exemple :
17
+
18
+ ```html
19
+ <!-- BEGIN: main -->
20
+
21
+ <article id="contact_form">
22
+ <!-- BEGIN: intitule -->
23
+
24
+ <h1>{intitule_form}</h1>
25
+
26
+ <!-- END: intitule -->
27
+ <!-- BEGIN:contact -->
28
+ <form method="post" action="#contact_form" >
29
+ <!-- BEGIN:erreurs -->
30
+ <div>{erreurs}</div>
31
+ <!-- END:erreurs -->
32
+ <!-- BEGIN: champ -->
33
+ <p><label for="form_contact{id}">{intitule}
34
+ <!-- BEGIN:obligatoire -->*<!-- END:obligatoire --> :</label>
35
+ <!-- BEGIN: text -->
36
+ <input type="text" name="{name}" id="form_contact{id}" value="{valeur}" />
37
+ <!-- END: text -->
38
+ <!-- BEGIN: textarea -->
39
+ <textarea name="{name}" rows="10" id="form_contact{id}" >{valeur}</textarea>
40
+ <!-- END: textarea -->
41
+ <!-- BEGIN: civilite -->
42
+ <div>
43
+ <label for="form_contact_m{id}">
44
+ <input name="{name}" type="radio" id="form_contact_m{id}" value="M" {checked_m} />
45
+ M</label>
46
+ <label for="form_contact_mme{id}">
47
+ <input name="{name}" type="radio" id="form_contact_mme{id}" value="Mme" {checked_mme} />
48
+ Mme</label>
49
+ <label for="form_contact_mlle{id}">
50
+ <input name="{name}" type="radio" id="form_contact_mlle{id}" value="Mlle" {checked_mlle} />
51
+ Mlle</label>
52
+ </div>
53
+ <!-- END: civilite -->
54
+ </p>
55
+ <!-- END: champ -->
56
+ <p><input type="submit" name="Submit" value="Envoyer" /></p>
57
+ <p><strong>* champs obligatoires </strong></p>
58
+ <div>
59
+ <input type="hidden" name="act" value="send" />
60
+ <input type="hidden" name="ctl" value="{ctl}" />
61
+ </div>
62
+ </form>
63
+ <!-- END:contact -->
64
+ <!-- BEGIN:message -->
65
+ {message}
66
+ <!-- END:message -->
67
+
68
+ <!-- END: main -->
69
+ ```
70
+ ### Arborescence des blocs
71
+
72
+ ```
73
+ └── main // Bloc racine tout le temps affiché.
74
+ ├── intitule // Ne s'affiche que si l'intitulé du widget est rempli.
75
+ ├── contact // Le bloc contient le formulaire de contact. Il s'affiche tant que le formulaire n'est pas validé.
76
+ │ └── erreurs // Le contenu du bloc s'affiche s'il y a des erreurs à la soumission du formulaire.
77
+ ├── champ // Le contenu du bloc s'affiche pour chaque champ du formulaire de contact.
78
+ │ ├── obligatoire // Le contenu du bloc s'affiche si le champ est obligatoire.
79
+ │ ├── text // Le contenu du bloc s'affiche si le champ est de type "texte", "que des chiffres", "que des lettres", "email"
80
+ │ ├── textarea // Le contenu du bloc s'affiche si le champ est de type "texte multiligne"
81
+ │ └── civilite // Le contenu du bloc s'affiche si le champ est de type "civilite"
82
+ └── message // Le contenu du bloc s'affiche à la place du formulaire de contact (bloc "contact") si tous les éléments obligatoires ont bien été fournis et que la demande de contact a été envoyée.
83
+ ```
84
+ ### Balises
85
+
86
+ Bloc|Balise|Description
87
+ ---|---|---
88
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
89
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
90
+ | intitule | intitule | Cet intitulé est paramétrable lors de l'édition d'un widget dans la gestion de l'Apparence de la Console d'administration de Kiubi. |
91
+ | erreurs | erreurs | Affiche toutes les erreurs en une fois. |
92
+ | champ | type | Type du champ. Les valeurs possibles sont : "text", "textarea", "chiffres", "lettres", "email" et "civilite". |
93
+ | champ | id | Id du champ. |
94
+ | champ | obligatoire | Affiche obligatoire si le champ est désigné comme tel. Sinon n'affiche rien. |
95
+ | champ | intitule | Intitulé du champ. |
96
+ | champ | compteur | La balise affichera un compteur commençant à 1 et qui sera incrémenté de 1 à chaque champ. |
97
+ | champ | valeur | Cette balise sert à réafficher la valeur précédemment saisie dans le formulaire en cas d'erreur. |
98
+ | champ | name | Nom du champ dans le formulaire (attribut name de la balise input) |
99
+ | civilite | checked_m | Affiche checked="checked" si la civilité "M" avait été choisie. Sinon n'affiche rien. |
100
+ | civilite | checked_mme | Affiche checked="checked" si la civilité "Mme" avait été choisie. Sinon n'affiche rien. |
101
+ | civilite | checked_mlle | Affiche checked="checked" si la civilité "Mlle" avait été choisie. Sinon n'affiche rien. |
102
+ | message | message | Message de confirmation d'envoi de la demande de contact. Ce message est personnalisable dans "Mon site / Communication / Formulaire de contact". |
103
+
104
+
105
+ ## Widget Modules / Formulaire de contact : E-mail de confirmation
106
+
107
+ **Template du mail envoyé par le formulaire de contact**
108
+
109
+
110
+ ### Template
111
+
112
+ Le template du widget : `theme/fr/widgets/communication/contact/mail.html`. Exemple :
113
+
114
+ ```html
115
+ <!-- BEGIN: main -->
116
+ <!-- BEGIN: champ -->
117
+ {intitule} : {valeur}
118
+ <!-- END: champ -->
119
+ <!-- BEGIN: infos_sup -->
120
+ Informations supplementaires : {infos_connection}
121
+ <!-- END: infos_sup -->
122
+ <!-- END: main -->
123
+ ```
124
+ ### Arborescence des blocs
125
+
126
+ ```
127
+
128
+ ```
129
+ ### Balises
130
+
131
+ Bloc|Balise|Description
132
+ ---|---|---
133
+ | champ | intitule | Intitulé du champ. |
134
+ | champ | valeur | Affiche la valeur du champ saisi dans le formulaire de contact. |
135
+ | infos_sup | infos_connection | Affiche l'adresse IP et l'hôte de l'expéditeur de l'email. |
136
+
137
+
138
+ ## Widget Modules / Newsletter
139
+
140
+ **Affiche le formulaire d'inscription/désinscription à la newsletter.**
141
+ Seul l'email peut être demandé. Si l'utilisateur ne remplit par correctement ce champ, le formulaire se réaffichera avec un message. Le formulaire sera aussi rempli avec les informations précédemment saisies.
142
+ Si toutes les informations obligatoires ont été saisies, la page se rechargera et n'affichera plus le formulaire, mais seulement un message de confirmation.
143
+ Note : **Kiubi ne permet pas d'envoyer des newsletters**. Seule l'inscription (ou la désinscription) est possible ainsi que l'export des abonnés au format .xls.
144
+
145
+ ### Template
146
+
147
+ Le template du widget : `theme/fr/widgets/communication/newsletter/index.html`. Exemple :
148
+
149
+ ```html
150
+ <!-- BEGIN:main -->
151
+ <div id="post_newsletter">
152
+ <!-- BEGIN:intitule -->
153
+ <h1>{intitule}</h1>
154
+ <!-- END:intitule -->
155
+ <div>
156
+ <!-- BEGIN:form -->
157
+ <!-- BEGIN:erreur -->
158
+ <div>{erreur}</div>
159
+ <!-- END:erreur -->
160
+ <form action="#post_newsletter" method="post">
161
+ <input type="text" name="email" value="{email}" id="emailnewsletter" placeholder="Votre email"/>
162
+ <p>
163
+ <input type="radio" name="opt" value="in" id="opt_in" {checked_in}/> <label for="opt_in">S'inscrire</label>
164
+ <input type="radio" name="opt" value="out" id="opt_out" {checked_out}/> <label for="opt_out">Se désinscrire</label>
165
+ </p>
166
+ <input type="submit" value="ok" />
167
+ <input type="hidden" name="act" value="send" />
168
+ <input type="hidden" name="ctl" value="{ctl}"/>
169
+ </form>
170
+ <!-- END:form -->
171
+ <!-- BEGIN:validation -->
172
+ {message}
173
+ <!-- END:validation -->
174
+ </div>
175
+ </div>
176
+ <!-- END:main -->
177
+ ```
178
+ ### Arborescence des blocs
179
+
180
+ ```
181
+ └── main // Bloc racine tout le temps affiché.
182
+ ├── intitule // Ne s'affiche que si l'intitulé du widget est rempli.
183
+ ├── form // Le bloc contient le formulaire.
184
+ │ └── erreur // Le contenu du bloc s'affiche en cas d'erreur dans l'inscription ou la désinscription. L'email de la personne peut être invalide ou bien la personne cherche à s'inscrire alors qu'elle est déjà inscrite.
185
+ └── validation // Le contenu du bloc s'affiche à la place du formulaire (bloc "form") si le champ email a été rempli et que l'inscription ou la désinscription s'est bien passée.
186
+ ```
187
+ ### Balises
188
+
189
+ Bloc|Balise|Description
190
+ ---|---|---
191
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
192
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
193
+ | intitule | intitule | Cet intitulé est paramétrable lors de l'édition d'un widget dans la gestion de l'Apparence de la Console d'administration de Kiubi. |
194
+ | form | ctl | Cette balise est présente dans certains widgets qui utilisent un formulaire. Elle y a alors une utilité technique, sans elle le formulaire ne fonctionnera pas. |
195
+ | form | email | Cette balise sert à réafficher la valeur précédemment saisie dans le formulaire en cas d'erreur. |
196
+ | form | checked_in | Affiche checked="checked" si l'utilisateur voulait s'inscrire. Sinon n'affiche rien. |
197
+ | form | checked_out | Affiche checked="checked" si l'utilisateur voulait se désinscrire. Sinon n'affiche rien. |
198
+ | erreur | erreur | Message d'erreur. Ce message est personnalisable dans "Mon site / Communication / Abonnés à la Newsletter" (voir champs "Si déjà inscrit", "Si pas encore inscrit"). |
199
+ | validation | message | Message de confirmation. Ce message est personnalisable dans "Mon site / Communication / Abonnés à la Newsletter" (voir champs "Si inscription validée", "Si désinscription validée"). |
200
+
201
+
202
+ ## Widget Modules / Syndication
203
+
204
+ **Affiche les liens vers les derniers billets du Blog sous forme de flux (RSS ou ATOM) et les intègre dans la page pour être reconnus automatiquement par les navigateurs.**
205
+ Par défaut, seuls les liens du flux de la catégorie courante du Blog sont affichés.
206
+
207
+ ### Template
208
+
209
+ Le template du widget : `theme/fr/widgets/communication/syndication_blog/index.html`. Exemple :
210
+
211
+ ```html
212
+ <!-- BEGIN:main -->
213
+
214
+ <!-- BEGIN: intitule -->
215
+ <h1>{intitule}</h1>
216
+ <!-- END: intitule -->
217
+ <ul>
218
+ <!-- BEGIN:flux -->
219
+ <li><a href="{lien_flux}" title="{intitule_flux|htmlentities}">{intitule_flux}</a></li>
220
+ <!-- END:flux -->
221
+ </ul>
222
+ <!-- BEGIN:noflux -->
223
+ Pas de flux disponible
224
+ <!-- END:noflux -->
225
+
226
+ <!-- END:main -->
227
+ ```
228
+ ### Arborescence des blocs
229
+
230
+ ```
231
+ └── main // Bloc racine tout le temps affiché.
232
+ ├── intitule // Ne s'affiche que si l'intitulé du widget est rempli.
233
+ ├── flux // Le contenu du bloc s'affiche pour chaque flux.
234
+ └── noflux // Le contenu du bloc s'affiche s'il n'y a aucun flux.
235
+ ```
236
+ ### Balises
237
+
238
+ Bloc|Balise|Description
239
+ ---|---|---
240
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
241
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
242
+ | main | widget_format | Affiche les format de flux séléctionnés séparés par un virgule (rss2.0 ou atom) |
243
+ | intitule | intitule | Cet intitulé est paramétrable lors de l'édition d'un widget dans la gestion de l'Apparence de la Console d'administration de Kiubi. |
244
+ | flux | lien_flux | URL vers le flux de syndication. |
245
+ | flux | intitule_flux | Intitulé du flux qui reprends le format du flux ("ATOM" ou "RSS 2.0"). |
246
+
247
+
248
+ ## Widget Modules / Dismoi?
249
+
250
+ **Afficher un formulaire dismoi. Dismoi? est le module de gestion de formulaires avancés.**
251
+
252
+
253
+ ### Template
254
+
255
+ Le template du widget : `theme/fr/widgets/communication/formulaires/index.html`. Exemple :
256
+
257
+ ```html
258
+ <!-- BEGIN: main -->
259
+
260
+ <!-- BEGIN: intitule -->
261
+ <h1>{intitule_form}</h1>
262
+ <!-- END: intitule -->
263
+
264
+ <!-- BEGIN:form -->
265
+ <form method="post" action="#multi_form" enctype="multipart/form-data">
266
+ <!-- BEGIN:erreurs -->
267
+ <div>{erreurs}</div>
268
+ <!-- END:erreurs -->
269
+
270
+ <!-- BEGIN:fieldset -->
271
+ <!-- BEGIN:debut_fieldset -->
272
+ <fieldset>
273
+ <legend>{legend}</legend>
274
+ <div>
275
+ <!-- END:debut_fieldset -->
276
+ <!-- BEGIN: champ -->
277
+ <span class="{erreur}">
278
+ <label for="multi_form{id}">{intitule}
279
+ <!-- BEGIN:obligatoire -->*<!-- END:obligatoire --> :</label>
280
+ <!-- BEGIN: text -->
281
+ <input type="text" name="{name}" id="multi_form{id}" value="{valeur}" />
282
+ <!-- END: text -->
283
+ <!-- BEGIN: textarea -->
284
+ <textarea name="{name}" rows="10" id="multi_form{id}" >{valeur}</textarea>
285
+ <!-- END: textarea -->
286
+ <!-- BEGIN: civilite -->
287
+ <div>
288
+ <label for="multi_form_m{id}">
289
+ <input name="{name}" type="radio" id="multi_form_m{id}" value="M" {checked_m} />
290
+ M</label>
291
+ <label for="multi_form_mme{id}">
292
+ <input name="{name}" type="radio" id="multi_form_mme{id}" value="Mme" {checked_mme} />
293
+ Mme</label>
294
+ <label for="multi_form_mlle{id}">
295
+ <input name="{name}" type="radio" id="multi_form_mlle{id}" value="Mlle" {checked_mlle} />
296
+ Mlle</label>
297
+ </div>
298
+ <!-- END: civilite -->
299
+ <!-- BEGIN: select -->
300
+ <select name="{name}" id="multi_form{id}">
301
+ <!-- BEGIN:option-->
302
+ <option value="{value}" {selected}>{label}</option>
303
+ <!-- END:option-->
304
+ </select>
305
+ <!-- END: select -->
306
+ <!-- BEGIN: checkbox -->
307
+ <!-- BEGIN:option-->
308
+ <input name="{name}" id="multi_form{id}_{value}" type="checkbox" value="{value}" {checked} />
309
+ <label for="multi_form{id}_{value}">{label}</label>
310
+ <!-- END:option-->
311
+ <!-- END: checkbox -->
312
+ <!-- BEGIN: upload -->
313
+ <input type="file" name="{name}" id="multi_form{id}" />
314
+ <!-- END: upload -->
315
+ <!-- BEGIN: aide -->
316
+ <p>{aide}</p>
317
+ <!-- END: aide -->
318
+ </span>
319
+ <!-- END: champ -->
320
+ <!-- BEGIN:fin_fieldset -->
321
+ </div>
322
+ </fieldset>
323
+ <!-- END:fin_fieldset -->
324
+ <!-- END:fieldset -->
325
+
326
+
327
+
328
+ <!-- BEGIN:consentement -->
329
+ <p class="{erreur}">
330
+ <label for="consentement_ok">
331
+ <input name="consentement_ok" id="consentement_ok" type="checkbox" value="1" {check_consentement}/>
332
+ J'accepte l'utilisation de mes donn&eacute;es personnelles
333
+ </label>
334
+ </p>
335
+ <p>{finalites}</p>
336
+ <!-- END:consentement -->
337
+
338
+ <!-- BEGIN:captcha -->
339
+ <fieldset>
340
+ <legend>Anti-spam :</legend>
341
+ <p class="{erreur}">
342
+ <label for="captcha[{captcha_id}]">{captcha_question}</label>
343
+ <input name="captcha[{captcha_id}]" id="captcha[{captcha_id}]" type="text" />
344
+ </p>
345
+ </fieldset>
346
+ <!-- END: captcha -->
347
+ <p><input type="submit" name="Submit" value="Envoyer" /></p>
348
+ <p><strong>* champs obligatoires</strong></p>
349
+ <div>
350
+ <!-- BEGIN: hidden -->
351
+ <input type="hidden" name="{name}" value="{valeur}" />
352
+ <!-- END: hidden -->
353
+ <input type="hidden" name="j" value="{jeton}" />
354
+ <input type="hidden" name="form_id" value="{form_id}" />
355
+ <input type="hidden" name="act" value="send" />
356
+ <input type="hidden" name="ctl" value="{ctl}" />
357
+ </div>
358
+ </form>
359
+ <!-- END:form -->
360
+ <!-- BEGIN:message -->
361
+ {message}
362
+ <!-- END:message -->
363
+
364
+ <!-- END: main -->
365
+ ```
366
+ ### Arborescence des blocs
367
+
368
+ ```
369
+ └── main // Bloc racine tout le temps affiché
370
+ ├── intitule // Ne s'affiche que si l'intitulé du widget est rempli.
371
+ ├── message // Ce bloc s'affiche après la soumission du formulaire, si un message est renseigné
372
+ └── form // Ce bloc s'affiche si le formulaire n'a pas été soumis
373
+ ├── fieldset // Ce bloc s'affiche pour chaque fieldset
374
+ │ ├── debut_fieldset // Ce bloc s'affiche à chaque début de fieldset.
375
+ │ ├── champ // Ce bloc s'affiche pour chaque champ du formulaire
376
+ │ │ ├── aide // Le contenu du bloc s'affiche si une aide textuelle pour le champ existe
377
+ │ │ ├── checkbox // Le contenu du bloc s'affiche si le champ est de type "checkbox"
378
+ │ │ │ └── option // Ce bloc s'affiche pour chaque valeur possible
379
+ │ │ ├── radio // Le contenu du bloc s'affiche si le champ est de type "radio"
380
+ │ │ │ └── option // Ce bloc s'affiche pour chaque valeur possible
381
+ │ │ ├── civilite // Le contenu du bloc s'affiche si le champ est de type "civilite"
382
+ │ │ ├── text // Le contenu du bloc s'affiche si le champ est de type "text", "chiffres", "lettres" ou "email"
383
+ │ │ ├── textarea // Le contenu du bloc s'affiche si le champ est de type "textarea"
384
+ │ │ ├── date // Le contenu du bloc s'affiche si le champ est de type "date"
385
+ │ │ ├── datetime // Le contenu du bloc s'affiche si le champ est de type "date et heure"
386
+ │ │ ├── upload // Le contenu du bloc s'affiche si le champ est de type "upload"
387
+ │ │ ├── select // Le contenu du bloc s'affiche si le champ est de type "select"
388
+ │ │ │ └── option // Ce bloc s'affiche pour chaque valeur possible
389
+ │ │ └── obligatoire // Ce bloc s'affiche si le champ est obligatoire
390
+ │ └── fin_fieldset // Ce bloc s'affiche à chaque fin de fieldset.
391
+ ├── hidden // Le contenu du bloc s'affiche pour chaque de type "caché".
392
+ ├── erreurs // Ce bloc s'affiche si le formulaire contient des erreurs
393
+ ├── captcha // Ce bloc s'affiche si le formulaire est protégé par un captcha
394
+ └── consentement // Ce bloc s'affiche si le recueilement du consentement est activé.
395
+ ```
396
+ ### Balises
397
+
398
+ Bloc|Balise|Description
399
+ ---|---|---
400
+ | main | form_id | Identifiant unique du formulaire |
401
+ | main | serial | Identifiant unique du widget dans la page. Permet d'identifier de manière unique le widget dans la page. |
402
+ | main | ctl | Cette balise est présente dans certains widgets qui utilisent un formulaire. Elle y a alors une utilité technique, sans elle le formulaire ne fonctionnera pas. |
403
+ | main | jeton | Cette balise est présente dans certains widgets qui utilisent un formulaire. Elle y a alors une utilité technique, sans elle le formulaire ne fonctionnera pas. |
404
+ | main | action | Cette balise est présente dans certains widgets qui utilisent un formulaire. Elle y a alors une utilité technique, sans elle le formulaire ne fonctionnera pas. |
405
+ | main | widget_modele | Nom du modèle utilisé par le widget (vide pour le modèle de base). |
406
+ | main | widget_form_api | Identifiant API Front-office du formulaire |
407
+ | intitule | intitule_form | Cet intitulé est paramétrable lors de l'édition d'un widget dans la gestion de l'Apparence de la Console d'administration de Kiubi. |
408
+ | message | message | Message de remerciement |
409
+ | message | alias_* | Affiche la valeur d'un champ en fonction de son alias. Le nom de la balise est construit à partir de l'alias qui est tranformé en minuscule et dont tous les caractères spécaux ont été filtrés (cf filtre sanitize) |
410
+ | debut_fieldset | legend | Intitulé du fieldset |
411
+ | champ | compteur | La balise affichera un compteur commençant à 1 et qui sera incrémenté de 1 à chaque champ. |
412
+ | champ | name | Nom du champ dans le formulaire (attribut name de la balise input) |
413
+ | champ | id | Id du champ. |
414
+ | champ | intitule | Intitulé du champ. |
415
+ | champ | type | Type du champ. Les valeurs possibles sont : "text", "textarea", "chiffres", "lettres", "email", "checkbox", "select", "civilite", "date", "datetime", "radio", "departements", "regions", "pays", "hidden". |
416
+ | champ | alias | Alias du champ. |
417
+ | champ | obligatoire | Affiche obligatoire si le champ est désigné comme tel. Sinon n'affiche rien. |
418
+ | champ | erreur | La balise affichera 'erreur' si le champ est en erreur lors de la validation |
419
+ | aide | aide | Aide textuelle du champ |
420
+ | option | checked | Cette balise sert à reselectionner la valeur précédemment choisie dans le formulaire en cas d'erreur. |
421
+ | option | value | Valeur du champ checkbox |
422
+ | option | label | Label de la valeur |
423
+ | option | checked | Cette balise sert à reselectionner la valeur précédemment choisie dans le formulaire en cas d'erreur. |
424
+ | option | value | Valeur du champ radio |
425
+ | option | label | Label de la valeur |
426
+ | civilite | checked_m | Affiche checked="checked" si la civilité "M" avait été choisie. Sinon n'affiche rien. |
427
+ | civilite | checked_mme | Affiche checked="checked" si la civilité "Mme" avait été choisie. Sinon n'affiche rien. |
428
+ | civilite | checked_mlle | Affiche checked="checked" si la civilité "Mlle" avait été choisie. Sinon n'affiche rien. |
429
+ | text | valeur | Valeur du champ texte |
430
+ | textarea | valeur | Valeur du champ textearea |
431
+ | date | valeur | Valeur du champ date |
432
+ | datetime | valeur | Valeur du champ datetime |
433
+ | option | checked | Cette balise sert à reselectionner la valeur précédemment choisie dans le formulaire en cas d'erreur. |
434
+ | option | selected | Cette balise sert à reselectionner la valeur précédemment choisie dans le formulaire en cas d'erreur. |
435
+ | option | value | Cette balise sert à réafficher la valeur précédemment saisie dans le formulaire en cas d'erreur. |
436
+ | option | label | Label de la valeur |
437
+ | hidden | name | Nom du champ dans le formulaire (attribut name de la balise input) |
438
+ | hidden | valeur | Valeur du champ caché |
439
+ | erreurs | erreurs | Erreur(s) rencontrée(s) |
440
+ | captcha | captcha_question | Question du captcha |
441
+ | captcha | captcha_id | Jeton du captcha |
442
+ | captcha | erreur | La balise affichera 'erreur' si le champ est en erreur lors de la validation |
443
+ | consentement | finalites | Affiche les traitements et finalité de la collecte des données personnelles. |
444
+ | consentement | check_consentement | Renvoi checked="checked" pour accepter le recueil des données. |
445
+ | consentement | erreur | La balise affichera 'erreur' si le champ est en erreur lors de la validation |
446
+
447
+
448
+ ## Widget Modules / Dismoi? : E-mail de confirmation
449
+
450
+ **Template du mail envoyé par le formulaire dismoi.**
451
+
452
+
453
+ ### Template
454
+
455
+ Le template du widget : `theme/fr/widgets/communication/formulaires/mail.html`. Exemple :
456
+
457
+ ```html
458
+ <!-- BEGIN: main -->
459
+ <!-- BEGIN: champ -->
460
+ {intitule} : {valeur}
461
+ <!-- END: champ -->
462
+ <!-- BEGIN: infos_sup -->
463
+ Informations supplementaires : {infos_connection}
464
+ <!-- END: infos_sup -->
465
+ <!-- END: main -->
466
+ ```
467
+ ### Arborescence des blocs
468
+
469
+ ```
470
+
471
+ ```
472
+ ### Balises
473
+
474
+ Bloc|Balise|Description
475
+ ---|---|---
476
+ | champ | intitule | Intitulé du champ. |
477
+ | champ | valeur | Affiche la valeur du champ saisi dans le formulaire de dismoi. |
478
+ | infos_sup | infos_connection | Affiche l'adresse IP et l'hôte de l'expéditeur de l'email. |
479
+