@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,201 @@
1
+ ## Balises globales
2
+
3
+ Les balises globales sont disponibles et utilisables partout dans Kiubi (modèles
4
+ graphiques, éditeurs de texte visuels, champs d'information, ...).
5
+
6
+ #### Balises de base
7
+
8
+
9
+
10
+ |Balise|Description|
11
+ |---|---|
12
+ | `{racine}` | Indique le chemin relatif vers la racine du site où que l'on soit situé dans l'arborescence. |
13
+ | `{lg}` | Indique le code langue courant (toujours fr pour l'instant). Cette balise est également disponible dans les templates d'email |
14
+ | `{baseLangue}` | Indique le chemin relatif vers la racine du site dans la langue courante. |
15
+ | `{lien_pagecourante}` | URL de la page courante. |
16
+ | `{intitule_pagecourante}` | Intitulé de la page courante. |
17
+ | `{optim_pagecourante}` | Affiche le nom optimisé de la page courante. Affiche par exmple le nom optimisé du billet dans la page de détail de billet du blog, ou le nom optimisé de la catégorie dans la page de détail d'une catégorie du catalogue.<br /> |
18
+ | `{contexte_pagecourante}` | Affiche le contexte de la page courante sous forme d'une liste qui reprends le service, le type et les informations permettant d'identifer l'objet principal de la page. Plus de détails dans la section "Contexte" ci-dessous. |
19
+ | `{lien_pageparente}` | URL de la page parente (niveau hiérarchique supérieur dans l'arborescence). |
20
+ | `{intitule_pageparente}` | Indique l'intitulé de la page parente. |
21
+ | `{accroche_site}` | Affiche l'accroche du site figurant dans "Mon site / Apparence / Bloc-marque". Cette balise est également disponible dans les templates d'email |
22
+ | `{desc_site}` | Affiche la description du site figurant dans "Mon site / Apparence / Bloc-marque". Cette balise est également disponible dans les templates d'email |
23
+ | `{logo_site}` | Affiche l'identifiant du logo du site figurant dans "Mon site / Apparence / Bloc-marque". Cette balise est également disponible dans les templates d'email |
24
+ | `{url_logo_site}` | Affiche l'url du logo du site figurant dans "Mon site / Apparence / Bloc-marque". Cette balise est également disponible dans les templates d'email |
25
+ | `{domaine}` | Affiche le nom du domaine courant du site. |
26
+ | `{schema}` | Affiche le schéma du site (http ou https). |
27
+ | `{site_nom}` | Affiche le nom du site figurant dans "Mon compte / Préférences". Cette balise est également disponible dans les templates d'email |
28
+ | `{g_vignette_l}` | Largeur en pixels des grandes vignettes de la médiathèque. |
29
+ | `{vignette_l}` | Largeur en pixels des vignettes de la médiathèque. |
30
+ | `{g_vignette_h}` | Hauteur en pixels des grandes vignettes de la médiathèque. |
31
+ | `{vignette_h}` | Hauteur en pixels des vignettes de la médiathèque. |
32
+ | `{g_miniature_l}` | Largeur en pixels des grandes miniatures de la médiathèque. |
33
+ | `{miniature_l}` | Largeur en pixels des miniatures de la médiathèque. |
34
+ | `{g_miniature_h}` | Hauteur en pixels des grandes miniatures de la médiathèque. |
35
+ | `{miniature_h}` | Hauteur en pixels des miniatures de la médiathèque. |
36
+ | `{balise}` | Affiche le code d'un balise sans qu'elle ne soit interpretée. Exemple : `{balise|site_nom}` affiche "{site_nom}". |
37
+ | `{cdn}` | URL du CDN des ressources statiques de la Plateforme.<br /> |
38
+ | `{referer}` | Affiche le referer du navigateur, remplacée par REQUEST.referer |
39
+ | `{devise}` | Affiche le devise du site. Cette balise est également disponible dans les templates d'email |
40
+ | `{devise_iso}` | Affiche le code iso (3 lettres) de la devise du site. Cette balise est également disponible dans les templates d'email |
41
+ | `{theme}` | Affiche le code du thème graphique du site. Le code pour les thèmes graphiques personnalisés est "theme". Cette balise est également disponible dans les templates d'email |
42
+ | `{canonical}` | Affiche le chemin canonique de la page en cours |
43
+ | `{liste_domaines}` | Liste de tout les noms de domaines du site. |
44
+ | `{FILE "fichier.html"}` | Cette balise est très spéciale car elle permet d'inclure un modèle graphique dans le modèle graphique courant. Il suffit pour cela d'indiquer le chemin du modèle graphique que vous voulez inclure. Ce fichier doit se trouver dans le thème courant. <br /><br />Cette balise est souvent utilisée pour inclure à différents endroits des bouts de page qui reviennent de manière récurrente. Par exemple, dans les thèmes Kiubi, le copyright en bas de page est inclus dans toutes les pages grâce à la balise : `{FILE "/fr/includes/copyright.html"}`<br /><br />Cette balise est également disponible dans les templates d'email<br />Attention : cette balise *n'est pas disponible* dans les contenus WYSIWYG. |
45
+ | `{illustration_pagecourante}` | Affiche le chemin vers l'illustration de le page courante. N'affiche rien si aucune illustration n'est disponible. |
46
+ | `{illustration_pagecourante_miniature}` | Affiche le chemin vers la miniature de l'illustration de le page courante. N'affiche rien si aucune illustration n'est disponible. |
47
+ | `{illustration_pagecourante_vignette}` | Affiche le chemin vers la vignette de l'illustration de le page courante. N'affiche rien si aucune illustration n'est disponible. |
48
+ | `{illustration_pagecourante_g_vignette}` | Affiche le chemin vers la grande vignette de l'illustration de le page courante. N'affiche rien si aucune illustration n'est disponible. |
49
+ | `{illustration_pagecourante_g_miniature}` | Affiche le chemin vers la grande miniature de l'illustration de le page courante. N'affiche rien si aucune illustration n'est disponible. |
50
+
51
+
52
+ #### Détail de la balise contexte_pagecourante
53
+
54
+ La balise contexte_pagecourante affiche des valeurs spécifique à la page dans laquelle est utlisée. Son utlisation est particulièrement appréciable avec certains frameworks CSS et Javascript.
55
+
56
+
57
+
58
+ |Balise|Description|
59
+ |---|---|
60
+ | `{/}` | cms cms-accueil |
61
+ | `{/[page].html}` | cms cms-page cms-page-[page] |
62
+ | `{/blog/}` | blog blog-accueil |
63
+ | `{/blog/[categorie]/}` | blog blog-categorie blog-categorie-[categorie] |
64
+ | `{/blog/[categorie]/[yyyy]/[mm]/[dd]/}` | blog blog-categorie blog-categorie-[categorie] blog-y-[yyyy] blog-m-[mm] blog-d-[dd] |
65
+ | `{/blog/[categorie]/[yyyy]/[mm]/[dd]/[billet].html}` | blog blog-billet blog-billet-[billet] blog-categorie-[categorie] blog-a-[yyyy] blog-m-[mm] blog-j-[dd] |
66
+ | `{/catalogue/}` | catalogue catalogue-accueil |
67
+ | `{/catalogue/[categorie]/}` | catalogue catalogue-categorie catalogue-categorie-[categorie] |
68
+ | `{/catalogue/[categorie]/[tags:]/}` | catalogue catalogue-categorie catalogue-categorie-[categorie] catalogue-tag catalogue-tag-[tag1] catalogue-tag-[tag-2].... |
69
+ | `{/catalogue/[categorie]/[produit].html}` | catalogue catalogue-produit catalogue-produit-[produit] catalogue-categorie-[categorie] |
70
+ | `{/compte/[page].html}` | compte compte-[page] |
71
+ | `{/contact/}` | contact |
72
+ | `{/ecommerce/[page].html}` | ecommerce ecommerce-[page] |
73
+ | `{/recherche/[service]/}` | recherche recherche-[service] |
74
+
75
+
76
+ #### Informations société
77
+
78
+ Les balises ci-dessous sont utilisables dans tous les templates, widgets, contenu wysiwyg et templates d'email.
79
+
80
+ |Balise|Description|
81
+ |---|---|
82
+ | `{SOCIETE.contact_nom}` | Affiche le nom du contact principal du site internet figurant dans "Mon compte / Préférences". |
83
+ | `{SOCIETE.contact_prenom}` | Affiche le prénom du contact principal du site internet figurant dans "Mon compte / Préférences". |
84
+ | `{SOCIETE.contact_email}` | Affiche l'e-mail du contact principal du site internet figurant dans "Mon compte / Préférences". |
85
+ | `{SOCIETE.societe_nom}` | Affiche le nom de la société responsable du site internet figurant dans "Mon compte / Préférences". |
86
+ | `{SOCIETE.societe_adresse}` | Affiche l'adresse de la société responsable du site internet figurant dans "Mon compte / Préférences". |
87
+ | `{SOCIETE.societe_cp}` | Affiche le code postal de la société responsable du site internet figurant dans "Mon compte / Préférences". |
88
+ | `{SOCIETE.societe_ville}` | Affiche la ville de la société responsable du site internet figurant dans "Mon compte / Préférences". |
89
+ | `{SOCIETE.societe_pays}` | Affiche le pays de la société responsable du site internet figurant dans "Mon compte / Préférences". |
90
+ | `{SOCIETE.societe_tel}` | Affiche le numéro de téléphone de la société responsable du site internet figurant dans "Mon compte /Préférences". |
91
+ | `{SOCIETE.societe_mobile}` | Affiche le numéro de mobile de la société responsable du site internet figurant dans "Mon compte / Préférences". |
92
+ | `{SOCIETE.societe_fax}` | Affiche le numéro de fax de la société responsable du site internet figurant dans "Mon compte / Préférences". |
93
+ | `{SOCIETE.societe_cnil}` | Affiche le numéro de déclaration CNIL du site internet figurant dans "Mon compte / Préférences". |
94
+ | `{SOCIETE.societe_capital}` | Affiche le capital de la société responsable du site internet figurant dans "Mon compte / Préférences". |
95
+ | `{SOCIETE.societe_siret}` | Affiche le numéro siret de la société responsable du site internet figurant dans "Mon compte / Préférences". |
96
+ | `{SOCIETE.societe_rcs}` | Affiche le RCS de la société responsable du site internet figurant dans "Mon compte / Préférences". |
97
+ | `{SOCIETE.societe_ape}` | Affiche le code APE (ou NAF) de la société responsable du site internet figurant dans "Mon compte / Préférences". |
98
+ | `{SOCIETE.societe_tva}` | Affiche le numéro de TVA intracommunautaire de la société responsable du site internet figurant dans "Mon compte / Préférences". |
99
+ | `{SOCIETE.societe_forme}` | Affiche la forme juridique de la société responsable du site internet figurant dans "Mon compte / Préférences". |
100
+
101
+
102
+ #### Horodatage
103
+
104
+ Les balises ci-dessous sont utilisables dans tous les templates, widgets, contenu wysiwyg et templates d'email.
105
+
106
+ |Balise|Description|
107
+ |---|---|
108
+ | `{num_jour_maintenant}` | Affiche le numéro du jour courant (01 - 31). |
109
+ | `{jour_semaine_maintenant}` | Affiche le jour de la semaine courant (lundi - dimanche). |
110
+ | `{num_mois_maintenant}` | Affiche le numéro du mois courant (01 - 12). |
111
+ | `{mois_maintenant}` | Affiche le mois courant (janvier - décembre). |
112
+ | `{mois_abrev_maintenant}` | Affiche le mois courant abrégé (jan - déc). Il vaut mieux utiliser `{mois_abrev_maintenant}` que<br />`{mois_maintenant|left|3}` car la découpe se fait plus intelligemment pour les mois en quatre lettres. |
113
+ | `{annee_maintenant}` | Affiche l'année courante (2007). |
114
+ | `{heure_maintenant}` | Affiche l'heure courante (00-23). |
115
+ | `{minute_maintenant}` | Affiche les minutes courantes (00-59). |
116
+ | `{seconde_maintenant}` | Affiche les secondes courantes (00-59). |
117
+ | `{timestamp_maintenant}` | Affiche le timestamp courant |
118
+
119
+
120
+ #### Informations client
121
+
122
+ Les balises ci-dessous sont utilisables dans tous les templates / widgets et contenu wysiwyg
123
+
124
+ |Balise|Description|
125
+ |---|---|
126
+ | `{CLIENT.client_id}` | Affiche l'identifiant interne du client. Requiert que le client soit connecté |
127
+ | `{CLIENT.num}` | Affiche le numéro du client. Requiert que le client soit connecté |
128
+ | `{CLIENT.nom}` | Affiche le nom du client. Requiert que le client soit connecté |
129
+ | `{CLIENT.prenom}` | Affiche le prénom du client. Requiert que le client soit connecté |
130
+ | `{CLIENT.genre}` | Affiche le genre ("H" ou "F") du client. Requiert que le client soit connecté |
131
+ | `{CLIENT.email}` | Affiche l'email du client. Requiert que le client soit connecté |
132
+ | `{CLIENT.pseudo}` | Affiche le pseudo du client. Requiert que le client soit connecté |
133
+ | `{CLIENT.web}` | Affiche le site web du client. Requiert que le client soit connecté |
134
+ | `{CLIENT.avatar}` | Affiche l'URL de l'avatar du client |
135
+ | `{CLIENT.groupe_extranet}` | Affiche le groupe extranet du client |
136
+ | `{CLIENT.groupe_extranet_id}` | Affiche l'identifiant numérique du groupe extranet du client |
137
+ | `{CLIENT.page_extranet}` | Affiche la page du groupe extranet du client |
138
+
139
+
140
+ #### Balises POST/GET
141
+
142
+ Les balises ci-dessous sont utilisables dans tous les templates / widgets et contenu wysiwyg
143
+
144
+ |Balise|Description|
145
+ |---|---|
146
+ | `{GET.*}` | Affiche la valeur d'un paramètre GET de la page. Exemple : `{GET.id}` affiche la valeur du paramètre GET "id". |
147
+ | `{POST.*}` | Affiche la valeur d'un paramètre POST de la page. Exemple : `{POST.id}` affiche la valeur du paramètre POST "id". |
148
+ | `{REQUEST.page}` | Affiche le nom de page de l'url courante |
149
+ | `{REQUEST.repertoire}` | Affiche le chemin de l'url courante |
150
+ | `{REQUEST.url}` | Affiche l'url courante |
151
+ | `{REQUEST.domaine}` | Affiche le domaine courant |
152
+ | `{REQUEST.referer}` | Affiche le referer du navigateur |
153
+
154
+
155
+ #### API
156
+
157
+ Les balises ci-dessous fournissent des informations sur l'API Front-office
158
+
159
+ |Balise|Description|
160
+ |---|---|
161
+ | `{API.actif}` | Renvoie la chaine "true" si l'api du site est active. "false" dans le cas contraire. |
162
+
163
+
164
+
165
+
166
+ ### Filtres de balises
167
+
168
+ Kiubi supporte un ensemble de filtres qui peuvent être appliqués aux balises.
169
+ Ces filtres ont pour but de changer la valeur de la balise pour mieux répondre à
170
+ un besoin précis.
171
+
172
+ On utilise ces filtres en ajoutant une barre verticale | dans la balise. Exemple : `{balise|filtre}`.
173
+
174
+ Certains filtres peuvent prendre des arguments, ils seront alors séparés par une
175
+ autre barre. Exemple : `{balise|filtre|argument}`.
176
+
177
+ |Filtre|Description|
178
+ |---|---|
179
+ | ucfirst | Met en majuscule la première lettre du texte |
180
+ | strtoupper | Met en majuscule tout le texte |
181
+ | strtolower | Met en minuscule tout le texte |
182
+ | rawurlencode | Encode une chaîne en URL selon la [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt). Supporte un argument "utf8" pour encode le résultat en UTF-8. |
183
+ | htmlentities | Convertit tous les caractères éligibles en entités HTML. Supporte un argument "utf8" pour encode le résultat en UTF-8 |
184
+ | left|x | Tronque le texte à gauche à strictement X caractères. |
185
+ | stripText|x | Supprime les balises HTML puis tronque le texte à gauche sur X caractères au plus en conservant les mots entiers |
186
+ | mot|x | Affiche le Xème mot du texte |
187
+ | mapValue|x|y | Compare la valeur de la balise avec valeurs de références. Affiche X si la valeur est "1", "actif", "checked", "selected" ou "erreur". Affiche Y dans le cas contraire. Exemple si le contenu de la balise `{texte10}` est "actif", `{texte10|mapValue|active}` affiche "active". |
188
+ | sanitize | Passe en minuscule,enlève tous les accents d'une chaine de caractères et convertis les espaces en tirets. Les tirets consécutifs sont fusionnés et les tirets finaux sont supprimés. Seuls les lettres, les chiffres et le tiret sont préservés. Exemple si le contenu de la balise `{titre}` est "C'est fin, c'est très fin, ça se mange sans faim !", alors `{titre|sanitize}` affichera "c-est-fin-c-est-tres-fin-ca-se-mange-sans-faim". Ce filtre fonctionne sur des chaines de texte jusqu'à 120 caractères. |
189
+ | alternate|x | Associé par exemple à la balise `{compteur}`, affiche de façon cyclique des nombre de 1 à `x`. |
190
+ | formatFloat|nb | Formate une valeur décimale brute à `nb` chiffres après la virgule pour la rendre plus lisible en ajoutant un séparateur de milliers et en utilisant la virgule comme séparateur décimal. Un balise qui aurait la valeur "1520.25" sera affichée "1 520,25". |
191
+ | empty|x|y | Affiche X si la valeur est vide. Affiche Y dans le cas contraire. Exemple si le contenu de la balise `{texte10}` est vide, `{texte10|empty|vide}` affiche "vide". |
192
+ | slice|separator|start|length | Affiche une portion d'un texte qui est segmenté par `separator` (au choix `-` ou `_`). La portion commence à la partie `{start}` du texte, pour une longueur de `{length}` parties. Exemple si le contenu de la balise `{titre}` est "a-b-c-d" : <br/><br />`{titre|slice|-|1}` affiche "b-c-d"<br /><br />`{titre|slice|-|1|2}` affiche "b-c"<br /><br />`{titre|slice|-|-2}` affiche "c-d"<br /><br />Il est également possible de séparer le texte avec des espaces en indiquant `space` comme séparateur. Par exemple : `{titre|slice|space|1|2}` |
193
+ | escapejson | Echappe le texte qui peux être utilisé dans une chaine json. |
194
+ | date | Extrait des informations d'un champ `date` ou `datetime`. Ce filtre prend un argument obligatoire parmis les suivants : <br /><br />`{texte10|date|annee}` Affiche l'année courante (2022).<br /><br />`{texte10|date|num_mois}` Affiche le numéro du mois courant (01 - 12).<br /><br />`{texte10|date|num_jour}` Affiche le numéro du jour courant (01 - 31).<br /><br />`{texte10|date|mois}` Affiche le mois courant (janvier - décembre).<br /><br />`{texte10|date|mois_abrev}` Affiche le mois courant abrégé (jan - déc). Il vaut mieux utiliser nov que nov car la découpe se fait plus intelligemment pour les mois en quatre lettres.<br /><br />`{texte10|date|jour_semaine}` Affiche le jour de la semaine courant (lundi - dimanche).<br /><br />`{texte10|date|heure}` Affiche l'heure courante (00-23).<br /><br />`{texte10|date|minute}` Affiche les minutes courantes (00-59).<br /><br />`{texte10|date|seconde}` Affiche les secondes courantes (00-59).<br /><br /><br /><br />Le champ doit contenir une date valide au bon format. Dans le cas contraire le filtre retourne une chaine vide. |
195
+
196
+
197
+ Ainsi `{intitule_pagecourante|strtoupper}` affichera le nom de la page courante en
198
+ majuscule. Tandis que `{SOCIETE.societe_cp|left|2}` affichera le numéro de
199
+ département extrait du code postal du contact principal du site.
200
+
201
+
@@ -0,0 +1,257 @@
1
+ ## Balises des Widgets
2
+
3
+ Un certain nombre de widgets possèdent des fonctionnalités et des balises
4
+ communes.
5
+
6
+ ### `{alterne}`
7
+
8
+ La balise `{alterne}` est utilisée dans les widgets qui génèrent des listings
9
+ comme par exemple le widget du `Blog / Liste des Billets`. La balise affichera
10
+ alternativement 1 ou 2 si on la place dans le bloc qui est répété dans le
11
+ widget.
12
+
13
+ Exemple : le widget `Blog / Liste des Billets` :
14
+
15
+ <!--BEGIN:main -->
16
+ <ul>
17
+ <!--BEGIN:billet -->
18
+ <li class="color_{alterne}">{alterne}, {titre}</li>
19
+ <!-- END:billet -->
20
+ </ul>
21
+ <!-- END:main -->
22
+
23
+ Si on a 5 billets dans son blog, le résultat sera :
24
+
25
+ <pre markdown="0">
26
+ 1, Titre du premier billet
27
+ 2, Titre du deuxième billet
28
+ 1, Titre du troisième billet
29
+ 2, Titre du quatrième billet
30
+ 1, Titre du cinquième billet
31
+ </pre>
32
+
33
+ Cela vous permet, par exemple, d'appeler alternativement l'un ou l'autre style
34
+ pour changer la couleur de fond et rendre ainsi vos listings plus lisibles.
35
+
36
+ Les balises `{alterne_3}`, `{alterne_4}` et `{alterne_5}` sont également disponibles
37
+ et renvoient respectivement les valeurs :
38
+
39
+ <pre markdown="0">
40
+ 1, 2, 3
41
+ 1, 2, 3, 4
42
+ 1, 2, 3, 4, 5
43
+ </pre>
44
+
45
+ ### `{compteur}`
46
+
47
+ La balise `{compteur}` est utilisée dans les widgets qui génèrent des listings
48
+ comme par exemple le widget du `Blog / Liste des commentaires`. La balise
49
+ affichera un compteur commençant à 1 et qui sera incrémenté de 1 à chaque fois.
50
+
51
+ Exemple : le widget `Blog / Liste des Billets` :
52
+
53
+ <!-- BEGIN:main -->
54
+ <ul>
55
+ <!-- BEGIN:commentaire-->
56
+ <li>{compteur}. {commentaire}</li>
57
+ <!-- END:commentaire-->
58
+ </ul>
59
+ <!-- END:main -->
60
+
61
+ Si on a 3 commentaires pour un billet de son blog, le résultat sera :
62
+
63
+ <pre class="prettyprint">
64
+ 1. Premier commentaire
65
+ 2. Deuxième commentaire
66
+ 3. Troisième commentaire
67
+ </pre>
68
+
69
+ Chaque ligne est numérotée automatiquement.
70
+
71
+ ### `{intitule}`
72
+
73
+ Cette fonctionnalité est une association entre un bloc et une balise. Les
74
+ widgets pouvant utiliser la fonctionnalité "Intitulé" ont un bloc
75
+ supplémentaire à placer dans le bloc `main` :
76
+
77
+ <!-- BEGIN:main -->
78
+ <!-- BEGIN:intitule -->{intitule}<!-- END:intitule -->
79
+ <!-- END:main -->
80
+
81
+ Le bloc `<!-- BEGIN:intitule -->` `<!-- END:intitule -->` ne s'affiche que si
82
+ l'intitulé du widget est rempli. Cet intitulé est paramétrable lors de l'édition
83
+ d'un widget dans la gestion de l'Apparence de la Console d'administration de
84
+ Kiubi.
85
+
86
+ ### `{ctl}`
87
+
88
+ La balise `{ctl}` est présente dans certain widgets qui utilisent un formulaire. Elle
89
+ n'a qu'une utilité technique et est présente sous la forme :
90
+
91
+ <input type="hidden" name="ctl" value="{ctl}">
92
+
93
+ **Il ne faut pas la supprimer, sinon le formulaire ne fonctionnera plus !**
94
+
95
+ ### La navigation
96
+
97
+ La navigation est une fonctionnalité que l'on retrouve dans les widgets qui
98
+ génèrent des listings et dont la configuration permet l'affichage. C'est un
99
+ ensemble de blocs qui permet d'afficher des barres de navigations complètes. Les
100
+ résultats sont affichés sur plusieurs pages et la navigation permet de passer
101
+ d'une page à l'autre.
102
+
103
+ Les options de navigation (nombre d'élément par page, afficher ou cacher la
104
+ navigation) sont toujours configurables dans le widget correspondant.
105
+
106
+ La barre de navigation comprend :
107
+
108
+ - des liens vers les pages suivantes et précédentes,
109
+ - des liens vers la première et dernière page,
110
+ - une liste de numéro de page comprenant un lien pour arriver directement sur la
111
+ page en question.
112
+
113
+ Pour plus de souplesse, il est possible de mettre deux barres de navigation dans
114
+ un même widget (une barre en haut et une en bas du listing, par exemple). Les
115
+ balises et blocs ci-dessous fonctionnent dans les blocs `<!-- BEGIN: nav1 -->
116
+ <!-- END: nav1 -->` et `<!-- BEGIN: nav2 --> <!-- END: nav2 -->`.
117
+
118
+ Voici un exemple de ce que cela peux donner en HTML :
119
+
120
+ <!-- BEGIN: nav1 -->
121
+
122
+ <!-- BEGIN: premier -->
123
+
124
+ <a href="{lien_premier}">premiere page</a> |
125
+
126
+ <!-- END: premier -->
127
+
128
+ <!-- BEGIN: precedent -->
129
+
130
+ <a href="{lien_precedent}">page precedente</a> |
131
+
132
+ <!-- END: precedent -->
133
+
134
+ <!-- BEGIN: pages -->
135
+
136
+ <a href="{lien_page}" class="{selected}">{page}</a>
137
+
138
+ <!-- END: pages -->
139
+
140
+ <!-- BEGIN: suivant -->
141
+
142
+ | <a href="{lien_suivant}">page suivante</a>
143
+
144
+ <!-- END: suivant -->
145
+
146
+ <!-- BEGIN: dernier -->
147
+
148
+ | <a href="{lien_dernier}">derniere page</a>
149
+
150
+ <!-- END: dernier -->
151
+
152
+ <!-- END: nav1 -->
153
+
154
+ <br />
155
+
156
+ <br />
157
+
158
+ page {num_page} sur {nb_pages} ({nb_resultats} billets trouvés)<br />
159
+
160
+ <br />
161
+
162
+ [listing ....]<br />
163
+
164
+ <br />
165
+
166
+ <!-- BEGIN: nav2 -->
167
+
168
+ <!-- BEGIN: premier -->
169
+
170
+ <a href="{lien_premier}">premiere page</a> |
171
+
172
+ <!-- END: premier -->
173
+
174
+ <!-- BEGIN: precedent -->
175
+
176
+ <a href="{lien_precedent}">page precedente</a> |
177
+
178
+ <!-- END: precedent -->
179
+
180
+ <!-- BEGIN: pages -->
181
+
182
+ <a href="{lien_page}" class="{selected}">{page}</a>
183
+
184
+ <!-- END: pages -->
185
+
186
+ <!-- BEGIN: suivant -->
187
+
188
+ | <a href="{lien_suivant}">page suivante</a>
189
+
190
+ <!-- END: suivant -->
191
+
192
+ <!-- BEGIN: dernier -->
193
+
194
+ | <a href="{lien_dernier}">derniere page</a>
195
+
196
+ <!-- END: dernier -->
197
+
198
+ <!-- END: nav2 -->
199
+
200
+ Ce qui donnera cela :
201
+
202
+ <pre class="prettyprint">
203
+ premiere page | page precedente | 1 2 3 4 5 | page suivante | derniere page
204
+
205
+ page 2 sur 5 (53 billets trouvés)
206
+
207
+ [listing ...]
208
+
209
+ premiere page | page precedente | 1 2 3 4 5 | page suivante | derniere page
210
+ </pre>
211
+
212
+ #### Balises disponibles
213
+
214
+ #### Arborescence des blocs
215
+
216
+ ```
217
+ ├── nav1 // Le bloc est affiché si la navigation est active et comporte plusieurs pages.
218
+ │ ├── pages // Le contenu du bloc s'affiche pour chaque page.
219
+ │ ├── premier // Le contenu du bloc s'affiche si on n'est pas sur la première page du listing.
220
+ │ ├── dernier // Le contenu du bloc s'affiche si on n'est pas sur la dernière page du listing.
221
+ │ ├── precedent // Le contenu du bloc s'affiche si on n'est pas sur la première page du listing.
222
+ │ └── suivant // Le contenu du bloc s'affiche si on n'est pas sur la dernière page du listing.
223
+ └── nav2 // Le bloc est affiché si la navigation est active et comporte plusieurs pages.
224
+ ├── pages // Le contenu du bloc s'affiche pour chaque page.
225
+ ├── premier // Le contenu du bloc s'affiche si on n'est pas sur la première page du listing.
226
+ ├── dernier // Le contenu du bloc s'affiche si on n'est pas sur la dernière page du listing.
227
+ ├── precedent // Le contenu du bloc s'affiche si on n'est pas sur la première page du listing.
228
+ └── suivant // Le contenu du bloc s'affiche si on n'est pas sur la dernière page du listing.
229
+ ```
230
+ #### Balises
231
+
232
+ Bloc|Balise|Description
233
+ ---|---|---
234
+ | nav1 | lien_premier | URL vers la première page. |
235
+ | nav1 | lien_dernier | URL vers la dernière page. |
236
+ | nav1 | nb_pages | Nombre de page du listing. |
237
+ | nav1 | nb_resultats | Nombre d'élément dans le listing. |
238
+ | nav1 | num_page | Numéro de la page courante. |
239
+ | nav2 | lien_premier | URL vers la première page. |
240
+ | nav2 | lien_dernier | URL vers la dernière page. |
241
+ | nav2 | nb_pages | Nombre de page du listing. |
242
+ | nav2 | nb_resultats | Nombre d'élément dans le listing. |
243
+ | nav2 | num_page | Numéro de la page courante. |
244
+ | pages | lien_page | URL vers la page |
245
+ | pages | page | Numéro de la page. |
246
+ | pages | selected | Affiche "selected" si la page est la page courante. Sinon n'affiche rien. |
247
+ | pages | lien_page | URL vers la page |
248
+ | pages | page | Numéro de la page. |
249
+ | pages | selected | Affiche "selected" si la page est la page courante. Sinon n'affiche rien. |
250
+ | precedent | lien_precedent | URL vers la page précédente. |
251
+ | precedent | lien_precedent | URL vers la page précédente. |
252
+ | suivant | lien_suivant | URL vers la page suivante. |
253
+ | suivant | lien_suivant | URL vers la page suivante. |
254
+
255
+
256
+
257
+
@@ -0,0 +1,154 @@
1
+ ## Types de billets
2
+
3
+ Un billet permet d'ajouter du contenu à une page libre du Site web. Chaque
4
+ billet peut être considéré comme un paragraphe, un bloc de contenu, pouvant
5
+ contenir du texte, des images, des liens, des vidéos, du code HTML, etc. Lors de
6
+ l'ouverture d'un site, Kiubi propose plusieurs types de billets différents en exemple.
7
+
8
+ Chaque type de billet peut être structuré de manière différente et permet
9
+ d'intégrer et de présenter du contenu suivant ses besoins.
10
+
11
+ **Si vous utilisez un thème graphique personnalisé, vous pouvez modifier les types de billets par défaut et créer autant
12
+ de types de billet que souhaité.**
13
+
14
+ ### Principe de fonctionnement
15
+
16
+ Le principe de fonctionnement d'un type billet du Site web est très simple. Tous
17
+ les types de billets de votre site sont regroupés dans le répertoire `theme/fr/billets/`
18
+ de votre espace FTP. Chaque sous-répertoire correspond à
19
+ un type de billet.
20
+
21
+ Un billet est composé, en plus d'une structure HTML de votre choix, d'un maximum
22
+ de 17 champs d'information :
23
+
24
+ - `titre`
25
+ - `sstitre`
26
+ - `texte1` à `texte15`
27
+
28
+ Chaque champ peut contenir n'importe quel type de donnée. Par convention (mais
29
+ ce n'est pas obligatoire), les champs `texte10` à `texte15` sont utilisés pour
30
+ stocker des éléments de la médiathèque (image, fichier, etc.), plus précisément
31
+ l'identifiant faisant référence à l'élément de la médiathèque.
32
+
33
+ Ces champs sont à définir dans le fichier `config.xml` de chaque type de
34
+ billet, ce qui permet de générer automatiquement le formulaire de saisie utilisé
35
+ dans la console d'administration. **Ce fichier est obligatoire.**
36
+
37
+ Chaque champ pourrait être par la suite affiché dans le fichier `index.html`
38
+ de chaque type de billet ou dans chaque widget affichant des billets, en
39
+ fonction de ses besoins. **Ce fichier est obligatoire.**
40
+
41
+ **Comme tous les éléments de Kiubi, un billet (ou plutôt une liste de billet)
42
+ est affiché grâce à un widget. C'est principalement les widgets "Contenu de la
43
+ page libre" et "Bloc d'extrait" qui sont utilisés pour afficher les billets dans votre site internet.**
44
+
45
+ ### Le fichier `config.xml`
46
+
47
+ Ce fichier contient des informations descriptives du type de billet qui seront
48
+ utilisée à la fois dans la console d'administration et le site Internet. Il
49
+ indique à Kiubi de quels champs est composé le type de billet.
50
+
51
+ #### Exemple de code source
52
+
53
+ <?xml version="1.0" encoding="iso-8859-1"?>
54
+ <type tri="2">
55
+ <desc>Titres, texte et image (à gauche)</desc>
56
+ <listechamps>
57
+ <champ champ="titre" type="text" intitule="Titre"/>
58
+ <champ champ="sstitre" type="text" intitule="Sous-titre" />
59
+ <champ champ="texte10" type="image" intitule="Image" />
60
+ <champ champ="texte1" type="wysiwyg" intitule="Contenu" />
61
+ </listechamps>
62
+ </type>
63
+
64
+ #### Description
65
+
66
+ Ce fichier contient une seule balise principale `<type>` qui possède un seul
67
+ attribut :
68
+
69
+ - `tri` : nombre qui sert à définir l'ordre dans le quel vont apparaître les
70
+ types de billet dans les listes déroulantes de la console d'administration.
71
+
72
+ A l'intérieur, une seule balise `<desc>` qui contient la description du type de
73
+ billet qui sera repris dans la console d'administration.
74
+
75
+ La balise `<listechamps>` sert à déclarer tous les champs qui seront utilisés dans
76
+ ce type de billet.
77
+
78
+ Il existe alors une balise `<champ>` par champ qui contient les attributs suivants :
79
+
80
+ - `champ` : code du champ qui sera aussi utilisé dans les templates : `titre`,
81
+ `sstitre`, `texte1` à `texte15`.
82
+ - `type` : le type du champ indique quelle sorte d'information est stockée dans
83
+ le champ.
84
+ - `intitule` : intitulé du champ qui va être repris dans la console
85
+ d'administration dans le formulaire de saisie d'un billet.
86
+
87
+ Il existe dix types de champ :
88
+
89
+ - `text` : champ de saisie simple
90
+ - `textarea` : champ de saisie multiligne
91
+ - `wysiwyg` : éditeur de texte visuel
92
+ - `image` : fichier image de la médiathèque
93
+ - `fichier` : fichier quelconque de la médiathèque
94
+ - `select` : champ de liste déroulante
95
+ - `color` : couleur hexadécimale
96
+ - `date` : date au format `dd/mm/YYYY`
97
+ - `datetime` : date au format `dd/mm/YYYY hh:mm:ss`
98
+ - `checkbox` : champ de type case à cocher
99
+
100
+ Les champs de type `select` ou `checkbox` comportent une liste de valeurs qui est construite
101
+ de la manière suivante :
102
+
103
+ <champ champ="texte2" type="select" intitule="Liste">
104
+ <option value="Valeur1">Label1</option>
105
+ <option value="Valeur2">Label2</option>
106
+ <option value="Valeur3">Label3</option>
107
+ </champ>
108
+
109
+ Dans cet exemple, le contenu de l'attribut `value` est stocké dans le champ `texte2`.
110
+ L'attribut `value` doit **obligatoirement avoir une valeur** (un simple espace `value=" "` est possible). Pour
111
+ les champs de type `checkbox`, la valeur affichée dans le site est la concanénation de toutes les `value` sélectionnées,
112
+ séparées par le caractère `|` (par exemple `Valeur1|Valeur3`).
113
+
114
+ Le label n'est affiché que dans le détail du billet dans la console d'administration.
115
+
116
+ Afin de faciliter l'utilisation des champs de type `date` et `datetime`, il est prévu d'utiliser le filtre `date` suivi
117
+ de l'information à extraire, comme par exemple :
118
+
119
+ Le {texte5|date|jour_semaine} {texte5|date|num_jour} {texte5|date|mois} à {texte5|date|heure}h{texte5|date|minute}
120
+
121
+ Si `texte5` contient la valeur `06/12/2022 15:12:35`, le site affichera :
122
+
123
+ Le dimanche 06 novembre 2022 à 15h12
124
+
125
+ Si la date est invalide ou que le valeur du champ est vide, ce filtre affiche toujours une chaine vide.
126
+
127
+
128
+ ### Template d'un type de billet
129
+
130
+ Le fonctionnement détaillé du template d'un type de billet ainsi que la liste
131
+ exhaustives de ses balises sont accessibles dans la [documentation des balises du
132
+ service CMS](/design-site-web.html#type-de-billet).
133
+
134
+ ### Ajouter un nouveau type de billet
135
+
136
+ Pour ajouter un type de billet, il suffit de créer un nouveau sous-répertoire au
137
+ répertoire `theme/fr/billets/` et d'y copier les fichiers `config.xml` et `index.html`
138
+ correspondant à votre nouveau type de billet. Le nouveau type de
139
+ billet sera alors automatiquement proposé dans le service Site web de la console
140
+ d'administration.
141
+
142
+ ### Types de billets du Blog
143
+
144
+ Les types de billet du blog fonctionnent selon le même principe que les billets du Site web mais **uniquement pour ajouter des informations complémentaires aux billets du Blog**.
145
+
146
+ Contrairement aux types de billets du Site web, les types de billets du blog ne déterminent pas le template du billet, mais seulement si des champs `texte1` et `texte15` sont ajoutés au billet.
147
+
148
+ Le principe de configuration des types de billets du Blog est le même que pour les billets du Site web, mais avec les différences suivantes :
149
+
150
+ - les types de billets du blog sont regroupés dans le répertoire `theme/fr/billets_blog/`
151
+ - il n'y a pas de champs `titre` et `sstitre`, seuls les champs `texte1` et `texte15` sont disponibles
152
+ - seul le fichier `config.xml` est disponible, les templates sont dans le répertoire `theme/fr/widgets/blog/`, en fonction des widgets utilisés
153
+
154
+