314c311a |
1 | /** |
2 | * @name MACRO_OUVRIR_HTML |
3 | * @used article, backend, entree, entrees, image, index_desabonnement, index_erreur, index, index_merci, individu, lettre, lien, map, personne, personnes, signaler, sommaire, traductions |
4 | * @use MACRO_TITRE_PAGE |
5 | * @description définit des variables utiles et affiche la déclaration XHTML et la balise TITLE |
6 | * - définition des langues : du site, de l'entité courante, de l'interface |
7 | * - définition de body_id, body_class |
8 | * - définition de titre_page |
9 | * - définition des ID des publications parentes |
10 | * @require [#OPTIONS.METADONNEESSITE.LANGUEPRINCIPALE] |
11 | */ |
12 | <DEFMACRO NAME="OUVRIR_HTML"> |
13 | |
14 | <!--[ Langue principale du site ]--> |
15 | <LET VAR="mainlang">[#OPTIONS.METADONNEESSITE.LANGUEPRINCIPALE]</LET> |
16 | |
17 | <!--[ Langue de la publication/du document ]--> |
18 | <LET VAR="pagelang"><IF COND="[#LANGUE]">[#LANGUE]<ELSE/>[#MAINLANG]</IF></LET> |
19 | |
20 | <!--[ ID et CLASS du BODY ]--> |
21 | <LET VAR="body_id"><IF COND="[#PAGE]">[#PAGE]<ELSEIF COND="[#VIEW.FORMAT]"/>[#VIEW.FORMAT]<ELSE/><?php echo basename($_SERVER['SCRIPT_FILENAME'], '.' . C::get('extensionscripts')); ?></IF></LET> |
22 | <LET VAR="body_class">default</LET> |
23 | <IF COND="[#TYPE]"> |
24 | <IF COND="[#TYPE|is_array]"> |
25 | <LET VAR="body_id">[#TYPE.TYPE]<IF COND="[#ID]">-[#ID]</IF></LET> |
26 | <LET VAR="body_class">indexes [#TYPE.TYPE]</LET> |
27 | <ELSEIF COND="[#CLASS]"/> |
28 | <LET VAR="body_id"><IF COND="[#CLASS] EQ 'publications' AND [#IDENTIFIER]">[#IDENTIFIER|textebrut]<ELSE/>[#TYPE]-[#ID]</IF></LET> |
29 | <LET VAR="body_class">[#CLASS] [#TYPE]</LET> |
30 | </IF> |
31 | </IF> |
32 | |
33 | <!--[ Titre de la page courante ]--> |
34 | <LET VAR="titre_page"><MACRO NAME="TITRE_PAGE" /></LET> |
35 | |
36 | <!--[ ID des parents de l'entité courante ]--> |
37 | <LOOP NAME="listeParents" SELECT="id" TABLE="publications, relations" WHERE="id2 = '[#ID]' AND id1 = publications.identity" ORDER="degree"> |
38 | <IF COND="[#NBRESULTS] EQ 1"> |
39 | <LET VAR="idrealparent" GLOBAL="1">[#ID]</LET> |
40 | <ELSE/> |
41 | <IF COND="[#COUNT] EQ [#NBRESULTS|lmath('-',1)]"><LET VAR="idrealparent" GLOBAL="1">[#ID]</LET></IF> |
42 | <SWITCH TEST="[#TYPE]"> |
43 | <DO CASE="numero"><LET VAR="idnumero" GLOBAL="1">[#ID]</LET></DO> |
44 | <DO CASE="rubrique"><LET VAR="idrubrique" GLOBAL="1">[#ID]</LET></DO> |
45 | <DO CASE="souspartie"><LET VAR="idsouspartie" GLOBAL="1">[#ID]</LET></DO> |
46 | </SWITCH> |
47 | </IF> |
48 | </LOOP> |
49 | |
50 | <!--[ Liste des ID des traductions de textes (sous-requête redondante). |
51 | Permet également de conditionner les boucles relatives aux traductions. ]--> |
52 | <LOOP NAME="relationsTraduction" SELECT="id1" TABLE="relations" WHERE="nature = 'traduction'"> |
53 | <LET ARRAY="relations_traduction[]" GLOBAL="1">[#ID1]</LET> |
54 | </LOOP> |
55 | |
56 | <!--[ Where clause redondante. |
57 | Usage dans une LOOP : WHERE="id [#NOT_IN_TRADUCTIONS]" ]--> |
58 | <LET VAR="not_in_traductions"><IF COND="![%RELATIONS_TRADUCTION]">IS NOT NULL<ELSE/>NOT IN ([%RELATIONS_TRADUCTION|implode(',')])</IF></LET> |
59 | |
60 | <!--[ Liste des ID des traductions de textes qui se trouvent dans la même rubrique que l'origial (sous-requête redondante). |
61 | Permet également de conditionner les boucles relatives aux traductions. ]--> |
62 | <LOOP NAME="getOriginalWithTranslation" SELECT="relations.id1, entities.idparent" TABLE="relations,entities" WHERE="relations.nature = 'traduction' AND entities.id = relations.id2"> |
63 | <LOOP NAME="getIdTranslationSameParent" SELECT="entities.id" TABLE="entities" WHERE="idparent = '[#IDPARENT]' AND id = '[#ID1]'"> |
64 | <LET ARRAY="relations_traduction_parent_unique[]" GLOBAL="1">[#ID]</LET> |
65 | </LOOP> |
66 | </LOOP> |
67 | |
68 | <!--[ Where clause redondante. |
69 | Usage dans une LOOP : WHERE="id [#NOT_IN_TRADUCTIONS_PARENT_UNIQUE]" ]--> |
70 | <LET VAR="not_in_traductions_parent_unique"><IF COND="![%RELATIONS_TRADUCTION_PARENT_UNIQUE]">IS NOT NULL<ELSE/>NOT IN ([%RELATIONS_TRADUCTION_PARENT_UNIQUE|implode(',')])</IF></LET> |
71 | |
72 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
73 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="[#SITELANG]" lang="[#SITELANG]"> |
74 | <head> |
75 | <script type="text/javascript">document.documentElement.className = 'js';</script> |
76 | <meta http-equiv="Content-type" content="text/html; charset=[#CHARSET]" /> |
77 | <meta http-equiv="Content-language" content="[#PAGELANG]" /> |
78 | <title>[#TITRE_PAGE|textebrut]</title> |
79 | </DEFMACRO> |
80 | |
81 | /** |
82 | * @name MACRO_TITRE_PAGE |
83 | * @used macros_base, macros_meta |
84 | * @use FUNC_PERIODE_PUBLI |
85 | * @description affiche le titre HTML de la page en cours : |
86 | * - index : nom du type et/ou prenom/nom et/ou nom de l'entrée d'index |
87 | * - classe textes : titre du document ou titre traduit pour type informations |
88 | * - sommaire persée numéro : numéro et période |
89 | * - sommaire persée période : titre sommaire |
90 | * - sommaire numéro : titre, numéro, période |
91 | * - SI titre : titre |
92 | * - défaut : titre + sous titre du site |
93 | */ |
94 | <DEFMACRO NAME="TITRE_PAGE"> |
95 | <!--[ index ]--> |
96 | <IF COND="[#TYPE|is_array]"> |
97 | <IF COND="[#TYPE.TITLE]">[#TYPE.TITLE]</IF> |
98 | <IF COND="[#NOMFAMILLE] AND [#PRENOM]"/> - [#NOMFAMILLE] [#PRENOM]<ELSEIF COND="[#IDENTRY] AND [#NOM]"/> - [#NOM]</IF> |
99 | <!--[ texte ]--> |
100 | <ELSEIF COND="[#CLASS] EQ 'textes'"/> |
101 | <IF COND="[#TYPE] EQ 'informations' AND [#ALTERTITRE:#SITELANG]"> |
102 | [#ALTERTITRE:#SITELANG|removenotes] |
103 | <ELSE/> |
104 | [#TITRE|removenotes] |
105 | </IF> |
106 | <!--[ sommaire Persée (numéro) ]--> |
107 | <ELSEIF COND="[#PARTNER] EQ 'persee' AND [#ISSUE_NUMBER] AND [#ISSUE_PERIOD]"/> |
108 | [#ISSUE_NUMBER] | [#ISSUE_PERIOD] |
109 | <!--[ sommaire Persée (période) ]--> |
110 | <ELSEIF COND="[#PARTNER] EQ 'persee' AND [#DCTITLE]"/> |
111 | [#DCTITLE] - [@NAV_NUMEROS_SUR_PERSEE] |
112 | <!--[ sommaire publication ]--> |
113 | <ELSEIF COND="[#CLASS] EQ 'publications'"/> |
114 | <FUNC NAME="TITRE_PUBLICATION" /> |
115 | <!--[ autres types de pages ]--> |
116 | <ELSE/> |
117 | <SWITCH TEST="[#BODY_ID]"> |
118 | <!--[ signaler ]--> |
119 | <DO CASE="signaler"> |
120 | [@SIGNALER_TITRE] - [#OPTIONS.METADONNEESSITE.TITRESITE] |
121 | </DO> |
122 | <!--[ plan du site ]--> |
123 | <DO CASE="map"> |
124 | [@PLAN_DU_SITE] - [#OPTIONS.METADONNEESSITE.TITRESITE] |
125 | </DO> |
126 | <!--[ flux de syndication ]--> |
127 | <DO CASE="backend"> |
128 | [@FLUX_SYNDICATION] - [#OPTIONS.METADONNEESSITE.TITRESITE] |
129 | </DO> |
130 | <!--[ lettre ]--> |
131 | <DO CASES="lettre,merci,erreur,desabonnement"> |
132 | <FUNC NAME="ML_TEXTE" ML_VAR="[#OPTIONS.LETTRE.NOMDELALETTRE]" /> |
133 | </DO> |
134 | <!--[ titre par défaut ]--> |
135 | <DO CASE="default"> |
136 | [#OPTIONS.METADONNEESSITE.TITRESITE]<IF COND="[#OPTIONS.METADONNEESSITE.SOUSTITRESITE]"> - [#OPTIONS.METADONNEESSITE.SOUSTITRESITE]</IF> |
137 | </DO> |
138 | </SWITCH> |
139 | </IF> |
140 | </DEFMACRO> |
141 | |
142 | /** |
143 | * @name MACRO_FERMER_HTML |
144 | * @used article, backend, entree, entrees, image, index_desabonnement, index_erreur, index, index_merci, individu, lettre, lien, map, personne, personnes, signaler, sommaire, traductions |
145 | * @include cleo |
146 | * @description fermeture balises HTML avec inclusion barre de menu |
147 | */ |
148 | <DEFMACRO NAME="FERMER_HTML"> |
149 | <USE TEMPLATEFILE="cleo" /> |
150 | </body> |
151 | </html> |
152 | </DEFMACRO> |
153 | |
154 | /** |
155 | * @name MACRO_INSERER_SYNDICATION |
156 | * @used article, image, index, backend, macros_base |
157 | * @description insère les metas flux RSS numéros et documents |
158 | */ |
159 | <DEFMACRO NAME="INSERER_SYNDICATION"> |
160 | <link rel="alternate" type="application/rss+xml" title="[#OPTIONS.METADONNEESSITE.TITRESITE|textebrut], [@NUMEROS]" href="backend?format=rssnumeros" /> |
161 | <link rel="alternate" type="application/rss+xml" title="[#OPTIONS.METADONNEESSITE.TITRESITE|textebrut], [@DOCUMENTS]" href="backend?format=rssdocuments" /> |
162 | </DEFMACRO> |
163 | |
164 | /** |
165 | * @name MACRO_INSERER_FEUILLE_DE_STYLES |
166 | * @used article, index_desabonnement, personne, lien, image, sommaire, personnes, index, entree, index_merci, individu, index_erreur, entrees, backend, lettre, signaler, map |
167 | * @description insère les différentes feuilles CSS : screen, cleo, print, IE |
168 | */ |
169 | <DEFMACRO NAME="INSERER_FEUILLE_DE_STYLES"> |
42e81cde |
170 | <link rel="stylesheet" type="text/css" href="css/styles_site_print.css" media="print" /> |
314c311a |
171 | <!--[if IE]><link rel="stylesheet" type="text/css" href="css/ie.css" media="screen" /><![endif]--> |
172 | </DEFMACRO> |
173 | |
174 | /** |
175 | * @name MACRO_INSERER_JAVASCRIPT |
176 | * @used article, index_desabonnement, personne, lien, image, sommaire, personnes, index, entree, index_merci, individu, index_erreur, entrees, backend, lettre, signaler, map |
177 | * @description insère les scripts JS : jquery, common |
178 | */ |
179 | <DEFMACRO NAME="INSERER_JAVASCRIPT"> |
180 | <script type="text/javascript" src="js/jquery.js"></script> |
181 | <script type="text/javascript" src="js/common.min.js"></script> |
182 | </DEFMACRO> |
183 | |
184 | /** |
185 | * @name MACRO_PRELUDE |
186 | * @used article, index_desabonnement, personne, lien, image, sommaire, personnes, index, entree, index_merci, individu, index_erreur, entrees, backend, lettre, signaler, map |
187 | * @description fermeture head HTML + ouverture body HTML |
188 | * - liens d'évitement |
189 | * - header (bandeau) |
190 | * - sélecteur de langue |
191 | * - fil d'ariane |
192 | * - accès abonnés |
193 | * - formulaire recherche |
194 | * - ouverture du bloc de contenu principal |
195 | */ |
196 | <DEFMACRO NAME="PRELUDE"> |
197 | |
198 | </head> |
199 | |
200 | <body id="[#BODY_ID]" class="[#BODY_CLASS]"> |
201 | |
202 | <div id="access"> |
203 | <a href="#nav">[@SKIP_TO_NAV]</a> – <a href="[#SITEINFOS.URL]/?page=map">[@PLAN_DU_SITE]</a> |
204 | </div><!-- #access --> |
205 | |
206 | <div id="header"> |
207 | <h1 id="siteName"> |
208 | <a title="[@ACCUEIL]" href="[#SITEINFOS.URL]">[#OPTIONS.METADONNEESSITE.TITRESITE]</a> |
209 | </h1> |
210 | <IF COND="[#OPTIONS.METADONNEESSITE.SOUSTITRESITE]"> |
211 | <p id="siteBaseline"> |
212 | [#OPTIONS.METADONNEESSITE.SOUSTITRESITE] |
213 | </p> |
214 | </IF> |
215 | </div><!-- #header --> |
216 | |
217 | <div id="breadcrumb"> |
218 | <!--[ Sélecteur de langue ]--> |
219 | <LOOP NAME="translations" SELECT="lang,title" TABLE="translations" ORDER="title"> |
220 | <BEFORE> |
221 | <form action="[#CURRENTURL|cleanUrl]" method="get" class="autoSubmit"> |
222 | <p> |
223 | <label for="selectLang">[@LANGUE_DU_SITE]</label> |
224 | <select id="selectLang" name="lang"> |
225 | </BEFORE> |
226 | <DO> |
227 | <option value="[#LANG]" title="[#TITLE]"<IF COND="[#LANG] EQ [#SITELANG]"> selected="selected"</IF>>[#TITLE]</option> |
228 | </DO> |
229 | <AFTER> |
230 | </select> |
231 | <input type="submit" value="OK" class="hidden" /> |
232 | </p> |
233 | </form> |
234 | </AFTER> |
235 | </LOOP> |
236 | |
237 | <!--[ Fil d'ariane ]--> |
238 | <p id="crumbs"> |
239 | <a class="home" href="index.[#EXTENSIONSCRIPTS]">[@ACCUEIL]</a> |
240 | <IF COND="[#BODY_ID] NE 'index'"> |
241 | <LOOP NAME="breadcrumb" SELECT="class,entities.id" TABLE="relations, entities, types" WHERE="id1 = entities.id AND id2 = '[#ID]' AND nature = 'P' AND entities.idtype = types.id" ORDER="degree DESC"> |
242 | <span class="separator"> > </span> |
243 | <a href="[#ID|makeurlwithid]"> |
244 | <IF COND="[#CLASS] EQ 'publications'"> |
245 | <LET VAR="select">numero,altertitre,titre</LET> |
246 | <ELSEIF COND="[#CLASS] EQ 'textes'"> |
247 | <LET VAR="select">titre,altertitre</LET> |
248 | <ELSE/> |
249 | <LET VAR="select">titre</LET> |
250 | </IF> |
251 | <LOOP NAME="getEntityTitle" SELECT="[#SELECT]" TABLE="#_TP_[#CLASS]" WHERE="identity = '[#ID]'"> |
252 | <IF COND="[#TYPE] EQ 'numero' AND [#NUMERO]"> |
253 | [#NUMERO|textebrut] |
254 | <ELSEIF COND="[#TYPE] EQ 'collection' AND [#ALTERTITRE:#SITELANG]"/> |
255 | [#ALTERTITRE:#SITELANG|removenotes|textebrut|cuttext(36, true)] |
256 | <ELSE/> |
257 | [#TITRE|removenotes|textebrut|cuttext(36, true)] |
258 | </IF> |
259 | </LOOP> |
260 | </a> |
261 | </LOOP> |
262 | <IF COND="[#TYPE]"> |
263 | <span class="separator"> > </span> |
264 | <IF COND="[#TYPE|is_array]"> |
265 | <IF COND="[#NOM]"> |
266 | <a href="[#TYPE.ID|makeurlwithid]"> |
267 | <IF COND="[#TYPE.ALTERTITLE:#SITELANG]"> |
268 | [#TYPE.ALTERTITLE:#SITELANG|textebrut] |
269 | <ELSE/> |
270 | [#TYPE.TITLE|textebrut] |
271 | </IF> |
272 | </a> |
273 | <span class="separator"> > </span> |
274 | <strong class="current"> |
275 | [#NOM|textebrut] |
276 | </strong> |
277 | <ELSEIF COND="[#PRENOM] AND [#NOMFAMILLE]" /> |
278 | <a href="[#TYPE.ID|makeurlwithid]"> |
279 | <IF COND="[#TYPE.ALTERTITLE:#SITELANG]"> |
280 | [#TYPE.ALTERTITLE:#SITELANG|textebrut] |
281 | <ELSE/> |
282 | [#TYPE.TITLE|textebrut] |
283 | </IF> |
284 | </a> |
285 | <span class="separator"> > </span> |
286 | <strong class="current"> |
287 | [#PRENOM|textebrut] [#NOMFAMILLE|textebrut] |
288 | </strong> |
289 | <ELSE/> |
290 | <strong class="current"> |
291 | <IF COND="[#TYPE.ALTERTITLE:#SITELANG]"> |
292 | [#TYPE.ALTERTITLE:#SITELANG|textebrut] |
293 | <ELSE/> |
294 | [#TYPE.TITLE|textebrut] |
295 | </IF> |
296 | </strong> |
297 | </IF> |
298 | <ELSE/> |
299 | <strong class="current"> |
300 | <IF COND="[#TYPE] EQ 'numero' AND [#NUMERO]"> |
301 | [#NUMERO|textebrut] |
302 | <ELSEIF COND="[#TYPE] EQ 'collection' AND [#ALTERTITRE:#SITELANG]"/> |
303 | [#ALTERTITRE:#SITELANG|removenotes|textebrut|cuttext(36, true)] |
304 | <ELSE/> |
305 | [#TITRE|removenotes|textebrut|cuttext(36, true)] |
306 | </IF> |
307 | </strong> |
308 | </IF> |
309 | <ELSE/> |
310 | <span class="separator"> > </span> |
311 | <strong class="current"> |
312 | [#TITRE_PAGE|textebrut|cuttext(36, true)] |
313 | </strong> |
314 | </IF> |
315 | </IF> |
316 | </p> |
317 | |
318 | </div><!-- #breadcrumb --> |
319 | |
320 | <div id="outerWrapper"> |
321 | <div id="wrapper"> |
322 | |
323 | <div id="toolbox"> |
324 | |
325 | <!--[ Accès abonnés ]--> |
326 | <IF COND="!file_exists('CACHE/.no_restricted')"> |
327 | <IF COND="[#LODELUSER.RIGHTS] LT 5"> |
328 | <div id="loginbox" class="log-in"> |
329 | <form action="[#ID|makeurlwithid]" method="post"> |
330 | <fieldset> |
331 | <legend> |
332 | <span>[@ACCES_ABONNES]</span> |
333 | </legend> |
334 | <div id="loginBlock" class="togglable"> |
335 | <IF COND="[#ERROR_LOGIN]"> |
336 | <strong id="loginError" class="error">[@COMMON.INVALID_LOGIN_PASSWORD]</strong> |
337 | </IF> |
338 | <IF COND="[#ERROR_EXPIRATION]"> |
339 | <strong id="loginError" class="error">[@COMMON.ERROR_EXPIRATION]</strong> |
340 | </IF> |
341 | <IF COND="[#ERROR_OPENSESSION]"> |
342 | <strong id="loginError" class="error">[@COMMON.ERROR_OPENSESSION]</strong> |
343 | </IF> |
344 | <IF COND="[#ERROR_TIMEOUT]"> |
345 | <strong id="loginError" class="error">[@COMMON.SESSION_TIMEOUT]</strong> |
346 | </IF> |
347 | <IF COND="[#ERROR_PRIVILEGE]"> |
348 | <strong id="loginError" class="error">[@COMMON.ERROR_RIGHTS]</strong> |
349 | </IF> |
350 | <label for="login">[@COMMON.LOGIN]</label> <input type="text" class="text" id="login" name="login" /> |
351 | <br /> |
352 | <label for="passwd">[@COMMON.PASSWD]</label> <input type="password" class="text password" id="passwd" name="passwd" /> |
353 | <br /> |
354 | <button type="submit" class="submit" title="[@SE_CONNECTER]">[@SE_CONNECTER]</button> |
355 | <button type="reset" class="cancel" title="[@ANNULER]">[@ANNULER]</button> |
356 | </div> |
357 | </fieldset> |
358 | </form> |
359 | </div><!-- #loginbox.log-in --> |
360 | <ELSEIF COND="[#LODELUSER.RIGHTS] EQ 5"/> |
361 | <div id="loginbox" class="log-out"> |
362 | <form action="logout" method="get"> |
363 | <fieldset> |
364 | <legend> |
365 | <span>[@ACCES_ABONNES]</span> |
366 | </legend> |
367 | <div> |
368 | <LOOP NAME="getRestrictedUserName" SELECT="username, firstname, lastname" TABLE="restricted_users" WHERE="id = [#LODELUSER.ID]"> |
369 | <IF COND="![#FIRSTNAME] AND ![#LASTNAME]"> |
370 | [#USERNAME] |
371 | <ELSE/> |
372 | <IF COND="[#FIRSTNAME]">[#FIRSTNAME]</IF> <IF COND="[#LASTNAME]">[#LASTNAME]</IF> |
373 | </IF> |
374 | </LOOP> |
375 | <button type="submit" class="cancel" title="[@FERMER_SESSION]">[@FERMER_SESSION]</button> |
376 | </div> |
377 | </fieldset> |
378 | </form> |
379 | </div><!-- #loginbox.log-out --> |
380 | </IF> |
381 | </IF> |
382 | |
383 | <!--[ Recherche ]--> |
384 | <form id="search" action="http://search.revues.org" method="get"> |
385 | <p> |
386 | <input type="text" id="q" name="q" value="[@RECHERCHE]" /> |
387 | <input type="hidden" name="ul" value="[#SITEINFOS.URL]" /> |
388 | <button type="submit" title="[@CHERCHER]">[@CHERCHER]</button> |
389 | </p> |
390 | </form> |
391 | |
392 | </div> |
393 | |
394 | <IF COND="[#BODY_ID] EQ 'index'"> |
395 | <LOOP NAME="hasFeeds" SELECT="id" TABLE="entities" WHERE="type = 'rubriqueactualites' OR (type = 'fluxdesyndication' AND idparent = [%ID])" LIMIT="1"> |
396 | <LET VAR="hasfeeds" GLOBAL="1">1</LET> |
397 | <div id="content" class="withSyndication"> |
398 | <ALTERNATIVE><div id="content"></ALTERNATIVE> |
399 | </LOOP> |
400 | <ELSE/> |
401 | <div id="content"> |
402 | </IF> |
403 | <div id="main"> |
404 | </DEFMACRO> |
405 | |
406 | /** |
407 | * @name MACRO_CONCLUSION |
408 | * @used article, backend, entree, entrees, image, index_desabonnement, index_erreur, index, index_merci, individu, lettre, lien, map, personne, personnes, signaler, sommaire |
409 | * @description fermeture du bloc de contenu principal |
410 | * - actualités et syndication |
411 | * - navigation |
412 | * - pied de page |
413 | * @include barre, pied |
414 | */ |
415 | <DEFMACRO NAME="CONCLUSION"> |
416 | </div><!-- #main --> |
417 | <IF COND="[#BODY_ID] EQ 'index' AND [%HASFEEDS]"> |
418 | <div id="news"> |
419 | <h1> |
420 | <span class="text">[@ACTUALITES]</span> |
421 | </h1> |
422 | <!--[ Actualités du site ]--> |
423 | <LOOP NAME="getSiteNews" SELECT="titre,altertitre,identity" TABLE="publications" WHERE="type = 'rubriqueactualites'" ORDER="rank"> |
424 | <BEFORE> |
425 | <div id="siteNews"> |
426 | </BEFORE> |
427 | <DO> |
428 | <h2> |
429 | <FUNC NAME="ML_TITRE" /> |
430 | </h2> |
431 | <LOOP NAME="news" SELECT="g_title,idparent,id" |
432 | TABLE="entities" |
433 | WHERE="idparent = '[#IDENTITY]' |
434 | AND id [#NOT_IN_TRADUCTIONS_PARENT_UNIQUE]" |
435 | ORDER="creationdate DESC" LIMIT="3"> |
436 | <BEFORE> |
437 | <ul> |
438 | </BEFORE> |
439 | <DO> |
440 | <IF COND="[#TYPE] EQ 'rubrique'"> |
441 | <LOOP NAME="news"></LOOP> |
442 | <ELSE/> |
443 | <IF COND="![%RELATIONS_TRADUCTION_PARENT_UNIQUE]"> |
444 | <li><a href="[#ID|makeurlwithid]">[#G_TITLE|removenotes]</a></li> |
445 | <ELSE/> |
446 | <!--[ Affichage des traductions dans la langue de navigation ]--> |
447 | <LOOP NAME="menu_traductions" SELECT="id, titre, altertitre" TABLE="textes, relations" |
448 | WHERE="id2 = '[#ID]' |
449 | AND id1 = textes.identity |
450 | AND langue = '[#SITELANG]' |
451 | AND nature = 'traduction'" |
452 | LIMIT="1"> |
453 | <li><a href="[#ID|makeurlwithid]">[#TITRE|removenotes]</a></li> |
454 | <ALTERNATIVE> |
455 | <li><a href="[#ID|makeurlwithid]">[#G_TITLE|removenotes]</a></li> |
456 | </ALTERNATIVE> |
457 | </LOOP> |
458 | </IF> |
459 | </IF> |
460 | </DO> |
461 | <AFTER> |
462 | <li> |
463 | <a href="[#IDPARENT|makeurlwithid]" class="external"> |
464 | [@TOUTES_LES_ACTUALITES]… |
465 | </a> |
466 | </li> |
467 | </ul> |
468 | </AFTER> |
469 | </LOOP> |
470 | </DO> |
471 | <AFTER> |
472 | </div><!-- #siteNews --> |
473 | </AFTER> |
474 | </LOOP> |
475 | <!--[ Flux de syndication ]--> |
476 | <LOOP NAME="getFeeds" SELECT="url,urlfil,titre,altertitre,nombremaxitems" TABLE="liens" WHERE="type = 'fluxdesyndication' AND idparent = '[%ID]'" ORDER="rank"> |
477 | <BEFORE> |
478 | <div id="syndication"> |
479 | </BEFORE> |
480 | <DO> |
481 | <BLOCK ID="666" REFRESH="1800"> |
482 | <LOOP NAME="rss" URL="[#URLFIL]"> |
483 | <h2> |
484 | <FUNC NAME="ML_TITRE" /> |
485 | </h2> |
486 | <ul> |
487 | <IF COND="![#NOMBREMAXITEMS]"> |
488 | <LET VAR="nombremaxitems">10</LET> |
489 | </IF> |
490 | <LOOP NAME="rssitem" LIMIT="0, [#NOMBREMAXITEMS]"> |
491 | <IF COND="[#TITLE]"> |
492 | <li> |
493 | <a href="[#LINK|htmlspecialchars(ENT_COMPAT, 'UTF-8')]"> |
494 | [#TITLE|cleanBadChars] |
495 | </a> |
496 | </li> |
497 | </IF> |
498 | </LOOP> |
499 | <IF COND="[#URL]"> |
500 | <li> |
501 | <a rel="external" class="external" href="[#URL|htmlspecialchars(ENT_COMPAT, 'UTF-8')]" title="[@TOUTES_LES_ACTUALITES]"> |
502 | [@VISITER_SITE]… |
503 | </a> |
504 | </li> |
505 | </IF> |
506 | </ul> |
507 | </LOOP> |
508 | </BLOCK> |
509 | </DO> |
510 | <AFTER> |
511 | </div><!-- #syndication --> |
512 | </AFTER> |
513 | </LOOP> |
514 | </div><!-- #news --> |
515 | </IF> |
516 | </div><!-- #content--> |
517 | |
518 | <USE TEMPLATEFILE="barre" /> |
519 | <USE TEMPLATEFILE="pied" /> |
520 | |
521 | </div><!-- #wrapper --> |
522 | </div><!-- #outerWrapper --> |
523 | </DEFMACRO> |
524 | |
525 | /** |
526 | * @name FUNC_TITRE_PUBLICATION |
527 | * @used index, macros_base, sommaire |
528 | * @use FUNC_PERIODE_PUBLI |
529 | * @description affiche le titre d'une publication |
530 | * @param string wrap_id optional valeur de l'attribut id de l'élément DIV conteneur |
531 | * @param string separator optional caractère séparant le numéro et le titre d'une publication |
532 | * @param boolean textebrut optional afficher sans balises HTML |
533 | * @param boolean cliquable optional afficher avec un lien |
534 | */ |
535 | <DEFFUNC NAME="TITRE_PUBLICATION"> |
536 | <span class="number">[#TITRE]</span> |
537 | </DEFFUNC> |
538 | |
539 | /** |
540 | * @name FUNC_SOUSTITRE_PUBLICATION |
541 | * @used index, macros_base, sommaire |
542 | * @description affiche le sous-titre d'une publication |
543 | * @param string wrap_id optional valeur de l'attribut id du premier élément DIV conteneur |
544 | * @param string wrap_class optional valeur de l'attribut class du second élément DIV conteneur |
545 | */ |
546 | <DEFFUNC NAME="SOUSTITRE_PUBLICATION" OPTIONAL="wrap_id, wrap_class"> |
547 | <IF COND="[#SOUSTITRE]"> |
548 | <IF COND="[#WRAP_ID]"><div id="[#WRAP_ID]"></IF> |
549 | <IF COND="[#WRAP_CLASS]"><div class="[#WRAP_CLASS]"></IF> |
550 | [#SOUSTITRE] |
551 | <IF COND="[#WRAP_CLASS]"></div></IF> |
552 | <IF COND="[#WRAP_ID]"></div></IF> |
553 | </IF> |
554 | </DEFFUNC> |
555 | |
556 | /** |
557 | * @name FUNC_ALTERTITRE_PUBLICATION |
558 | * @used index, macros_base, sommaire |
559 | * @description affiche les titres traduits d'une publication |
560 | * @param string wrap_id optional valeur de l'attribut id du premier élément DIV conteneur |
561 | * @param string wrap_class optional valeur de l'attribut class du second élément DIV conteneur |
562 | */ |
563 | <DEFFUNC NAME="ALTERTITRE_PUBLICATION" OPTIONAL="wrap_id, wrap_class"> |
564 | <IF COND="[#ALTERTITRE]"> |
565 | <IF COND="[#WRAP_ID]"><div id="[#WRAP_ID]"></IF> |
566 | <IF COND="[#WRAP_CLASS]" /><div class="[#WRAP_CLASS]"></IF> |
567 | [#ALTERTITRE|replace('r2r:ml', 'div')] |
568 | <IF COND="[#WRAP_CLASS]"></div></IF> |
569 | <IF COND="[#WRAP_ID]"></div></IF> |
570 | </IF> |
571 | </DEFFUNC> |
572 | |
573 | /** |
574 | * @name MACRO_TITRE_DOCUMENT |
575 | * @used macros_base, map |
576 | * @description affiche le titre d'un document |
577 | */ |
578 | <DEFMACRO NAME="TITRE_DOCUMENT"> |
579 | <IF COND="[#DOCUMENTCLIQUABLE]"> |
580 | <IF COND="[#LANGUE]"> |
581 | - <a href="[#ID|makeurlwithid]" xml:lang="[#LANGUE]" lang="[#LANGUE]" hreflang="[#LANGUE]">[#TITRE|removenotes]</a> |
582 | <ELSE/> |
583 | - <a href="[#ID|makeurlwithid]">[#TITRE|removenotes]</a> |
584 | </IF> |
585 | <ELSE/> |
586 | [#TITRE|removenotes] |
587 | </IF> |
588 | </DEFMACRO> |
589 | |
590 | /** |
591 | * @name FUNC_TITRE_ENTITE |
592 | * @used macros_base |
593 | * @use FUNC_PERIODE_PUBLI |
594 | * @description affiche le titre d'une entité |
595 | * - numero : NUMERO | PERIODE - TITRE |
596 | * - autres publications ou informations : ALTERTITRE ou TITRE |
597 | * @param boolean textebrut optional afficher seulement le texte |
598 | * @param boolean titrealter optional afficher le titre traduit si disponible |
599 | */ |
600 | <DEFFUNC NAME="TITRE_ENTITE" OPTIONAL="textebrut, titrealter"> |
601 | <LET VAR="titre_entite"> |
602 | <IF COND="[#TYPE] EQ 'numero'"> |
603 | <LOOP NAME="getIssueTitle" SELECT="titre, numero, datepublipapier, datepubli" TABLE="publications" WHERE="identity = '[#ID]'"> |
604 | <FUNC NAME="TITRE_PUBLICATION" SEPARATOR="–" /> |
605 | </LOOP> |
606 | <ELSEIF COND="[#CLASS] EQ 'publications' OR [#CLASS] EQ 'textes'"> |
607 | <LOOP NAME="getEntityAltertitle" SELECT="titre, altertitre" TABLE="#_TP_[#CLASS]" WHERE="identity = '[#ID]'"> |
608 | <IF COND="[#TITREALTER] AND [#ALTERTITRE:#SITELANG] AND ([#TYPE] EQ 'informations' OR [#CLASS] EQ 'publications')"> |
609 | [#ALTERTITRE:#SITELANG|removenotes] |
610 | <ELSE/> |
611 | [#TITRE|removenotes] |
612 | </IF> |
613 | </LOOP> |
614 | <ELSE/> |
615 | <LOOP NAME="getEntityDCTitle" SELECT="name" TABLE="tablefields" WHERE="g_name = 'dc.title' AND tablefields.class = '[#CLASS]'"> |
616 | <LOOP NAME="getEntityGTitle" SELECT="[#NAME] AS gtitle" TABLE="#_TP_[#CLASS]" WHERE="identity = '[#ID]'"> |
617 | [#GTITLE|removenotes] |
618 | </LOOP> |
619 | </LOOP> |
620 | </IF> |
621 | </LET> |
622 | <IF COND="[#TEXTEBRUT]"> |
623 | [#TITRE_ENTITE|textebrut|replace('"', '"')|reg_replace('/ +/', ' ')|trim] |
624 | <ELSE/> |
625 | [#TITRE_ENTITE|replace(' – ', '<br />')|reg_replace('/ +/', ' ')|trim] |
626 | </IF> |
627 | </DEFFUNC> |
628 | |
629 | /** |
630 | * @name FUNC_LISTER_PERSONNES |
631 | * @used article, entree, index, lien, macros_base, signaler, signaler-mail, sommaire |
632 | * @description affiche les personnes liées à l'entité en cours |
633 | * @param string type required nom du type des personnes |
634 | * @param string wrap_id optional valeur de l'attribut id du premier élément DIV conteneur |
635 | * @param string wrap_class optional valeur de l'attribut class du second élément DIV conteneur |
636 | * @param string prepend optional texte à afficher avant la liste de personnes |
637 | * @param string append optional texte à afficher après la liste de personnes |
638 | */ |
639 | <DEFFUNC NAME="LISTER_PERSONNES" REQUIRED="type" OPTIONAL="wrap_id, wrap_class, prepend, append"> |
640 | <LOOP NAME="getPersons" SELECT="g_firstname,g_familyname" TABLE="relations, persons" WHERE="id1 = '[#ID]' AND id2 = persons.id AND nature = 'G' AND type = '[#TYPE]'" ORDER="degree"> |
641 | <BEFORE> |
642 | <IF COND="[#WRAP_ID]"><div id="[#WRAP_ID]"></IF> |
643 | <IF COND="[#WRAP_CLASS]"><div class="[#WRAP_CLASS]"></IF> |
644 | [#PREPEND] <strong> |
645 | </BEFORE> |
646 | <DOFIRST>[#G_FIRSTNAME] <span class="familyName">[#G_FAMILYNAME]</span></DOFIRST> |
647 | <DO>, [#G_FIRSTNAME] <span class="familyName">[#G_FAMILYNAME]</span></DO> |
648 | <DOLAST> et [#G_FIRSTNAME] <span class="familyName">[#G_FAMILYNAME]</span></DOLAST> |
649 | <AFTER> |
650 | </strong>[#APPEND] |
651 | <IF COND="[#WRAP_CLASS]"></div></IF> |
652 | <IF COND="[#WRAP_ID]"></div></IF> |
653 | </AFTER> |
654 | </LOOP> |
655 | </DEFFUNC> |
656 | |
657 | /** |
658 | * @name MACRO_AFFICHER_COLLECTION |
659 | * @used barre |
660 | * @use FUNC_TITRE_ENTITE |
661 | * @description affiche une collection (pour la barre de navigation) |
662 | */ |
663 | <DEFMACRO NAME="AFFICHER_COLLECTION"> |
664 | <h2> |
665 | <FUNC NAME="TITRE_ENTITE" TITREALTER="oui" /> |
666 | </h2> |
667 | <LOOP NAME="menu" SELECT="id, class" TABLE="entities" |
668 | WHERE="idparent = '[#ID]' |
669 | AND id [#NOT_IN_TRADUCTIONS] |
670 | AND class IN ('publications', 'textes')" |
671 | ORDER="rank"> |
672 | |
673 | <BEFORE><ul></BEFORE> |
674 | <DO> |
675 | <li> |
676 | <IF COND="[#CLASS] EQ 'textes'"> |
677 | <IF COND="![%RELATIONS_TRADUCTION_PARENT_UNIQUE]"> |
678 | <a href="[#ID|makeurlwithid]"><FUNC NAME="TITRE_ENTITE" TITREALTER="oui" /></a> |
679 | <ELSE/> |
680 | <!--[ Affichage des traductions dans la langue de navigation ]--> |
681 | <LOOP NAME="menu_traductions" SELECT="id, titre, altertitre" TABLE="textes, relations" |
682 | WHERE="id2 = '[#ID]' |
683 | AND id1 = textes.identity |
684 | AND langue = '[#SITELANG]' |
685 | AND nature = 'traduction'" |
686 | LIMIT="1"> |
687 | |
688 | <a href="[#ID|makeurlwithid]"><FUNC NAME="ML_TITRE" /></a> |
689 | |
690 | <ALTERNATIVE> |
691 | <a href="[#ID|makeurlwithid]"><FUNC NAME="TITRE_ENTITE" TITREALTER="oui" /></a> |
692 | </ALTERNATIVE> |
693 | </LOOP> |
694 | </IF> |
695 | <ELSE/> |
696 | <a href="[#ID|makeurlwithid]"><FUNC NAME="TITRE_ENTITE" TITREALTER="oui" /></a> |
697 | </IF> |
698 | </li> |
699 | </DO> |
700 | <AFTER></ul></AFTER> |
701 | </LOOP> |
702 | </DEFMACRO> |
703 | |
704 | /** |
705 | * @name FUNC_PARU_DANS |
706 | * @used entree, macros_base, personne, signaler, signaler-mail |
707 | * @use FUNC_PERIODE_PUBLI |
708 | * @description affiche la mention "Paru dans" : |
709 | * - Paru dans TITRESITE, NUMERO | PERIODE |
710 | * - Paru dans TITRESITE, TITRE rubrique, TITRE sous-rubrique |
711 | * @param boolean citation optional fonction appelée depuis la macro CITATION ? |
712 | */ |
713 | <DEFFUNC NAME="PARU_DANS" OPTIONAL="citation"> |
714 | <em>[#OPTIONS.METADONNEESSITE.TITRESITE]</em><IF COND="[#CITATION]"> En ligne</IF> |
715 | <LOOP NAME="publishedInSimple" SELECT="id,titre,numero,datepublipapier,datepubli,periode" TABLE="relations, publications" WHERE="id2 = '[#ID]' AND type IN ('numero', 'rubrique') AND nature = 'P' AND id1 = publications.identity" ORDER="degree DESC" LIMIT="2"> |
716 | <BEFORE>, </BEFORE> |
717 | <!--[ numéro / rubrique ]--> |
718 | <IF COND="[#COUNT] EQ 1" /> |
719 | <IF COND="![#CITATION]"><a href="[#ID|makeurlwithid]"></IF> |
720 | <IF COND="[#TYPE] EQ 'numero'">[#NUMERO]<FUNC NAME="PERIODE_PUBLI" PREPEND=" | " /><ELSE/>[#TITRE]</IF> |
721 | <IF COND="![#CITATION]"></a></IF> |
722 | <!--[ sous-rubrique ]--> |
723 | <ELSE />, [#TITRE]</IF> |
724 | </LOOP> |
725 | </DEFFUNC> |
726 | |
727 | /** |
728 | * @name MACRO_SOMMAIRE_PUBLICATION |
729 | * @used index, sommaire |
730 | * @use FUNC_LISTER_PERSONNES, FUNC_AFFICHER_DOCUMENTS_ANNEXES, FUNC_AFFICHER_ALIASES, MACRO_AFFICHER_LIGNE_DOCUMENT, MACRO_AFFICHER_LIGNE_TRADUCTION, MACRO_AFFICHER_LIGNE_NOTICEDESITE, MACRO_AFFICHER_LIGNE_FICHIER, MACRO_AFFICHER_LIGNE_INDIVIDU |
731 | * @description affiche le sommaire récursif d'une publication, toutes classes confondues |
732 | */ |
733 | <DEFMACRO NAME="SOMMAIRE_PUBLICATION"> |
734 | |
735 | <LET VAR="heading">2</LET><!--[ Premier niveau de titre dans les sommaires ]--> |
736 | <LET VAR="idpubli">[#ID]</LET> |
737 | <LET VAR="type_publication">[#TYPE]</LET> |
738 | |
739 | <LOOP NAME="summary" |
740 | TABLE="entities, types" |
741 | SELECT="id, class, type" |
742 | WHERE="idparent = '[#ID]' |
743 | AND id [#NOT_IN_TRADUCTIONS_PARENT_UNIQUE] |
744 | AND type NOT IN ('fluxdesyndication','imageaccroche') AND type NOT LIKE '%annexe%' |
745 | AND entities.idtype = types.id" |
746 | ORDER="entities.rank"> |
747 | |
748 | <BEFORE> |
749 | <ul class="summary"> |
750 | </BEFORE> |
751 | <DO> |
752 | <!--[ ligne paire ou impaire ? ]--> |
753 | <LET VAR="parity"><IF COND="[#COUNT] % 2">even<ELSE/>odd</IF></LET> |
754 | |
755 | <LOOP NAME="summaryItem" TABLE="#_TP_[#CLASS]" WHERE="identity = '[#ID]'"> |
756 | |
757 | <li class="[#CLASS] [#PARITY]"> |
758 | |
759 | <SWITCH TEST="[#CLASS]"> |
760 | <!--[ Publications ]--> |
761 | <DO CASE="publications"> |
762 | <IF COND="[#TYPE] EQ 'rubrique' OR [#TYPE] EQ 'souspartie'"> |
763 | <!--[ Titre ]--> |
764 | <h[#HEADING] class="section"> |
765 | <span class="text">[#TITRE]</span> |
766 | </h[#HEADING]> |
767 | <!--[ Sous-titre ]--> |
768 | <IF COND="[#SOUSTITRE]"> |
769 | <div class="subtitle"> |
770 | [#SOUSTITRE] |
771 | </div> |
772 | </IF> |
773 | <!--[ Titres alternatifs ]--> |
774 | <IF COND="[#ALTERTITRE]"> |
775 | <div class="altertitle"> |
776 | [#ALTERTITRE|replace('r2r:ml', 'div')] |
777 | </div> |
778 | </IF> |
779 | <!--[ Directeur de la publication ]--> |
780 | <FUNC NAME="LISTER_PERSONNES" TYPE="directeurdelapublication" WRAP_CLASS="director" PREPEND="[@DIRECTEUR_PUBLICATION] " /> |
781 | <!--[ Introduction ]--> |
782 | <FUNC NAME="ML_ONGLETS" TAB_TEXTE="[#INTRODUCTION]" TAB_ID="intro" /> |
783 | <!--[ Sommaire ]--> |
784 | <IF COND="[#HEADING] LT 6"> |
785 | <LET VAR="heading">[#HEADING|lmath('+',1)]</LET> |
786 | </IF> |
787 | <LET VAR="idpubli">[#ID]</LET> |
788 | <LOOP NAME="summary"></LOOP> |
789 | </IF> |
790 | </DO> |
791 | <!--[ Textes ]--> |
792 | <DO CASE="textes"> |
793 | <!--<FUNC NAME="LISTER_PERSONNES" TYPE="auteur" WRAP_CLASS="author" />--> |
794 | <IF COND="![%RELATIONS_TRADUCTION]"> |
795 | <MACRO NAME="AFFICHER_LIGNE_DOCUMENT" /> |
796 | <IF COND="[#ALTERTITRE] LIKE /<r2r:ml lang=\"([a-z]+)\"/"> |
797 | <LOOP NAME="foreach" ARRAY="[#MATCHES.1]"> |
798 | <div class="altertitle" xml:lang="[#VALUE]" lang="[#VALUE]"> |
799 | [#ALTERTITRE:#VALUE|removenotes] |
800 | </div> |
801 | </LOOP> |
802 | </IF> |
803 | <ELSE/> |
804 | <!--[ Traductions ]--> |
805 | <LOOP NAME="textesTraduits" |
806 | SELECT="id, titre, soustitre, altertitre, LEFT(texte,1) AS texte, LEFT(alterfichier,1) AS alterfichier, |
807 | documentcliquable, datepubli, langue, type, nature" |
808 | TABLE="textes, relations" |
809 | WHERE="id2 = '[#ID]' AND nature = 'traduction' AND id1 = textes.identity" |
810 | ORDER="rank"> |
811 | |
812 | <BEFORE> |
813 | <MACRO NAME="AFFICHER_LIGNE_DOCUMENT" /> |
814 | </BEFORE> |
815 | <DO> |
816 | <MACRO NAME="AFFICHER_LIGNE_DOCUMENT" /> |
817 | </DO> |
818 | <ALTERNATIVE> |
819 | <MACRO NAME="AFFICHER_LIGNE_DOCUMENT" /> |
820 | <IF COND="[#ALTERTITRE] LIKE /<r2r:ml lang=\"([a-z]+)\"/"> |
821 | <LOOP NAME="foreach" ARRAY="[#MATCHES.1]"> |
822 | <div class="altertitle" xml:lang="[#VALUE]" lang="[#VALUE]"> |
823 | [#ALTERTITRE:#VALUE|removenotes] |
824 | </div> |
825 | </LOOP> |
826 | </IF> |
827 | </ALTERNATIVE> |
828 | </LOOP> |
829 | </IF> |
830 | </DO> |
831 | <!--[ Liens ]--> |
832 | <DO CASE="liens"> |
833 | <MACRO NAME="AFFICHER_LIGNE_NOTICEDESITE" /> |
834 | </DO> |
835 | <!--[ Fichiers ]--> |
836 | <DO CASE="fichiers"> |
837 | <MACRO NAME="AFFICHER_LIGNE_FICHIER" /> |
838 | </DO> |
839 | <!--[ Individus ]--> |
840 | <DO CASE="individus"> |
841 | <MACRO NAME="AFFICHER_LIGNE_INDIVIDU" /> |
842 | </DO> |
843 | </SWITCH> |
844 | |
845 | </li> |
846 | |
847 | </LOOP> |
848 | |
849 | </DO> |
850 | <AFTER> |
851 | <FUNC NAME="AFFICHER_DOCUMENTS_ANNEXES" /> |
852 | <FUNC NAME="AFFICHER_ALIASES" WRAP_TAG="li" /> |
853 | </ul> |
854 | </AFTER> |
855 | <ALTERNATIVE> |
856 | <FUNC NAME="AFFICHER_ALIASES" /> |
857 | </ALTERNATIVE> |
858 | </LOOP> |
859 | </DEFMACRO> |
860 | |
861 | /** |
862 | * @name MACRO_AFFICHER_LIGNE_DOCUMENT |
863 | * @used entree, index, macros_base, personne |
864 | * @use MACRO_TITRE_DOCUMENT |
865 | * @description affiche le titre, le sous-titre d'un document et éventuellement la date de publication, avec la mention "texte intégral" |
866 | */ |
867 | <DEFMACRO NAME="AFFICHER_LIGNE_DOCUMENT"> |
868 | <!--[ Titre ]--> |
869 | <div class="title<IF COND="[#NATURE]"> [#NATURE]</IF>"> |
870 | <MACRO NAME="TITRE_DOCUMENT" /> |
871 | <IF COND="[#DOCUMENTCLIQUABLE] AND [#TYPE] NE 'informations' AND [#TYPE] NE 'actualite'"> |
872 |   |
873 | <span class="fullText"> |
874 | <IF COND="[#DATEPUBLI] LE today()"> |
875 | <IF COND="[#TEXTE] OR [#ALTERFICHIER]"> |
876 | [[@TEXTE_INTEGRAL]<IF COND="[#NATURE] EQ 'traduction'"> | [@TRADUCTION]</IF>] |
877 | <ELSE/> |
878 | [[@RESUME]] |
879 | </IF> |
880 | <ELSE/> |
881 | [[@TEXTE_DIFFERE] [#DATEPUBLI|formateddate('%B %Y')]] |
882 | </IF> |
883 | </span> |
884 | </IF> |
885 | </div> |
886 | <!--[ Sous-titre ]--> |
887 | <IF COND="[#SOUSTITRE]"> |
888 | <div class="subtitle"> |
889 | [#SOUSTITRE|removenotes] |
890 | </div> |
891 | </IF> |
892 | <!--[ Date de publication si publié dans une rubrique électronique ]--> |
893 | <IF COND="[#TYPE_PUBLICATION] EQ 'rubrique' AND [#DATEPUBLI|isadate]"> |
894 | <div class="date">[#DATEPUBLI|humandate]</div> |
895 | </IF> |
896 | </DEFMACRO> |
897 | |
898 | /** |
899 | * @name MACRO_AFFICHER_LIGNE_NOTICEDESITE |
900 | * @used macros_base, personne |
901 | * @description affiche le titre et un extrait du texte d'une notice de site |
902 | */ |
903 | <DEFMACRO NAME="AFFICHER_LIGNE_NOTICEDESITE"> |
904 | <div class="title"> |
905 | <a href="[#ID|makeurlwithid]">[#TITRE]</a> <span class="fullText">([@ANNEXE_LIEN])</span> |
906 | </div> |
907 | <IF COND="[#TEXTE]"> |
908 | <div class="texte"> |
909 | [#TEXTE|removetags('p')|cuttext(500)] |
910 | <IF COND="[#TEXTE|hasbeencut]"> |
911 | <a href="[#ID|makeurlwithid]" title="[@LIRE_NOTICE_SITE]">(…)</a> |
912 | </IF> |
913 | </div> |
914 | </IF> |
915 | </DEFMACRO> |
916 | |
917 | /** |
918 | * @name MACRO_AFFICHER_LIGNE_FICHIER |
919 | * @used macros_base, personne |
920 | * @description affiche le titre et la légende d'un fichier, avec le poids et le type mime |
921 | */ |
922 | <DEFMACRO NAME="AFFICHER_LIGNE_FICHIER"> |
923 | <div class="title"> |
924 | <a href="[#ID|makeurlwithid]"> |
925 | [#TITRE] |
926 | </a> <span class="fullText">([#DOCUMENT|getFileMime] – [#DOCUMENT|nicefilesize])</span> |
927 | </div> |
928 | <IF COND="[#LEGENDE]"> |
929 | <div class="subtitle"> |
930 | [#LEGENDE] |
931 | </div> |
932 | </IF> |
933 | </DEFMACRO> |
934 | |
935 | /** |
936 | * @name MACRO_AFFICHER_LIGNE_INDIVIDU |
937 | * @used macros_base |
938 | * @description les informations d'un individu : photo, prénom, nom, accroche et site web |
939 | */ |
940 | <DEFMACRO NAME="AFFICHER_LIGNE_INDIVIDU"> |
941 | <IF COND="[#PHOTOGRAPHIE]"> |
942 | <LET VAR="photo">[#PHOTOGRAPHIE|vignette(120)]</LET> |
943 | <div class="photo"> |
944 | <img alt="[#PRENOM|textebrut] [#NOM|textebrut]" src="[#PHOTO]" [#PHOTO|sizeattributs] /> |
945 | </div> |
946 | </IF> |
947 | <div class="title"> |
948 | <IF COND="[#DESCRIPTION]"> |
949 | <a href="[#ID|makeurlwithid]"> |
950 | [#PRENOM] <span class="familyName">[#NOM]</span> |
951 | </a> |
952 | <ELSE/> |
953 | [#PRENOM] <span class="familyName">[#NOM]</span> |
954 | </IF> |
955 | </div> |
956 | <IF COND="[#ACCROCHE]"> |
957 | <div class="intro"> |
958 | [#ACCROCHE] |
959 | </div> |
960 | </IF> |
961 | <IF COND="[#SITEWEB]"> |
962 | <div class="website"> |
963 | <a href="[#SITEWEB|htmlspecialchars(ENT_COMPAT, 'UTF-8')]">[#SITEWEB]</a> |
964 | </div> |
965 | </IF> |
966 | </DEFMACRO> |
967 | |
968 | /** |
969 | * @name FUNC_AFFICHER_ALIASES |
970 | * @used macros_base |
971 | * @use FUNC_LISTER_PERSONNES, MACRO_AFFICHER_LIGNE_DOCUMENT, MACRO_AFFICHER_LIGNE_NOTICEDESITE, MACRO_AFFICHER_LIGNE_FICHIER |
972 | * @description affiche tous les alias liés à [#IDPUBLI] |
973 | * @param string wrap_tag optional nom de la balise HTML conteneur |
974 | */ |
975 | <DEFFUNC NAME="AFFICHER_ALIASES" OPTIONAL="wrap_tag"> |
976 | <LOOP NAME="aliases" TABLE="relations, entities, types" SELECT="entities.id, class" WHERE="id1 = entities.id AND id2 = [#IDPUBLI] AND nature = 'alias' AND entities.idtype = types.id" ORDER="modificationdate DESC"> |
977 | <BEFORE> |
978 | <IF COND="[#WRAP_TAG]"><[#WRAP_TAG]></IF> |
979 | <h[#HEADING] class="section"> |
980 | <span class="text">[@ANNONCE_ALIAS]</span> |
981 | </h[#HEADING]> |
982 | <ul class="summary"> |
983 | </BEFORE> |
984 | <DO> |
985 | <li class="[#CLASS]"> |
986 | <LOOP NAME="getAlias" TABLE="#_TP_[#CLASS]" WHERE="identity = [#ID]"> |
987 | <SWITCH TEST="[#CLASS]"> |
988 | <DO CASE="textes"> |
989 | <FUNC NAME="LISTER_PERSONNES" TYPE="auteur" WRAP_CLASS="author" /> |
990 | <MACRO NAME="AFFICHER_LIGNE_DOCUMENT" /> |
991 | <IF COND="[#TYPE_PUBLICATION] EQ 'rubrique' AND [#DATEPUBLI|isadate]"> |
992 | <div class="date">[#DATEPUBLI|humandate]</div> |
993 | </IF> |
994 | </DO> |
995 | <DO CASE="liens"> |
996 | <MACRO NAME="AFFICHER_LIGNE_NOTICEDESITE" /> |
997 | </DO> |
998 | <DO CASE="fichiers"> |
999 | <MACRO NAME="AFFICHER_LIGNE_FICHIER" /> |
1000 | </DO> |
1001 | </SWITCH> |
1002 | </LOOP> |
1003 | </li> |
1004 | </DO> |
1005 | <AFTER> |
1006 | </ul> |
1007 | <IF COND="[#WRAP_TAG]"></[#WRAP_TAG]></IF> |
1008 | </AFTER> |
1009 | </LOOP> |
1010 | </DEFFUNC> |
1011 | |
1012 | /** |
1013 | * @name MACRO_NOMBRE_ENTITES |
1014 | * @used macros_base |
1015 | * @description affiche le nombre d'entités liées à une autre entité (pour les indexes) |
1016 | */ |
1017 | <DEFMACRO NAME="NOMBRE_ENTITES"> |
1018 | <LOOP NAME="countEntities" SELECT="count(id) AS n" TABLE="relations, entities" |
1019 | WHERE="id2 = '[#ID]' |
1020 | AND type NOT IN ('informations', 'actualite') |
1021 | AND id1 = entities.id"> |
1022 | |
1023 | <span class="count">([#N])</span> |
1024 | </LOOP> |
1025 | </DEFMACRO> |
1026 | |
1027 | /** |
1028 | * @name FUNC_AFFICHER_DOCUMENTS_ANNEXES |
1029 | * @used article, macros_base |
1030 | * @use MACRO_BOUTON_HAUT_DE_PAGE |
1031 | * @description affiche les documents annexes associés à un document |
1032 | * @param string wrap_id optional valeur de l'attribut id du premier élément DIV conteneur |
1033 | * @param string wrap_class optional valeur de l'attribut class du second élément DIV conteneur |
1034 | */ |
1035 | <DEFFUNC NAME="AFFICHER_DOCUMENTS_ANNEXES" OPTIONAL="wrap_id, wrap_class"> |
1036 | |
1037 | <IF COND="![#IDPUBLI]"><LET VAR="idpubli">[#ID]</LET></IF> |
1038 | <IF COND="![#HEADING]"><LET VAR="heading">2</LET></IF> |
1039 | |
1040 | <!--[ Liste des ID renvoyés par le filtre media ]--> |
1041 | <IF COND="[%ID_MEDIA]"> |
1042 | <LET VAR="inline_media"> AND entities.id NOT IN ([%ID_MEDIA|join(',')])</LET> |
1043 | </IF> |
1044 | |
1045 | <LOOP NAME="annexes" SELECT="id" TABLE="entities" WHERE="idparent = '[#IDPUBLI]' [#INLINE_MEDIA] AND type LIKE '%annexe'" ORDER="rank"> |
1046 | <BEFORE> |
1047 | <IF COND="[#WRAP_ID]"> |
1048 | <IF COND="[#WRAP_CLASS]"> |
1049 | <div id="[#WRAP_ID]" class="[#WRAP_CLASS]"> |
1050 | <ELSE/> |
1051 | <div id="[#WRAP_ID]"> |
1052 | </IF> |
1053 | <ELSE/> |
1054 | <li class="annexes"> |
1055 | </IF> |
1056 | <h[#HEADING] class="section"> |
1057 | <span class="text"><IF COND="[#NBRESULTATS] GT 1">[@DOCANNEXES]<ELSE/>[@DOCANNEXE]</IF></span> |
1058 | </h[#HEADING]> |
1059 | <ul class="annexes"> |
1060 | </BEFORE> |
1061 | <DO> |
1062 | <li class="[#CLASS]"> |
1063 | <LOOP NAME="docannexe" TABLE="#_TP_[#CLASS]" WHERE="identity = '[#ID]'"> |
1064 | <div class="title"> |
1065 | <!--[ Lien ]--> |
1066 | <IF COND="[#TYPE] EQ 'lienannexe' AND [#URL]"> |
1067 | <a href="[#URL|htmlspecialchars(ENT_COMPAT, 'UTF-8')]"> |
1068 | [#TITRE] |
1069 | </a> <span class="fullText">([@ANNEXE_LIEN])</span> |
1070 | <!--[ Fichier ]--> |
1071 | <ELSEIF COND="[#DOCUMENT]" /> |
1072 | <a href="[#ID|makeurlwithfile]"> |
1073 | [#TITRE] |
1074 | </a> <span class="fullText">([#DOCUMENT|getFileMime] – [#DOCUMENT|nicefilesize])</span> |
1075 | <ELSE/> |
1076 | [#TITRE] |
1077 | </IF> |
1078 | </div> |
1079 | <IF COND="[#CLASS] EQ 'liens' AND [#TEXTE]"> |
1080 | [#TEXTE] |
1081 | <ELSEIF COND="[#CLASS] EQ 'fichiers' AND [#DESCRIPTION]" /> |
1082 | [#DESCRIPTION] |
1083 | </IF> |
1084 | </LOOP> |
1085 | </li> |
1086 | </DO> |
1087 | <AFTER> |
1088 | </ul> |
1089 | <IF COND="[#WRAP_ID]"> |
1090 | <MACRO NAME="BOUTON_HAUT_DE_PAGE" /> |
1091 | </div> |
1092 | </IF> |
1093 | </AFTER> |
1094 | </LOOP> |
1095 | </DEFFUNC> |
1096 | |
1097 | /** |
1098 | * @name FUNC_NAVIGATION_ENTITES |
1099 | * @used article, individu, lien, sommaire |
1100 | * @use FUNC_TITRE_ENTITE |
1101 | * @description affiche les liens suivant/précédent/retour au sommaire |
1102 | * @param string position required position du bloc dans la page ('top' ou 'bottom') |
1103 | */ |
1104 | <DEFFUNC NAME="NAVIGATION_ENTITES" REQUIRED="position"> |
1105 | <div class="navEntities [#POSITION]"> |
1106 | <LOOP NAME="top" SELECT="id,titre,altertitre,numero,datepubli,datepublipapier" TABLE="publications" WHERE="id = '[%IDREALPARENT]'"> |
1107 | <LET VAR="titre_entite"><FUNC NAME="TITRE_ENTITE" TITREALTER="1" /></LET> |
1108 | <a rev="contents" class="goContents" href="[#ID|makeurlwithid]" title="[#TITRE_ENTITE|textebrut|htmlspecialchars(ENT_COMPAT, 'UTF-8')]"> |
1109 | sommaire |
1110 | </a> |
1111 | </LOOP> |
1112 | <LOOP NAME="previous" ID="[#ID]" THROUGH="[#TYPE]"> |
1113 | <LET VAR="titre_entite"><FUNC NAME="TITRE_ENTITE" TITREALTER="1" /></LET> |
1114 | <span class="separator"> - </span> |
1115 | <a rev="prev" class="goPrev" href="[#ID|makeurlwithid]" title="[#TITRE_ENTITE|textebrut|htmlspecialchars(ENT_COMPAT, 'UTF-8')]"> |
1116 | <IF COND="[#TYPE] EQ 'collection' OR false SNE [#TYPE|strpos('rubrique')]"> |
1117 | [@RUBRIQUE_PRECEDENTE] |
1118 | <ELSEIF COND="false SNE [#TYPE|strpos('annuaire')]" /> |
1119 | [@ANNUAIRE_PRECEDENT] |
1120 | <ELSEIF COND="[#TYPE] EQ 'numero'" /> |
1121 | [@NUMERO_PRECEDENT] |
1122 | <ELSE/> |
1123 | [@DOCUMENT_PRECEDENT] |
1124 | </IF> |
1125 | </a> |
1126 | </LOOP> |
1127 | <LOOP NAME="next" ID="[#ID]" THROUGH="[#TYPE]"> |
1128 | <LET VAR="titre_entite"><FUNC NAME="TITRE_ENTITE" TITREALTER="1" /></LET> |
1129 | <span class="separator"> - </span> |
1130 | <a rel="next" class="goNext" href="[#ID|makeurlwithid]" title="[#TITRE_ENTITE|textebrut|htmlspecialchars(ENT_COMPAT, 'UTF-8')]"> |
1131 | <IF COND="[#TYPE] EQ 'collection' OR false SNE [#TYPE|strpos('rubrique')]"> |
1132 | [@RUBRIQUE_SUIVANTE] |
1133 | <ELSEIF COND="false SNE [#TYPE|strpos('annuaire')]" /> |
1134 | [@ANNUAIRE_SUIVANT] |
1135 | <ELSEIF COND="[#TYPE] EQ 'numero'" /> |
1136 | [@NUMERO_SUIVANT] |
1137 | <ELSE/> |
1138 | [@DOCUMENT_SUIVANT] |
1139 | </IF> |
1140 | </a> |
1141 | </LOOP> |
1142 | </div><!-- .navEntities [#POSITION] --> |
1143 | </DEFFUNC> |
1144 | |
1145 | /** |
1146 | * @name MACRO_BOUTON_HAUT_DE_PAGE |
1147 | * @used article, lien, macros_base |
1148 | * @description affiche un lien vers l'ancre #[#BODY_ID] |
1149 | */ |
1150 | <DEFMACRO NAME="BOUTON_HAUT_DE_PAGE"> |
1151 | <a class="go-top" href="#[#BODY_ID]"> |
1152 | Haut de page |
1153 | </a> |
1154 | </DEFMACRO> |
1155 | |
1156 | /** |
1157 | * @name FUNC_ACCROCHE_PUBLICATION |
1158 | * @used index, sommaire |
1159 | * @description affiche l'image d'accroche d'une entité |
1160 | * @param int size required taille maximale du plus grand côté de la vignette |
1161 | * @param string wrap_id optional valeur de l'attribut id du premier élément DIV conteneur |
1162 | * @param boolean notext optional afficher lien + crédits |
1163 | */ |
1164 | <DEFFUNC NAME="ACCROCHE_PUBLICATION" REQUIRED="size" OPTIONAL="wrap_id, notext"> |
1165 | <LOOP NAME="accroche" TABLE="fichiers" WHERE="type = 'imageaccroche' AND idparent = '[#ID]'" ORDER="rank" LIMIT="1"> |
1166 | <IF COND="[#WRAP_ID]"> |
1167 | <div id="[#WRAP_ID]"> |
1168 | </IF> |
1169 | <LET VAR="accroche"><IF COND="[#VIGNETTE]">[#VIGNETTE|vignette(200, 200)]<ELSE/>[#DOCUMENT|vignette(200, 200)]</IF></LET> |
1170 | <a href="[#ID|makeurlwithid]"><img alt="[#TITRE|textebrut]" src="[#ACCROCHE]" /></a> |
1171 | <IF COND="![#NOTEXT]"> |
1172 | <IF COND="[#CREDITS]"> |
1173 | <br />[#CREDITS] |
1174 | </IF> |
1175 | </IF> |
1176 | <IF COND="[#WRAP_ID]"> |
1177 | </div> |
1178 | </IF> |
1179 | </LOOP> |
1180 | </DEFFUNC> |
1181 | |
1182 | /** |
1183 | * @name FUNC_PERIODE_PUBLI |
1184 | * @used barre, macros_base, personne |
1185 | * @description affiche l'année de publication papier, ou de publication électronique, ou de création d'une publication |
1186 | * @param string wrap_id optional valeur de l'attribut id du premier élément DIV conteneur |
1187 | * @param string wrap_class optional valeur de l'attribut class du second élément DIV conteneur |
1188 | * @param string prepend optional texte à afficher avant la période |
1189 | * @param boolean textebrut optional appel au filtre textebrut |
1190 | */ |
1191 | <DEFFUNC NAME="PERIODE_PUBLI" OPTIONAL="wrap_id, wrap_class, prepend, textebrut"> |
1192 | <IF COND="![#PERIODE]"> |
1193 | <IF COND="[#DATEPUBLIPAPIER|isadate]"> |
1194 | <LET VAR="periode">[#DATEPUBLIPAPIER|formateddate("%Y")]</LET> |
1195 | <ELSEIF COND="[#DATEPUBLI|isadate]"/> |
1196 | <LET VAR="periode">[#DATEPUBLI|formateddate("%Y")]</LET> |
1197 | <ELSEIF COND="[#CREATIONDATE|isadate]"/> |
1198 | <LET VAR="periode">[#CREATIONDATE|formateddate("%Y")]</LET> |
1199 | </IF> |
1200 | </IF> |
1201 | <IF COND="[#PERIODE]"> |
1202 | <IF COND="[#PREPEND]"> |
1203 | <LET VAR="periode">[#PREPEND][#PERIODE]</LET> |
1204 | </IF> |
1205 | <IF COND="[#TEXTEBRUT]"> |
1206 | <LET VAR="periode">[#PERIODE|textebrut]</LET> |
1207 | </IF> |
1208 | <IF COND="[#WRAP_ID]"> |
1209 | <div id="[#WRAP_ID]">[#PERIODE]</div> |
1210 | <ELSEIF COND="[#WRAP_CLASS]"/> |
1211 | <span class="[#WRAP_CLASS]">[#PERIODE]</span> |
1212 | <ELSE/> |
1213 | [#PERIODE] |
1214 | </IF> |
1215 | </IF> |
1216 | </DEFFUNC> |
1217 | |
1218 | /** |
1219 | * @name MACRO_PUBLICATIONS_PARENTES |
1220 | * @used article, image, individu, lien |
1221 | * @use FUNC_PERIODE_PUBLI |
1222 | * @description affiche les publications parentes |
1223 | * - titre numéro / rubrique avec lien vers le sommaire |
1224 | * - titre des sous-parties / sous-rubriques |
1225 | */ |
1226 | <DEFMACRO NAME="PUBLICATIONS_PARENTES"> |
1227 | <LOOP NAME="getParents" SELECT="id, titre, numero, datepubli, datepublipapier, degree, periode" TABLE="publications, relations" WHERE="id2 = '[#ID]' AND id1 = publications.identity" ORDER="degree DESC"> |
1228 | <IF COND="[#TYPE] EQ 'collection'"> |
1229 | <IF COND="[#NBRESULTS] EQ 1"> |
1230 | <div id="docTopParent" class="[#TYPE] parent-[#DEGREE]"> |
1231 | <FUNC NAME="TITRE_PUBLICATION" SEPARATOR=":" CLIQUABLE="1" /> |
1232 | </IF> |
1233 | <ELSEIF COND="[#ID] EQ [%IDREALPARENT]"/> |
1234 | <div id="docTopParent" class="[#TYPE] parent-[#DEGREE]"> |
1235 | <FUNC NAME="TITRE_PUBLICATION" SEPARATOR=":" CLIQUABLE="1" /> |
1236 | |
1237 | <IF COND="[#NBRESULTS] GT 2"> |
1238 | </div> |
1239 | <div id="docSubParent" class="compat-08"> |
1240 | </IF> |
1241 | <ELSE/> |
1242 | <div class="[#TYPE] parent-[#DEGREE]"> |
1243 | <span class="title">[#TITRE]</span> |
1244 | </div> |
1245 | </IF> |
1246 | <AFTER> |
1247 | </div> |
1248 | </AFTER> |
1249 | </LOOP> |
1250 | </DEFMACRO> |
1251 | |
1252 | /** |
1253 | * @name FUNC_ML_TITRE |
1254 | * @used macros_base, barre, index |
1255 | * @description affiche si disponible le titre traduit dans la langue de navigation, sinon le titre |
1256 | * @param integer cut optional longueur du titre coupé |
1257 | */ |
1258 | <DEFFUNC NAME="ML_TITRE" OPTIONAL="cut"> |
1259 | <LET VAR="ml_titre"><IF COND="[#ALTERTITRE:#SITELANG]">[#ALTERTITRE:#SITELANG]<ELSE/>[#TITRE]</IF></LET> |
1260 | <IF COND="[#CUT]">[#ML_TITRE|cuttext([#CUT], true)]<ELSE/>[#ML_TITRE]</IF> |
1261 | </DEFFUNC> |
1262 | |
1263 | /** |
1264 | * @name FUNC_ML_TITLE |
1265 | * @used macros_base, barre, article |
1266 | * @description affiche si disponible le titre traduit dans la langue de navigation, sinon le titre (pour les indexes) |
1267 | * @param integer cut optional longueur du titre coupé |
1268 | */ |
1269 | <DEFFUNC NAME="ML_TITLE" OPTIONAL="cut"> |
1270 | <LET VAR="ml_title"><IF COND="[#ALTERTITLE:#SITELANG]">[#ALTERTITLE:#SITELANG]<ELSE/>[#TITLE]</IF></LET> |
1271 | <IF COND="[#CUT]">[#ML_TITLE|cuttext([#CUT], true)]<ELSE/>[#ML_TITLE]</IF> |
1272 | </DEFFUNC> |
1273 | |
1274 | /** |
1275 | * @name FUNC_ML_TEXTE |
1276 | * @used barre, index, sommaire |
1277 | * @description |
1278 | * @param |
1279 | */ |
1280 | <DEFFUNC NAME="ML_TEXTE" REQUIRED="ml_var" OPTIONAL="cut, more"> |
1281 | <IF COND="[#ML_VAR|strpos('r2r:ml')] SNE false"> |
1282 | <LET VAR="ml_var"><IF COND="[#ML_VAR:#SITELANG]">[#ML_VAR:#SITELANG]<ELSE/>[#ML_VAR:#MAINLANG]</IF></LET> |
1283 | </IF> |
1284 | <IF COND="[#CUT]"> |
1285 | [#ML_VAR|cuttext([#CUT], true)] |
1286 | <IF COND="[#MORE] AND [#ML_VAR|hasbeencut]"> |
1287 | <br /><a href="[#ID|makeurlwithid]">[@LIRE_LA_SUITE]</a> |
1288 | </IF> |
1289 | </IF> |
1290 | [#ML_VAR] |
1291 | </DEFFUNC> |
1292 | |
1293 | /** |
1294 | * @name FUNC_ML_ONGLETS |
1295 | * @used macros_base, sommaire, article |
1296 | * @param string tab_texte required texte multilingue |
1297 | * @param string tab_id préfixe pour l'attribut ID des DIV |
1298 | * @description affiche un texte multilingue par onglets |
1299 | */ |
1300 | <DEFFUNC NAME="ML_ONGLETS" REQUIRED="tab_texte, tab_id"> |
1301 | <IF COND="[#TAB_TEXTE] LIKE /<r2r:ml lang=\"([a-z]+)\"/"> |
1302 | <LET VAR="lang_exists">[#SITELANG|in_array([#MATCHES.1])]</LET> |
1303 | <IF COND="[#MATCHES.0|count] GT 1"> |
1304 | <div class="tabMenu"> |
1305 | <LOOP NAME="foreach" ARRAY="[#MATCHES.1]"> |
1306 | <a href="#[#TAB_ID]-[#ID]-[#VALUE]" hreflang="[#VALUE]"<IF COND="(![#LANG_EXISTS] AND [#KEY] EQ 0) OR ([#LANG_EXISTS] AND [#VALUE] EQ [#SITELANG])"> class="active"</IF>> |
1307 | [#VALUE|humanlang] |
1308 | </a>  |
1309 | </LOOP> |
1310 | </div> |
1311 | </IF> |
1312 | <LOOP NAME="foreach" ARRAY="[#MATCHES.1]"> |
1313 | <div id="[#TAB_ID]-[#ID]-[#VALUE]" class="tabContent<IF COND="(![#LANG_EXISTS] AND [#KEY] GT 0) OR ([#LANG_EXISTS] AND [#VALUE] NE [#SITELANG])"> hidden</IF>" lang="[#VALUE]" xml:lang="[#VALUE]"> |
1314 | [#TAB_TEXTE:#VALUE] |
1315 | </div> |
1316 | </LOOP> |
1317 | <ELSE/> |
1318 | [#TAB_TEXTE] |
1319 | </IF> |
1320 | </DEFFUNC> |