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]
12 <DEFMACRO NAME=
"OUVRIR_HTML">
14 <!--[ Langue principale du site ]-->
15 <LET VAR=
"mainlang">[#OPTIONS.METADONNEESSITE.LANGUEPRINCIPALE]
</LET>
17 <!--[ Langue de la publication/du document ]-->
18 <LET VAR=
"pagelang"><IF COND=
"[#LANGUE]">[#LANGUE]
<ELSE/>[#MAINLANG]
</IF></LET>
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>
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>
33 <!--[ Titre de la page courante ]-->
34 <LET VAR=
"titre_page"><MACRO NAME=
"TITRE_PAGE" /></LET>
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>
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>
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>
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>
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>
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>
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]">
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>
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
92 * - défaut : titre + sous titre du site
94 <DEFMACRO NAME=
"TITRE_PAGE">
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>
100 <ELSEIF COND=
"[#CLASS] EQ 'textes'"/>
101 <IF COND=
"[#TYPE] EQ 'informations' AND [#ALTERTITRE:#SITELANG]">
102 [#ALTERTITRE:#SITELANG|removenotes]
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 ]-->
117 <SWITCH TEST=
"[#BODY_ID]">
120 [@SIGNALER_TITRE] - [#OPTIONS.METADONNEESSITE.TITRESITE]
122 <!--[ plan du site ]-->
124 [@PLAN_DU_SITE] - [#OPTIONS.METADONNEESSITE.TITRESITE]
126 <!--[ flux de syndication ]-->
128 [@FLUX_SYNDICATION] - [#OPTIONS.METADONNEESSITE.TITRESITE]
131 <DO CASES=
"lettre,merci,erreur,desabonnement">
132 <FUNC NAME=
"ML_TEXTE" ML_VAR=
"[#OPTIONS.LETTRE.NOMDELALETTRE]" />
134 <!--[ titre par défaut ]-->
136 [#OPTIONS.METADONNEESSITE.TITRESITE]
<IF COND=
"[#OPTIONS.METADONNEESSITE.SOUSTITRESITE]"> - [#OPTIONS.METADONNEESSITE.SOUSTITRESITE]
</IF>
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
146 * @description fermeture balises HTML avec inclusion barre de menu
148 <DEFMACRO NAME=
"FERMER_HTML">
149 <USE TEMPLATEFILE=
"cleo" />
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
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" />
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
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]-->
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
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>
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
193 * - sélecteur de langue
196 * - formulaire recherche
197 * - ouverture du bloc de contenu principal
199 <DEFMACRO NAME=
"PRELUDE">
203 <body id=
"[#BODY_ID]" class=
"[#BODY_CLASS]">
206 <a href=
"#nav">[@SKIP_TO_NAV]
</a> – <a href=
"[#SITEINFOS.URL]/?page=map">[@PLAN_DU_SITE]
</a>
207 </div><!-- #access -->
211 <a title=
"[@ACCUEIL]" href=
"[#SITEINFOS.URL]">[#OPTIONS.METADONNEESSITE.TITRESITE]
</a>
213 <IF COND=
"[#OPTIONS.METADONNEESSITE.SOUSTITRESITE]">
214 <p id=
"siteBaseline">
215 [#OPTIONS.METADONNEESSITE.SOUSTITRESITE]
218 </div><!-- #header -->
220 <div id=
"breadcrumb">
221 <!--[ Sélecteur de langue ]-->
222 <LOOP NAME=
"translations" SELECT=
"lang,title" TABLE=
"translations" ORDER=
"title">
224 <form action=
"[#CURRENTURL|cleanUrl]" method=
"get" class=
"autoSubmit">
226 <label for=
"selectLang">[@LANGUE_DU_SITE]
</label>
227 <select id=
"selectLang" name=
"lang">
230 <option value=
"[#LANG]" title=
"[#TITLE]"<IF COND=
"[#LANG] EQ [#SITELANG]"> selected=
"selected"</IF>>[#TITLE]
</option>
234 <input type=
"submit" value=
"OK" class=
"hidden" />
240 <!--[ Fil d'ariane ]-->
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"> > </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>
252 <LET VAR=
"select">titre
</LET>
254 <LOOP NAME=
"getEntityTitle" SELECT=
"[#SELECT]" TABLE=
"#_TP_[#CLASS]" WHERE=
"identity = '[#ID]'">
255 <IF COND=
"[#TYPE] EQ 'numero' AND [#NUMERO]">
257 <ELSEIF COND=
"[#TYPE] EQ 'collection' AND [#ALTERTITRE:#SITELANG]"/>
258 [#ALTERTITRE:#SITELANG|removenotes|textebrut|cuttext(
36, true)]
260 [#TITRE|removenotes|textebrut|cuttext(
36, true)]
266 <span class=
"separator"> > </span>
267 <IF COND=
"[#TYPE|is_array]">
269 <a href=
"[#TYPE.ID|makeurlwithid]">
270 <IF COND=
"[#TYPE.ALTERTITLE:#SITELANG]">
271 [#TYPE.ALTERTITLE:#SITELANG|textebrut]
273 [#TYPE.TITLE|textebrut]
276 <span class=
"separator"> > </span>
277 <strong class=
"current">
280 <ELSEIF COND=
"[#PRENOM] AND [#NOMFAMILLE]" />
281 <a href=
"[#TYPE.ID|makeurlwithid]">
282 <IF COND=
"[#TYPE.ALTERTITLE:#SITELANG]">
283 [#TYPE.ALTERTITLE:#SITELANG|textebrut]
285 [#TYPE.TITLE|textebrut]
288 <span class=
"separator"> > </span>
289 <strong class=
"current">
290 [#PRENOM|textebrut] [#NOMFAMILLE|textebrut]
293 <strong class=
"current">
294 <IF COND=
"[#TYPE.ALTERTITLE:#SITELANG]">
295 [#TYPE.ALTERTITLE:#SITELANG|textebrut]
297 [#TYPE.TITLE|textebrut]
302 <strong class=
"current">
303 <IF COND=
"[#TYPE] EQ 'numero' AND [#NUMERO]">
305 <ELSEIF COND=
"[#TYPE] EQ 'collection' AND [#ALTERTITRE:#SITELANG]"/>
306 [#ALTERTITRE:#SITELANG|removenotes|textebrut|cuttext(
36, true)]
308 [#TITRE|removenotes|textebrut|cuttext(
36, true)]
313 <span class=
"separator"> > </span>
314 <strong class=
"current">
315 [#TITRE_PAGE|textebrut|cuttext(
36, true)]
321 </div><!-- #breadcrumb -->
323 <div id=
"outerWrapper">
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">
335 <span>[@ACCES_ABONNES]
</span>
337 <div id=
"loginBlock" class=
"togglable">
338 <IF COND=
"[#ERROR_LOGIN]">
339 <strong id=
"loginError" class=
"error">[@COMMON.INVALID_LOGIN_PASSWORD]
</strong>
341 <IF COND=
"[#ERROR_EXPIRATION]">
342 <strong id=
"loginError" class=
"error">[@COMMON.ERROR_EXPIRATION]
</strong>
344 <IF COND=
"[#ERROR_OPENSESSION]">
345 <strong id=
"loginError" class=
"error">[@COMMON.ERROR_OPENSESSION]
</strong>
347 <IF COND=
"[#ERROR_TIMEOUT]">
348 <strong id=
"loginError" class=
"error">[@COMMON.SESSION_TIMEOUT]
</strong>
350 <IF COND=
"[#ERROR_PRIVILEGE]">
351 <strong id=
"loginError" class=
"error">[@COMMON.ERROR_RIGHTS]
</strong>
353 <label for=
"login">[@COMMON.LOGIN]
</label> <input type=
"text" class=
"text" id=
"login" name=
"login" />
355 <label for=
"passwd">[@COMMON.PASSWD]
</label> <input type=
"password" class=
"text password" id=
"passwd" name=
"passwd" />
357 <button type=
"submit" class=
"submit" title=
"[@SE_CONNECTER]">[@SE_CONNECTER]
</button>
358 <button type=
"reset" class=
"cancel" title=
"[@ANNULER]">[@ANNULER]
</button>
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">
368 <span>[@ACCES_ABONNES]
</span>
371 <LOOP NAME=
"getRestrictedUserName" SELECT=
"username, firstname, lastname" TABLE=
"restricted_users" WHERE=
"id = [#LODELUSER.ID]">
372 <IF COND=
"![#FIRSTNAME] AND ![#LASTNAME]">
375 <IF COND=
"[#FIRSTNAME]">[#FIRSTNAME]
</IF> <IF COND=
"[#LASTNAME]">[#LASTNAME]
</IF>
378 <button type=
"submit" class=
"cancel" title=
"[@FERMER_SESSION]">[@FERMER_SESSION]
</button>
382 </div><!-- #loginbox.log-out -->
387 <form id=
"search" action=
"http://search.revues.org" method=
"get">
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>
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>
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
416 * @include barre, pied
418 <DEFMACRO NAME=
"CONCLUSION">
420 <IF COND=
"[#BODY_ID] EQ 'index' AND [%HASFEEDS]">
423 <span class=
"text">[@ACTUALITES]
</span>
425 <!--[ Actualités du site ]-->
426 <LOOP NAME=
"getSiteNews" SELECT=
"titre,altertitre,identity" TABLE=
"publications" WHERE=
"type = 'rubriqueactualites'" ORDER=
"rank">
432 <FUNC NAME=
"ML_TITRE" />
434 <LOOP NAME=
"news" SELECT=
"g_title,idparent,id"
436 WHERE=
"idparent = '[#IDENTITY]'
437 AND id [#NOT_IN_TRADUCTIONS_PARENT_UNIQUE]"
438 ORDER=
"creationdate DESC" LIMIT=
"3">
443 <IF COND=
"[#TYPE] EQ 'rubrique'">
444 <LOOP NAME=
"news"></LOOP>
446 <IF COND=
"![%RELATIONS_TRADUCTION_PARENT_UNIQUE]">
447 <li><a href=
"[#ID|makeurlwithid]">[#G_TITLE|removenotes]
</a></li>
449 <!--[ Affichage des traductions dans la langue de navigation ]-->
450 <LOOP NAME=
"menu_traductions" SELECT=
"id, titre, altertitre" TABLE=
"textes, relations"
452 AND id1 = textes.identity
453 AND langue = '[#SITELANG]'
454 AND nature = 'traduction'"
456 <li><a href=
"[#ID|makeurlwithid]">[#TITRE|removenotes]
</a></li>
458 <li><a href=
"[#ID|makeurlwithid]">[#G_TITLE|removenotes]
</a></li>
466 <a href=
"[#IDPARENT|makeurlwithid]" class=
"external">
467 [@TOUTES_LES_ACTUALITES]
…
475 </div><!-- #siteNews -->
478 <!--[ Flux de syndication ]-->
479 <LOOP NAME=
"getFeeds" SELECT=
"url,urlfil,titre,altertitre,nombremaxitems" TABLE=
"liens" WHERE=
"type = 'fluxdesyndication' AND idparent = '[%ID]'" ORDER=
"rank">
481 <div id=
"syndication">
484 <BLOCK ID=
"666" REFRESH=
"1800">
485 <LOOP NAME=
"rss" URL=
"[#URLFIL]">
487 <FUNC NAME=
"ML_TITRE" />
490 <IF COND=
"![#NOMBREMAXITEMS]">
491 <LET VAR=
"nombremaxitems">10</LET>
493 <LOOP NAME=
"rssitem" LIMIT=
"0, [#NOMBREMAXITEMS]">
496 <a href=
"[#LINK|htmlspecialchars(ENT_COMPAT, 'UTF-8')]">
497 [#TITLE|cleanBadChars]
504 <a rel=
"external" class=
"external" href=
"[#URL|htmlspecialchars(ENT_COMPAT, 'UTF-8')]" title=
"[@TOUTES_LES_ACTUALITES]">
505 [@VISITER_SITE]
…
514 </div><!-- #syndication -->
519 </div><!-- #content-->
521 <USE TEMPLATEFILE=
"barre" />
522 <USE TEMPLATEFILE=
"pied" />
524 </div><!-- #wrapper -->
525 </div><!-- #outerWrapper -->
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
538 <DEFFUNC NAME=
"TITRE_PUBLICATION">
539 <span class=
"number">[#TITRE]
</span>
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
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>
554 <IF COND=
"[#WRAP_CLASS]"></div></IF>
555 <IF COND=
"[#WRAP_ID]"></div></IF>
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
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>
577 * @name MACRO_TITRE_DOCUMENT
578 * @used macros_base, map
579 * @description affiche le titre d'un document
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>
586 -
<a href=
"[#ID|makeurlwithid]">[#TITRE|removenotes]
</a>
594 * @name FUNC_TITRE_ENTITE
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
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=
"–" />
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]
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]
625 <IF COND=
"[#TEXTEBRUT]">
626 [#TITRE_ENTITE|textebrut|replace('
"', '"')|reg_replace('/ +/', ' ')|trim]
628 [#TITRE_ENTITE|replace(' – ', '<br />')|reg_replace('/ +/', ' ')|trim]
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
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
">
645 <IF COND="[#WRAP_ID]
"><div id="[#WRAP_ID]
"></IF>
646 <IF COND="[#WRAP_CLASS]
"><div class="[#WRAP_CLASS]
"></IF>
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>
654 <IF COND="[#WRAP_CLASS]
"></div></IF>
655 <IF COND="[#WRAP_ID]
"></div></IF>
661 * @name MACRO_AFFICHER_COLLECTION
663 * @use FUNC_TITRE_ENTITE
664 * @description affiche une collection (pour la barre de navigation)
666 <DEFMACRO NAME="AFFICHER_COLLECTION
">
668 <FUNC NAME="TITRE_ENTITE
" TITREALTER="oui
" />
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')
"
676 <BEFORE><ul></BEFORE>
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>
683 <!--[ Affichage des traductions dans la langue de navigation ]-->
684 <LOOP NAME="menu_traductions
" SELECT="id, titre, altertitre
" TABLE="textes, relations
"
686 AND id1 = textes.identity
687 AND langue = '[#SITELANG]'
688 AND nature = 'traduction'
"
691 <a href="[#ID|makeurlwithid]
"><FUNC NAME="ML_TITRE
" /></a>
694 <a href="[#ID|makeurlwithid]
"><FUNC NAME="TITRE_ENTITE
" TITREALTER="oui
" /></a>
699 <a href="[#ID|makeurlwithid]
"><FUNC NAME="TITRE_ENTITE
" TITREALTER="oui
" /></a>
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 ?
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">
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=" |
" /><ELSE/>[#TITRE]</IF>
724 <IF COND="![#CITATION]
"></a></IF>
725 <!--[ sous-rubrique ]-->
726 <ELSE />, [#TITRE]</IF>
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
736 <DEFMACRO NAME="SOMMAIRE_PUBLICATION
">
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>
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
">
755 <!--[ ligne paire ou impaire ? ]-->
756 <LET VAR="parity
"><IF COND="[#COUNT] %
2">even<ELSE/>odd</IF></LET>
758 <LOOP NAME="summaryItem
" TABLE="#_TP_[#CLASS]
" WHERE="identity = '[#ID]'
">
760 <li class="[#CLASS] [#PARITY]
">
762 <SWITCH TEST="[#CLASS]
">
763 <!--[ Publications ]-->
764 <DO CASE="publications
">
765 <IF COND="[#TYPE] EQ 'rubrique' OR [#TYPE] EQ 'souspartie'
">
767 <h[#HEADING] class="section
">
768 <span class="text
">[#TITRE]</span>
770 <!--[ Sous-titre ]-->
771 <IF COND="[#SOUSTITRE]
">
772 <div class="subtitle
">
776 <!--[ Titres alternatifs ]-->
777 <IF COND="[#ALTERTITRE]
">
778 <div class="altertitle
">
779 [#ALTERTITRE|replace('r2r:ml', 'div')]
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
" />
787 <IF COND="[#HEADING] LT
6">
788 <LET VAR="heading
">[#HEADING|lmath('+',1)]</LET>
790 <LET VAR="idpubli
">[#ID]</LET>
791 <LOOP NAME="summary
"></LOOP>
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]
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
"
816 <MACRO NAME="AFFICHER_LIGNE_DOCUMENT
" />
819 <MACRO NAME="AFFICHER_LIGNE_DOCUMENT
" />
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]
836 <MACRO NAME="AFFICHER_LIGNE_NOTICEDESITE
" />
840 <MACRO NAME="AFFICHER_LIGNE_FICHIER
" />
843 <DO CASE="individus
">
844 <MACRO NAME="AFFICHER_LIGNE_INDIVIDU
" />
854 <FUNC NAME="AFFICHER_DOCUMENTS_ANNEXES
" />
855 <FUNC NAME="AFFICHER_ALIASES
" WRAP_TAG="li
" />
859 <FUNC NAME="AFFICHER_ALIASES
" />
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
"
870 <DEFMACRO NAME="AFFICHER_LIGNE_DOCUMENT
">
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'
">
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>]
884 [[@TEXTE_DIFFERE] [#DATEPUBLI|formateddate('%B %Y')]]
889 <!--[ Sous-titre ]-->
890 <IF COND="[#SOUSTITRE]
">
891 <div class="subtitle
">
892 [#SOUSTITRE|removenotes]
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>
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
906 <DEFMACRO NAME="AFFICHER_LIGNE_NOTICEDESITE
">
908 <a href="[#ID|makeurlwithid]
">[#TITRE]</a> <span class="fullText
">([@ANNEXE_LIEN])</span>
912 [#TEXTE|removetags('p')|cuttext(500)]
913 <IF COND="[#TEXTE|hasbeencut]
">
914 <a href="[#ID|makeurlwithid]
" title="[@LIRE_NOTICE_SITE]
">(…)</a>
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
925 <DEFMACRO NAME="AFFICHER_LIGNE_FICHIER
">
927 <a href="[#ID|makeurlwithid]
">
929 </a> <span class="fullText
">([#DOCUMENT|getFileMime] – [#DOCUMENT|nicefilesize])</span>
931 <IF COND="[#LEGENDE]
">
932 <div class="subtitle
">
939 * @name MACRO_AFFICHER_LIGNE_INDIVIDU
941 * @description les informations d'un individu : photo, prénom, nom, accroche et site web
943 <DEFMACRO NAME="AFFICHER_LIGNE_INDIVIDU
">
944 <IF COND="[#PHOTOGRAPHIE]
">
945 <LET VAR="photo
">[#PHOTOGRAPHIE|vignette(120)]</LET>
947 <img alt="[#PRENOM|textebrut] [#NOM|textebrut]
" src="[#PHOTO]
" [#PHOTO|sizeattributs] />
951 <IF COND="[#DESCRIPTION]
">
952 <a href="[#ID|makeurlwithid]
">
953 [#PRENOM] <span class="familyName
">[#NOM]</span>
956 [#PRENOM] <span class="familyName
">[#NOM]</span>
959 <IF COND="[#ACCROCHE]
">
964 <IF COND="[#SITEWEB]
">
965 <div class="website
">
966 <a href="[#SITEWEB|htmlspecialchars(ENT_COMPAT, 'UTF-
8')]
">[#SITEWEB]</a>
972 * @name FUNC_AFFICHER_ALIASES
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
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
">
981 <IF COND="[#WRAP_TAG]
"><[#WRAP_TAG]></IF>
982 <h[#HEADING] class="section
">
983 <span class="text
">[@ANNONCE_ALIAS]</span>
988 <li class="[#CLASS]
">
989 <LOOP NAME="getAlias
" TABLE="#_TP_[#CLASS]
" WHERE="identity = [#ID]
">
990 <SWITCH TEST="[#CLASS]
">
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>
999 <MACRO NAME="AFFICHER_LIGNE_NOTICEDESITE
" />
1001 <DO CASE="fichiers
">
1002 <MACRO NAME="AFFICHER_LIGNE_FICHIER
" />
1010 <IF COND="[#WRAP_TAG]
"></[#WRAP_TAG]></IF>
1016 * @name MACRO_NOMBRE_ENTITES
1018 * @description affiche le nombre d'entités liées à une autre entité (pour les indexes)
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
">
1026 <span class="count
">([#N])</span>
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
1038 <DEFFUNC NAME="AFFICHER_DOCUMENTS_ANNEXES
" OPTIONAL="wrap_id, wrap_class
">
1040 <IF COND="![#IDPUBLI]
"><LET VAR="idpubli
">[#ID]</LET></IF>
1041 <IF COND="![#HEADING]
"><LET VAR="heading
">2</LET></IF>
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>
1048 <LOOP NAME="annexes
" SELECT="id
" TABLE="entities
" WHERE="idparent = '[#IDPUBLI]' [#INLINE_MEDIA] AND type LIKE '%annexe'
" ORDER="rank
">
1050 <IF COND="[#WRAP_ID]
">
1051 <IF COND="[#WRAP_CLASS]
">
1052 <div id="[#WRAP_ID]
" class="[#WRAP_CLASS]
">
1054 <div id="[#WRAP_ID]
">
1057 <li class="annexes
">
1059 <h[#HEADING] class="section
">
1060 <span class="text
"><IF COND="[#NBRESULTATS] GT
1">[@DOCANNEXES]<ELSE/>[@DOCANNEXE]</IF></span>
1062 <ul class="annexes
">
1065 <li class="[#CLASS]
">
1066 <LOOP NAME="docannexe
" TABLE="#_TP_[#CLASS]
" WHERE="identity = '[#ID]'
">
1069 <IF COND="[#TYPE] EQ 'lienannexe' AND [#URL]
">
1070 <a href="[#URL|htmlspecialchars(ENT_COMPAT, 'UTF-
8')]
">
1072 </a> <span class="fullText
">([@ANNEXE_LIEN])</span>
1074 <ELSEIF COND="[#DOCUMENT]
" />
1075 <a href="[#ID|makeurlwithfile]
">
1077 </a> <span class="fullText
">([#DOCUMENT|getFileMime] – [#DOCUMENT|nicefilesize])</span>
1082 <IF COND="[#CLASS] EQ 'liens' AND [#TEXTE]
">
1084 <ELSEIF COND="[#CLASS] EQ 'fichiers' AND [#DESCRIPTION]
" />
1092 <IF COND="[#WRAP_ID]
">
1093 <MACRO NAME="BOUTON_HAUT_DE_PAGE
" />
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')
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')]
">
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'
" />
1126 [@DOCUMENT_PRECEDENT]
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')]
" />
1138 <ELSEIF COND="[#TYPE] EQ 'numero'
" />
1145 </div><!-- .navEntities [#POSITION] -->
1149 * @name MACRO_BOUTON_HAUT_DE_PAGE
1150 * @used article, lien, macros_base
1151 * @description affiche un lien vers l'ancre #[#BODY_ID]
1153 <DEFMACRO NAME="BOUTON_HAUT_DE_PAGE
">
1154 <a class="go-top
" href="#[#BODY_ID]
">
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
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]
">
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]
">
1179 <IF COND="[#WRAP_ID]
">
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
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>
1204 <IF COND="[#PERIODE]
">
1205 <IF COND="[#PREPEND]
">
1206 <LET VAR="periode
">[#PREPEND][#PERIODE]</LET>
1208 <IF COND="[#TEXTEBRUT]
">
1209 <LET VAR="periode
">[#PERIODE|textebrut]</LET>
1211 <IF COND="[#WRAP_ID]
">
1212 <div id="[#WRAP_ID]
">[#PERIODE]</div>
1213 <ELSEIF COND="[#WRAP_CLASS]
"/>
1214 <span class="[#WRAP_CLASS]
">[#PERIODE]</span>
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
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" />
1236 <ELSEIF COND="[#ID] EQ [%IDREALPARENT]
"/>
1237 <div id="docTopParent
" class="[#TYPE] parent-[#DEGREE]
">
1238 <FUNC NAME="TITRE_PUBLICATION
" SEPARATOR=":
" CLIQUABLE="1" />
1240 <IF COND="[#NBRESULTS] GT
2">
1242 <div id="docSubParent
" class="compat-
08">
1245 <div class="[#TYPE] parent-[#DEGREE]
">
1246 <span class="title
">[#TITRE]</span>
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é
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>
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é
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>
1278 * @name FUNC_ML_TEXTE
1279 * @used barre, index, sommaire
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>
1288 [#ML_VAR|cuttext([#CUT], true)]
1289 <IF COND="[#MORE] AND [#ML_VAR|hasbeencut]
">
1290 <br /><a href="[#ID|makeurlwithid]
">[@LIRE_LA_SUITE]</a>
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
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>>
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]
">