porte_plume_start.js_fonctions.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. * Déclarations de fonctions servant à la construction du javascript
  4. *
  5. * @plugin Porte Plume pour SPIP
  6. * @license GPL
  7. * @package SPIP\PortePlume\Javascript
  8. **/
  9. if (!defined("_ECRIRE_INC_VERSION")) return;
  10. /**
  11. * Retourne la définition de la barre markitup désignée.
  12. * (cette déclaration est au format json)
  13. *
  14. * Deux pipelines 'porte_plume_pre_charger' et 'porte_plume_charger'
  15. * permettent de récuperer l'objet de classe Barre_outil
  16. * avant son export en json pour modifier des elements.
  17. *
  18. * @pipeline_appel porte_plume_barre_pre_charger
  19. * Charge des nouveaux boutons au besoin
  20. * @pipeline_appel porte_plume_barre_charger
  21. * Affiche ou cache certains boutons
  22. *
  23. * @return string Déclaration json
  24. */
  25. function porte_plume_creer_json_markitup(){
  26. // on recupere l'ensemble des barres d'outils connues
  27. include_spip('porte_plume_fonctions');
  28. if (!$sets = barre_outils_liste()) {
  29. return null;
  30. }
  31. // 1) On initialise tous les jeux de barres
  32. $barres = array();
  33. foreach($sets as $set) {
  34. if (($barre = barre_outils_initialiser($set)) AND is_object($barre))
  35. $barres[$set] = $barre;
  36. }
  37. // 2) Préchargement
  38. /**
  39. * Charger des nouveaux boutons au besoin
  40. *
  41. * @example
  42. * $barre = &$flux['spip'];
  43. * $barre->ajouterApres('bold',array(params));
  44. * $barre->ajouterAvant('bold',array(params));
  45. *
  46. * $bold = $barre->get('bold');
  47. * $bold['id'] = 'bold2';
  48. * $barre->ajouterApres('italic',$bold);
  49. * @pipeline_appel porte_plume_barre_pre_charger
  50. */
  51. $barres = pipeline('porte_plume_barre_pre_charger', $barres);
  52. // 3) Chargement
  53. /**
  54. * Cacher ou afficher certains boutons au besoin
  55. *
  56. * @example
  57. * $barre = &$flux['spip'];
  58. * $barre->afficher('bold');
  59. * $barre->cacher('bold');
  60. *
  61. * $barre->cacherTout();
  62. * $barre->afficher(array('bold','italic','header1'));
  63. * @pipeline_appel porte_plume_barre_charger
  64. */
  65. $barres = pipeline('porte_plume_barre_charger', $barres);
  66. // 4 On crée les jsons
  67. $json = "";
  68. foreach($barres as $set=>$barre) {
  69. $json .= $barre->creer_json();
  70. }
  71. return $json;
  72. }
  73. ?>