4d6d74e66342a5f2e263c6cd908163d0391d4dc3
[lhc/web/www.git] / www / ecrire / inc / presentation.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
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 * Fonctions pour l'affichage privé des pages exec PHP
15 *
16 * @package SPIP\Core\Presentation
17 **/
18 if (!defined('_ECRIRE_INC_VERSION')) {
19 return;
20 }
21
22 include_spip('inc/presentation_mini');
23 include_spip('inc/layer');
24 include_spip('inc/texte');
25 include_spip('inc/filtres');
26 include_spip('inc/boutons');
27 include_spip('inc/actions');
28 include_spip('inc/puce_statut');
29 include_spip('inc/filtres_ecrire');
30 include_spip('inc/filtres_boites');
31
32 // http://code.spip.net/@debut_cadre
33 function debut_cadre($style, $icone = "", $fonction = "", $titre = "", $id = "", $class = "", $padding = true) {
34 $style_mapping = array(
35 'r' => 'simple',
36 'e' => 'raccourcis',
37 'couleur' => 'basic highlight',
38 'couleur-foncee' => 'basic highlight',
39 'trait-couleur' => 'important',
40 'alerte' => 'notice',
41 'info' => 'info',
42 'sous_rub' => 'simple sous-rub'
43 );
44 $style_titre_mapping = array('couleur' => 'topper', 'trait-couleur' => 'section');
45 $c = isset($style_mapping[$style]) ? $style_mapping[$style] : 'simple';
46 $class = $c . ($class ? " $class" : "");
47 if (!$padding) {
48 $class .= ($class ? " " : "") . "no-padding";
49 }
50
51 //($id?"id='$id' ":"")
52 if (strlen($icone) > 1) {
53 if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
54 list($fond, $fonction) = $icone_renommer($icone, $fonction);
55 }
56 $size = 24;
57 if (preg_match("/-([0-9]{1,3})[.](gif|png)$/i", $fond, $match)) {
58 $size = $match[1];
59 }
60 if ($fonction) {
61 // 2 images pour composer l'icone : le fond (article) en background,
62 // la fonction (new) en image
63 $icone = http_img_pack($fonction, "", "class='cadre-icone' width='$size' height='$size'\n" .
64 http_style_background($fond, "no-repeat center center"));
65 } else {
66 $icone = http_img_pack($fond, "", "class='cadre-icone' width='$size' height='$size'");
67 }
68 $titre = $icone . $titre;
69 }
70
71 return boite_ouvrir($titre, $class, isset($style_titre_mapping[$style]) ? $style_titre_mapping[$style] : '', $id);
72 }
73
74 // http://code.spip.net/@fin_cadre
75 function fin_cadre() { return boite_fermer(); }
76
77
78 function debut_cadre_relief(
79 $icone = '',
80 $dummy = '',
81 $fonction = '',
82 $titre = '',
83 $id = "",
84 $class = ""
85 ) {
86 return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
87 }
88
89 function fin_cadre_relief() { return fin_cadre('r'); }
90
91 function debut_cadre_enfonce(
92 $icone = '',
93 $dummy = '',
94 $fonction = '',
95 $titre = '',
96 $id = "",
97 $class = ""
98 ) {
99 return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
100 }
101
102 function fin_cadre_enfonce() { return fin_cadre('e'); }
103
104 function debut_cadre_sous_rub(
105 $icone = '',
106 $dummy = '',
107 $fonction = '',
108 $titre = '',
109 $id = "",
110 $class = ""
111 ) {
112 return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
113 }
114
115 function fin_cadre_sous_rub() { return fin_cadre('sous_rub'); }
116
117 function debut_cadre_couleur(
118 $icone = '',
119 $dummy = '',
120 $fonction = '',
121 $titre = '',
122 $id = "",
123 $class = ""
124 ) {
125 return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
126 }
127
128 function fin_cadre_couleur() { return fin_cadre('couleur'); }
129
130 function debut_cadre_trait_couleur(
131 $icone = '',
132 $dummy = '',
133 $fonction = '',
134 $titre = '',
135 $id = "",
136 $class = ""
137 ) {
138 return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
139 }
140
141 function fin_cadre_trait_couleur() { return fin_cadre('trait-couleur'); }
142
143 function debut_boite_alerte() { return debut_cadre('alerte', '', '', '', '', ''); }
144
145 function fin_boite_alerte() { return fin_cadre('alerte'); }
146
147 function debut_boite_info() { return debut_cadre('info', '', '', '', '', ''); }
148
149 function fin_boite_info() { return fin_cadre('info'); }
150
151 /**
152 * Affiche le titre d’une page de l’interface privée. Utilisée par la plupart des fichiers `exec/xx.php`.
153 *
154 * @param string $titre Le titre en question
155 * @param string $ze_logo Une image de logo
156 * @return string Code PHP.
157 **/
158 function gros_titre(
159 $titre,
160 $ze_logo = ''
161 ) {
162 return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
163 }
164
165 // La boite des raccourcis
166 // Se place a droite si l'ecran est en mode panoramique.
167 // http://code.spip.net/@bloc_des_raccourcis
168 function bloc_des_raccourcis($bloc) {
169 return creer_colonne_droite()
170 . boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
171 }
172
173 //
174 // Fonctions d'affichage
175 //
176
177 // Fonctions onglets
178 // http://code.spip.net/@debut_onglet
179 // @param string $sous_classe prend la valeur second pour definir les onglet de deuxieme niveau
180 function debut_onglet($classe = "barre_onglet") { return "<div class = '$classe clearfix'><ul>\n"; }
181
182 // http://code.spip.net/@fin_onglet
183 function fin_onglet() { return "</ul></div>\n"; }
184
185 // http://code.spip.net/@onglet
186 function onglet($texte, $lien, $onglet_ref, $onglet, $icone = "") {
187 return "<li>"
188 . ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
189 . lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
190 . "</li>";
191 }
192
193 /**
194 * Crée un lien précédé d'une icone au dessus du texte
195 *
196 * @uses icone_base()
197 * @see filtre_icone_verticale_dist() Pour l'usage en tant que filtre
198 *
199 * @example
200 * ```
201 * $icone = icone_verticale(_T('sites:info_sites_referencer'),
202 * generer_url_ecrire('site_edit', "id_rubrique=$id_rubrique"),
203 * "site-24.png", "new", 'right')
204 * ```
205 *
206 * @param string $texte
207 * Texte du lien
208 * @param string $lien
209 * URL du lien
210 * @param string $fond
211 * Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
212 * @param string $fonction
213 * Fonction du lien (`edit`, `new`, `del`)
214 * @param string $align
215 * Classe CSS, tel que `left`, `right` pour définir un alignement
216 * @param string $javascript
217 * Javascript ajouté sur le lien
218 * @return string
219 * Code HTML du lien
220 **/
221 function icone_verticale($texte, $lien, $fond, $fonction = "", $align = "", $javascript = "") {
222 // cas d'ajax_action_auteur: faut defaire le boulot
223 // (il faudrait fusionner avec le cas $javascript)
224 if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
225 list($x, $lien, $atts, $texte) = $r;
226 $javascript .= $atts;
227 }
228
229 return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
230 }
231
232 /**
233 * Crée un lien précédé d'une icone horizontale
234 *
235 * @uses icone_base()
236 * @see filtre_icone_horizontale_dist() Pour l'usage en tant que filtre
237 *
238 * @param string $texte
239 * Texte du lien
240 * @param string $lien
241 * URL du lien
242 * @param string $fond
243 * Objet avec ou sans son extension et sa taille (article, article-24, article-24.png)
244 * @param string $fonction
245 * Fonction du lien (`edit`, `new`, `del`)
246 * @param string $dummy
247 * Inutilisé
248 * @param string $javascript
249 * Javascript ajouté sur le lien
250 * @return string
251 * Code HTML du lien
252 **/
253 function icone_horizontale($texte, $lien, $fond, $fonction = "", $dummy = "", $javascript = "") {
254 $retour = '';
255 // cas d'ajax_action_auteur: faut defaire le boulot
256 // (il faudrait fusionner avec le cas $javascript)
257 if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
258 list($x, $lien, $atts, $texte) = $r;
259 $javascript .= $atts;
260 }
261
262 $retour = icone_base($lien, $texte, $fond, $fonction, "horizontale", $javascript);
263
264 return $retour;
265 }