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