porte_plume_pipelines.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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. if (!defined("_ECRIRE_INC_VERSION")) return;
  10. #define('PORTE_PLUME_PUBLIC', true);
  11. /**
  12. * Fonction du pipeline autoriser. N'a rien à faire
  13. * @pipeline autoriser
  14. */
  15. function porte_plume_autoriser(){}
  16. /**
  17. * Autoriser l'action de previsu
  18. *
  19. * La fermer aux non identifiés si pas de porte plume dans le public
  20. *
  21. * @param string $faire Action demandée
  22. * @param string $type Type d'objet sur lequel appliquer l'action
  23. * @param int $id Identifiant de l'objet
  24. * @param array $qui Description de l'auteur demandant l'autorisation
  25. * @param array $opt Options de cette autorisation
  26. * @return bool true s'il a le droit, false sinon
  27. */
  28. function autoriser_porteplume_previsualiser_dist($faire, $type, $id, $qui, $opt){
  29. return
  30. (test_espace_prive() AND autoriser('ecrire'))
  31. OR (!test_espace_prive() AND autoriser('afficher_public','porteplume'));
  32. }
  33. /**
  34. * Autoriser le porte plume dans l'espace public ?
  35. *
  36. * @param string $faire Action demandée
  37. * @param string $type Type d'objet sur lequel appliquer l'action
  38. * @param int $id Identifiant de l'objet
  39. * @param array $qui Description de l'auteur demandant l'autorisation
  40. * @param array $opt Options de cette autorisation
  41. * @return bool true s'il a le droit, false sinon
  42. */
  43. function autoriser_porteplume_afficher_public_dist($faire, $type, $id, $qui, $opt) {
  44. // compatibilite d'avant le formulaire de configuration
  45. if (defined('PORTE_PLUME_PUBLIC')) {
  46. return PORTE_PLUME_PUBLIC;
  47. }
  48. return ($GLOBALS['meta']['barre_outils_public'] !== 'non');
  49. // n'autoriser qu'aux identifies :
  50. # return $qui['id_auteur'] ? PORTE_PLUME_PUBLIC : false;
  51. }
  52. /**
  53. * Ajout des scripts du porte-plume dans le head des pages publiques
  54. *
  55. * Uniquement si l'on est autorisé à l'afficher le porte plume dans
  56. * l'espace public !
  57. *
  58. * @pipeline insert_head
  59. * @param string $flux Contenu du head
  60. * @return string Contenu du head
  61. */
  62. function porte_plume_insert_head_public($flux){
  63. include_spip('inc/autoriser');
  64. if (autoriser('afficher_public', 'porteplume')) {
  65. $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
  66. }
  67. return $flux;
  68. }
  69. /**
  70. * Ajout des scripts du porte-plume dans le head des pages privées
  71. *
  72. * @pipeline header_prive
  73. * @param string $flux Contenu du head
  74. * @return string Contenu du head
  75. */
  76. function porte_plume_insert_head_prive($flux){
  77. $js = find_in_path('javascript/porte_plume_forcer_hauteur.js');
  78. $flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang'], $prive=true)
  79. . "<script type='text/javascript' src='$js'></script>\n";
  80. return $flux;
  81. }
  82. /**
  83. * Ajout des scripts du porte-plume au texte (un head) transmis
  84. *
  85. * @param string $flux Contenu du head
  86. * @param string $lang Langue en cours d'utilisation
  87. * @param bool $prive Est-ce pour l'espace privé ?
  88. * @return string Contenu du head complété
  89. */
  90. function porte_plume_inserer_head($flux, $lang, $prive = false){
  91. $markitup = find_in_path('javascript/jquery.markitup_pour_spip.js');
  92. $js_previsu = find_in_path('javascript/jquery.previsu_spip.js');
  93. $js_start = parametre_url(generer_url_public('porte_plume_start.js'), 'lang', $lang);
  94. if (defined('_VAR_MODE') AND _VAR_MODE=="recalcul")
  95. $js_start = parametre_url($js_start, 'var_mode', 'recalcul');
  96. $flux .=
  97. "<script type='text/javascript' src='$markitup'></script>\n"
  98. . "<script type='text/javascript' src='$js_previsu'></script>\n"
  99. . "<script type='text/javascript' src='$js_start'></script>\n";
  100. return $flux;
  101. }
  102. /**
  103. * Ajout des CSS du porte-plume au head privé
  104. *
  105. * @pipeline header_prive_css
  106. * @param string $flux Contenu du head
  107. * @return string Contenu du head complété
  108. */
  109. function porte_plume_insert_head_prive_css($flux){
  110. return porte_plume_insert_head_css($flux, true);
  111. }
  112. /**
  113. * Ajout des CSS du porte-plume au head public
  114. *
  115. * Appelé aussi depuis le privé avec $prive à true.
  116. *
  117. * @pipeline insert_head_css
  118. * @param string $flux Contenu du head
  119. * @param bool $prive Est-ce pour l'espace privé ?
  120. * @return string Contenu du head complété
  121. */
  122. function porte_plume_insert_head_css($flux='', $prive = false){
  123. include_spip('inc/autoriser');
  124. // toujours autoriser pour le prive.
  125. if ($prive or autoriser('afficher_public', 'porteplume')) {
  126. if ($prive) {
  127. $cssprive = find_in_path('css/barre_outils_prive.css');
  128. $flux .= "<link rel='stylesheet' type='text/css' media='all' href='$cssprive' />\n";
  129. }
  130. $css = direction_css(find_in_path('css/barre_outils.css'), lang_dir());
  131. $css_icones = generer_url_public('barre_outils_icones.css');
  132. if (defined('_VAR_MODE') AND _VAR_MODE=="recalcul")
  133. $css_icones = parametre_url($css_icones, 'var_mode', 'recalcul');
  134. $flux
  135. .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
  136. . "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n";
  137. }
  138. return $flux;
  139. }
  140. /**
  141. * Valeur par défaut des configurations
  142. *
  143. * @pipeline configurer_liste_metas
  144. * @param array $metas
  145. * Tableaux des metas et valeurs par défaut
  146. * @return array
  147. * Tableaux des metas et valeurs par défaut
  148. */
  149. function porte_plume_configurer_liste_metas($metas){
  150. $metas['barre_outils_public'] = 'oui';
  151. return $metas;
  152. }
  153. /**
  154. * Ajoute le formulaire de configuration du porte-plume sur la page
  155. * des configurations avancées.
  156. *
  157. * @pipeline affiche_milieu
  158. * @param array $flux Données du pipeline
  159. * @return array Données du pipeline
  160. */
  161. function porte_plume_affiche_milieu($flux){
  162. if ($flux['args']['exec']=='configurer_avancees')
  163. $flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_porte_plume'));
  164. return $flux;
  165. }
  166. ?>