3 * Déclarations d'autorisations et utilisations de pipelines
5 * @plugin Porte Plume pour SPIP
7 * @package SPIP\PortePlume\Pipelines
10 if (!defined('_ECRIRE_INC_VERSION')) {
14 #define('PORTE_PLUME_PUBLIC', true);
17 * Fonction du pipeline autoriser. N'a rien à faire
21 function porte_plume_autoriser() {
25 * Autoriser l'action de previsu
27 * La fermer aux non identifiés si pas de porte plume dans le public
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
36 function autoriser_porteplume_previsualiser_dist($faire, $type, $id, $qui, $opt) {
38 (test_espace_prive() and autoriser('ecrire'))
39 or (!test_espace_prive() and autoriser('afficher_public', 'porteplume'));
43 * Autoriser le porte plume dans l'espace public ?
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
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
;
58 return ($GLOBALS['meta']['barre_outils_public'] !== 'non');
60 // n'autoriser qu'aux identifies :
61 # return $qui['id_auteur'] ? PORTE_PLUME_PUBLIC : false;
65 * Autoriser le porte plume dans l'espace prive ?
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
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
;
84 * Ajout des scripts du porte-plume dans le head des pages publiques
86 * Uniquement si l'on est autorisé à l'afficher le porte plume dans
89 * @pipeline insert_head
90 * @param string $flux Contenu du head
91 * @return string Contenu du head
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']);
103 * Ajout des scripts du porte-plume dans le head des pages privées
105 * @pipeline header_prive
106 * @param string $flux Contenu du head
107 * @return string Contenu du head
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";
120 * Ajout des scripts du porte-plume au texte (un head) transmis
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é
127 function porte_plume_inserer_head($flux, $lang, $prive = false) {
128 include_spip('porte_plume_fonctions');
130 $markitup = timestamp(find_in_path('javascript/jquery.markitup_pour_spip.js'));
131 $js_previsu = timestamp(find_in_path('javascript/jquery.previsu_spip.js'));
133 $hash = md5(porte_plume_creer_json_markitup());
134 $inserer_auto_name_texte = defined('_PORTE_PLUME_INSERER_AUTO_NAME_TEXTE') ? _PORTE_PLUME_INSERER_AUTO_NAME_TEXTE
: true;
135 $js_start = produire_fond_statique('javascript/porte_plume_start.js', array('lang' => $lang, 'hash' => $hash, 'inserer_auto_name_texte' => $inserer_auto_name_texte));
138 "<script type='text/javascript' src='$markitup'></script>\n"
139 . "<script type='text/javascript' src='$js_previsu'></script>\n"
140 . "<script type='text/javascript' src='$js_start'></script>\n";
146 * Ajout des CSS du porte-plume au head privé
148 * @pipeline header_prive_css
149 * @param string $flux Contenu du head
150 * @return string Contenu du head complété
152 function porte_plume_insert_head_prive_css($flux) {
153 return porte_plume_insert_head_css($flux, true);
157 * Ajout des CSS du porte-plume au head public
159 * Appelé aussi depuis le privé avec $prive à true.
161 * @pipeline insert_head_css
162 * @param string $flux Contenu du head
163 * @param bool $prive Est-ce pour l'espace privé ?
164 * @return string Contenu du head complété
166 function porte_plume_insert_head_css($flux = '', $prive = false) {
167 include_spip('inc/autoriser');
168 if (autoriser($prive ?
'afficher_prive' : 'afficher_public', 'porteplume')) {
170 $cssprive = timestamp(find_in_path('css/barre_outils_prive.css'));
171 $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$cssprive' />\n";
173 $css = timestamp(direction_css(find_in_path('css/barre_outils.css'), lang_dir()));
175 include_spip('porte_plume_fonctions');
176 $hash = md5(barre_outils_css_icones());
177 $css_icones = produire_fond_statique('css/barre_outils_icones.css', array('hash' => $hash));
180 .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
181 . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n";
188 * Valeur par défaut des configurations
190 * @pipeline configurer_liste_metas
191 * @param array $metas
192 * Tableaux des metas et valeurs par défaut
194 * Tableaux des metas et valeurs par défaut
196 function porte_plume_configurer_liste_metas($metas) {
197 $metas['barre_outils_public'] = 'oui';
203 * Ajoute le formulaire de configuration du porte-plume sur la page
204 * des configurations avancées.
206 * @pipeline affiche_milieu
207 * @param array $flux Données du pipeline
208 * @return array Données du pipeline
210 function porte_plume_affiche_milieu($flux) {
211 if ($flux['args']['exec'] == 'configurer_avancees') {
212 $flux['data'] .= recuperer_fond(
213 'prive/squelettes/inclure/configurer',
214 array('configurer' => 'configurer_porte_plume')