print3
[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/styles_site_print.css" media="print" />
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>&#160;&#8211; <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"> &#62; </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"> &#62; </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"> &#62; </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"> &#62; </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"> &#62; </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]&#8230;
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]&#8230;
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="&#8211;" />
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('"', '&#34;')|reg_replace('/ +/', ' ')|trim]
624 <ELSE/>
625 [#TITRE_ENTITE|replace(' &#8211; ', '<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="&nbsp;|&nbsp;" /><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 &#32;
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]">(&#8230;)</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]&#160;&#8211; [#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]&#160;&#8211; [#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>&#32;
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>