e5289b8e1829e168da8f224a5ef56f3e056b3edd
[lhc/web/www.git] / www / plugins-dist / porte_plume / porte_plume_pipelines.php
1 <?php
2 /**
3 * Déclarations d'autorisations et utilisations de pipelines
4 *
5 * @plugin Porte Plume pour SPIP
6 * @license GPL
7 * @package SPIP\PortePlume\Pipelines
8 **/
9
10 if (!defined('_ECRIRE_INC_VERSION')) {
11 return;
12 }
13
14 #define('PORTE_PLUME_PUBLIC', true);
15
16 /**
17 * Fonction du pipeline autoriser. N'a rien à faire
18 *
19 * @pipeline autoriser
20 */
21 function porte_plume_autoriser() {
22 }
23
24 /**
25 * Autoriser l'action de previsu
26 *
27 * La fermer aux non identifiés si pas de porte plume dans le public
28 *
29 * @param string $faire Action demandée
30 * @param string $type Type d'objet sur lequel appliquer l'action
31 * @param int $id Identifiant de l'objet
32 * @param array $qui Description de l'auteur demandant l'autorisation
33 * @param array $opt Options de cette autorisation
34 * @return bool true s'il a le droit, false sinon
35 */
36 function autoriser_porteplume_previsualiser_dist($faire, $type, $id, $qui, $opt) {
37 return
38 (test_espace_prive() and autoriser('ecrire'))
39 or (!test_espace_prive() and autoriser('afficher_public', 'porteplume'));
40 }
41
42 /**
43 * Autoriser le porte plume dans l'espace public ?
44 *
45 * @param string $faire Action demandée
46 * @param string $type Type d'objet sur lequel appliquer l'action
47 * @param int $id Identifiant de l'objet
48 * @param array $qui Description de l'auteur demandant l'autorisation
49 * @param array $opt Options de cette autorisation
50 * @return bool true s'il a le droit, false sinon
51 */
52 function autoriser_porteplume_afficher_public_dist($faire, $type, $id, $qui, $opt) {
53 // compatibilite d'avant le formulaire de configuration
54 if (defined('PORTE_PLUME_PUBLIC')) {
55 return PORTE_PLUME_PUBLIC;
56 }
57
58 return ($GLOBALS['meta']['barre_outils_public'] !== 'non');
59
60 // n'autoriser qu'aux identifies :
61 # return $qui['id_auteur'] ? PORTE_PLUME_PUBLIC : false;
62 }
63
64 /**
65 * Autoriser le porte plume dans l'espace prive ?
66 *
67 * @param string $faire Action demandée
68 * @param string $type Type d'objet sur lequel appliquer l'action
69 * @param int $id Identifiant de l'objet
70 * @param array $qui Description de l'auteur demandant l'autorisation
71 * @param array $opt Options de cette autorisation
72 * @return bool true s'il a le droit, false sinon
73 */
74 function autoriser_porteplume_afficher_prive_dist($faire, $type, $id, $qui, $opt) {
75 // on peut desactiver le chargement complet dans le prive
76 if (defined('_PORTE_PLUME_PRIVE')) {
77 return _PORTE_PLUME_PRIVE;
78 }
79
80 return true;
81 }
82
83 /**
84 * Ajout des scripts du porte-plume dans le head des pages publiques
85 *
86 * Uniquement si l'on est autorisé à l'afficher le porte plume dans
87 * l'espace public !
88 *
89 * @pipeline insert_head
90 * @param string $flux Contenu du head
91 * @return string Contenu du head
92 */
93 function porte_plume_insert_head_public($flux) {
94 include_spip('inc/autoriser');
95 if (autoriser('afficher_public', 'porteplume')) {
96 $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
97 }
98
99 return $flux;
100 }
101
102 /**
103 * Ajout des scripts du porte-plume dans le head des pages privées
104 *
105 * @pipeline header_prive
106 * @param string $flux Contenu du head
107 * @return string Contenu du head
108 */
109 function porte_plume_insert_head_prive($flux) {
110 include_spip('inc/autoriser');
111 if (autoriser('afficher_prive', 'porteplume')){
112 $js = timestamp(find_in_path('javascript/porte_plume_forcer_hauteur.js'));
113 $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang'], true)
114 . "<script type='text/javascript' src='$js'></script>\n";
115 }
116 return $flux;
117 }
118
119 /**
120 * Ajout des scripts du porte-plume au texte (un head) transmis
121 *
122 * @param string $flux Contenu du head
123 * @param string $lang Langue en cours d'utilisation
124 * @param bool $prive Est-ce pour l'espace privé ?
125 * @return string Contenu du head complété
126 */
127 function porte_plume_inserer_head($flux, $lang, $prive = false) {
128 $markitup = timestamp(find_in_path('javascript/jquery.markitup_pour_spip.js'));
129 $js_previsu = timestamp(find_in_path('javascript/jquery.previsu_spip.js'));
130
131 $hash = md5(porte_plume_creer_json_markitup());
132 $inserer_auto_name_texte = defined('_PORTE_PLUME_INSERER_AUTO_NAME_TEXTE') ? _PORTE_PLUME_INSERER_AUTO_NAME_TEXTE : true;
133 $js_start = produire_fond_statique('javascript/porte_plume_start.js', array('lang' => $lang, 'hash' => $hash, 'inserer_auto_name_texte' => $inserer_auto_name_texte));
134
135 $flux .=
136 "<script type='text/javascript' src='$markitup'></script>\n"
137 . "<script type='text/javascript' src='$js_previsu'></script>\n"
138 . "<script type='text/javascript' src='$js_start'></script>\n";
139
140 return $flux;
141 }
142
143 /**
144 * Ajout des CSS du porte-plume au head privé
145 *
146 * @pipeline header_prive_css
147 * @param string $flux Contenu du head
148 * @return string Contenu du head complété
149 */
150 function porte_plume_insert_head_prive_css($flux) {
151 return porte_plume_insert_head_css($flux, true);
152 }
153
154 /**
155 * Ajout des CSS du porte-plume au head public
156 *
157 * Appelé aussi depuis le privé avec $prive à true.
158 *
159 * @pipeline insert_head_css
160 * @param string $flux Contenu du head
161 * @param bool $prive Est-ce pour l'espace privé ?
162 * @return string Contenu du head complété
163 */
164 function porte_plume_insert_head_css($flux = '', $prive = false) {
165 include_spip('inc/autoriser');
166 if (autoriser($prive ? 'afficher_prive' : 'afficher_public', 'porteplume')) {
167 if ($prive) {
168 $cssprive = timestamp(find_in_path('css/barre_outils_prive.css'));
169 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$cssprive' />\n";
170 }
171 $css = timestamp(direction_css(find_in_path('css/barre_outils.css'), lang_dir()));
172
173 $hash = md5(barre_outils_css_icones());
174 $css_icones = produire_fond_statique('css/barre_outils_icones.css', array('hash' => $hash));
175
176 $flux
177 .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
178 . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n";
179 }
180
181 return $flux;
182 }
183
184 /**
185 * Valeur par défaut des configurations
186 *
187 * @pipeline configurer_liste_metas
188 * @param array $metas
189 * Tableaux des metas et valeurs par défaut
190 * @return array
191 * Tableaux des metas et valeurs par défaut
192 */
193 function porte_plume_configurer_liste_metas($metas) {
194 $metas['barre_outils_public'] = 'oui';
195
196 return $metas;
197 }
198
199 /**
200 * Ajoute le formulaire de configuration du porte-plume sur la page
201 * des configurations avancées.
202 *
203 * @pipeline affiche_milieu
204 * @param array $flux Données du pipeline
205 * @return array Données du pipeline
206 */
207 function porte_plume_affiche_milieu($flux) {
208 if ($flux['args']['exec'] == 'configurer_avancees') {
209 $flux['data'] .= recuperer_fond(
210 'prive/squelettes/inclure/configurer',
211 array('configurer' => 'configurer_porte_plume')
212 );
213 }
214
215 return $flux;
216 }