[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / inc / filtres_boites.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 /**
14 * Ce fichier regroupe la gestion des filtres et balises gérant des
15 * boîtes de contenu
16 *
17 * @package SPIP\Core\Compilateur\Filtres
18 **/
19
20 if (!defined('_ECRIRE_INC_VERSION')) {
21 return;
22 }
23
24
25 /**
26 * Compile la balise `#BOITE_OUVRIR` ouvrant une boîte de contenu
27 *
28 * Racourci pour ouvrir une boîte (info, simple, pour noisette ...)
29 *
30 * @package SPIP\Core\Compilateur\Balises
31 * @balise
32 * @see balise_BOITE_PIED_dist() Pour passer au pied de boîte
33 * @see balise_BOITE_FERMER_dist() Pour fermer une boîte
34 * @example
35 * ```
36 * #BOITE_OUVRIR{titre[,type]}
37 * [(#BOITE_OUVRIR{<:titre_cadre_interieur_rubrique:>,simple})]
38 * #BOITE_OUVRIR{'',raccourcis}
39 * ```
40 *
41 * @param Champ $p
42 * Pile au niveau de la balise
43 * @return Champ
44 * Pile complétée par le code à générer
45 */
46 function balise_BOITE_OUVRIR_dist($p) {
47 $_titre = interprete_argument_balise(1, $p);
48 $_class = interprete_argument_balise(2, $p);
49 $_head_class = interprete_argument_balise(3, $p);
50 $_titre = ($_titre ? $_titre : "''");
51 $_class = ($_class ? ", $_class" : ", 'simple'");
52 $_head_class = ($_head_class ? ", $_head_class" : '');
53
54 $f = chercher_filtre('boite_ouvrir');
55 $p->code = "$f($_titre$_class$_head_class)";
56 $p->interdire_scripts = false;
57
58 return $p;
59 }
60
61 /**
62 * Compile la balise `#BOITE_PIED` cloturant une boîte de contenu
63 *
64 * Racourci pour passer au pied de la boite, avant sa fermeture. On peut
65 * lui transmettre une classe CSS avec `#BOITE_PIED{class}`
66 *
67 * @package SPIP\Core\Compilateur\Balises
68 * @balise
69 * @see balise_BOITE_OUVRIR_dist() Pour ouvrir une boîte
70 * @see balise_BOITE_FERMER_dist() Pour fermer une boîte
71 *
72 * @param Champ $p
73 * Pile au niveau de la balise
74 * @return Champ
75 * Pile complétée par le code à générer
76 */
77 function balise_BOITE_PIED_dist($p) {
78 $_class = interprete_argument_balise(1, $p);
79 $_class = ($_class ? "$_class" : '');
80
81 $f = chercher_filtre('boite_pied');
82 $p->code = "$f($_class)";
83 $p->interdire_scripts = false;
84
85 return $p;
86 }
87
88
89 /**
90 * Compile la balise `#BOITE_FERMER` clôturant une boîte de contenu
91 *
92 * Racourci pour fermer une boîte ouverte
93 *
94 * @package SPIP\Core\Compilateur\Balises
95 * @balise
96 * @see balise_BOITE_OUVRIR_dist() Pour ouvrir une boîte
97 * @see balise_BOITE_PIED_dist() Pour passer au pied de boîte
98 *
99 * @param Champ $p
100 * Pile au niveau de la balise
101 * @return Champ
102 * Pile complétée par le code à générer
103 */
104 function balise_BOITE_FERMER_dist($p) {
105 $f = chercher_filtre('boite_fermer');
106 $p->code = "$f()";
107 $p->interdire_scripts = false;
108
109 return $p;
110 }
111
112 /**
113 * Ouvrir une boîte
114 *
115 * Peut-être surchargé par `filtre_boite_ouvrir_dist` ou `filtre_boite_ouvrir`
116 *
117 * @filtre
118 * @see balise_BOITE_OUVRIR_dist() qui utilise ce filtre
119 * @param string $titre
120 * Titre de la boîte
121 * @param string $class
122 * Classes CSS de la boîte
123 * @param string $head_class
124 * Classes CSS sur l'entête
125 * @param string $id
126 * Identifiant HTML de la boîte
127 * @return string
128 * HTML du début de la boîte
129 */
130 function boite_ouvrir($titre, $class = '', $head_class = '', $id = '') {
131 $class = "box $class";
132 $head_class = "clearfix hd $head_class";
133 // dans l'espace prive, titrer en h3 si pas de balise <hn>
134 if (test_espace_prive() and strlen($titre) and strpos($titre, '<h') === false) {
135 $titre = "<h3>$titre</h3>";
136 }
137
138 return '<div class="' . $class . ($id ? "\" id=\"$id" : '') . '">'
139 . '<b class="top"><b class="tl"></b><b class="tr"></b></b>'
140 . '<div class="inner">'
141 . ($titre ? '<div class="clearfix ' . $head_class . '">' . $titre . '<!--/hd--></div>' : '')
142 . '<div class="clearfix bd">';
143 }
144
145
146 /**
147 * Passer au pied d'une boîte
148 *
149 * Peut-être surchargé par `filtre_boite_pied_dist` ou `filtre_boite_pied`
150 *
151 * @filtre
152 * @see balise_BOITE_PIED_dist() qui utilise ce filtre
153 * @param string $class
154 * Classes CSS de la boîte
155 * @return string
156 * HTML de transition vers le pied de la boîte
157 */
158 function boite_pied($class = 'act') {
159 $class = "ft $class";
160
161 return '</div>'
162 . '<div class="cleafix ' . $class . '">';
163 }
164
165
166 /**
167 * Fermer une boîte
168 *
169 * Peut-être surchargé par `filtre_boite_fermer_dist` ou `filtre_boite_fermer`
170 *
171 * @filtre
172 * @see balise_BOITE_FERMER_dist() qui utilise ce filtre
173 * @return string
174 * HTML de fin de la boîte
175 */
176 function boite_fermer() {
177 return '</div></div>'
178 . '<b class="bottom"><b class="bl"></b><b class="br"></b></b>'
179 . '</div>';
180 }