29b72ad85751c5dcc17d7c3c154a4b5f2f462466
[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 * Ajout des scripts du porte-plume dans le head des pages publiques
66 *
67 * Uniquement si l'on est autorisé à l'afficher le porte plume dans
68 * l'espace public !
69 *
70 * @pipeline insert_head
71 * @param string $flux Contenu du head
72 * @return string Contenu du head
73 */
74 function porte_plume_insert_head_public($flux) {
75 include_spip('inc/autoriser');
76 if (autoriser('afficher_public', 'porteplume')) {
77 $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
78 }
79
80 return $flux;
81 }
82
83 /**
84 * Ajout des scripts du porte-plume dans le head des pages privées
85 *
86 * @pipeline header_prive
87 * @param string $flux Contenu du head
88 * @return string Contenu du head
89 */
90 function porte_plume_insert_head_prive($flux) {
91 $js = timestamp(find_in_path('javascript/porte_plume_forcer_hauteur.js'));
92 $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang'], true)
93 . "<script type='text/javascript' src='$js'></script>\n";
94
95 return $flux;
96 }
97
98 /**
99 * Ajout des scripts du porte-plume au texte (un head) transmis
100 *
101 * @param string $flux Contenu du head
102 * @param string $lang Langue en cours d'utilisation
103 * @param bool $prive Est-ce pour l'espace privé ?
104 * @return string Contenu du head complété
105 */
106 function porte_plume_inserer_head($flux, $lang, $prive = false) {
107 $markitup = timestamp(find_in_path('javascript/jquery.markitup_pour_spip.js'));
108 $js_previsu = timestamp(find_in_path('javascript/jquery.previsu_spip.js'));
109
110 $hash = md5(porte_plume_creer_json_markitup());
111 $js_start = produire_fond_statique('javascript/porte_plume_start.js', array('lang' => $lang, 'hash' => $hash));
112
113 $flux .=
114 "<script type='text/javascript' src='$markitup'></script>\n"
115 . "<script type='text/javascript' src='$js_previsu'></script>\n"
116 . "<script type='text/javascript' src='$js_start'></script>\n";
117
118 return $flux;
119 }
120
121 /**
122 * Ajout des CSS du porte-plume au head privé
123 *
124 * @pipeline header_prive_css
125 * @param string $flux Contenu du head
126 * @return string Contenu du head complété
127 */
128 function porte_plume_insert_head_prive_css($flux) {
129 return porte_plume_insert_head_css($flux, true);
130 }
131
132 /**
133 * Ajout des CSS du porte-plume au head public
134 *
135 * Appelé aussi depuis le privé avec $prive à true.
136 *
137 * @pipeline insert_head_css
138 * @param string $flux Contenu du head
139 * @param bool $prive Est-ce pour l'espace privé ?
140 * @return string Contenu du head complété
141 */
142 function porte_plume_insert_head_css($flux = '', $prive = false) {
143 include_spip('inc/autoriser');
144 // toujours autoriser pour le prive.
145 if ($prive or autoriser('afficher_public', 'porteplume')) {
146 if ($prive) {
147 $cssprive = timestamp(find_in_path('css/barre_outils_prive.css'));
148 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$cssprive' />\n";
149 }
150 $css = timestamp(direction_css(find_in_path('css/barre_outils.css'), lang_dir()));
151
152 $hash = md5(barre_outils_css_icones());
153 $css_icones = produire_fond_statique('css/barre_outils_icones.css', array('hash' => $hash));
154
155 $flux
156 .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
157 . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n";
158 }
159
160 return $flux;
161 }
162
163 /**
164 * Valeur par défaut des configurations
165 *
166 * @pipeline configurer_liste_metas
167 * @param array $metas
168 * Tableaux des metas et valeurs par défaut
169 * @return array
170 * Tableaux des metas et valeurs par défaut
171 */
172 function porte_plume_configurer_liste_metas($metas) {
173 $metas['barre_outils_public'] = 'oui';
174
175 return $metas;
176 }
177
178 /**
179 * Ajoute le formulaire de configuration du porte-plume sur la page
180 * des configurations avancées.
181 *
182 * @pipeline affiche_milieu
183 * @param array $flux Données du pipeline
184 * @return array Données du pipeline
185 */
186 function porte_plume_affiche_milieu($flux) {
187 if ($flux['args']['exec'] == 'configurer_avancees') {
188 $flux['data'] .= recuperer_fond(
189 'prive/squelettes/inclure/configurer',
190 array('configurer' => 'configurer_porte_plume')
191 );
192 }
193
194 return $flux;
195 }