Dépôt officiel du core SPIP * Copie possible par svn sur svn://trac.rezo.net/spip * Les svn:externals sont présent dans https://git.spip.net/SPIP/[nom du plugin dist] https://www.spip.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

181 lines
5.0 KiB

  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2019 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. /**
  12. * Ce fichier regroupe la gestion des filtres et balises gérant des
  13. * boîtes de contenu
  14. *
  15. * @package SPIP\Core\Compilateur\Filtres
  16. **/
  17. if (!defined('_ECRIRE_INC_VERSION')) {
  18. return;
  19. }
  20. /**
  21. * Compile la balise `#BOITE_OUVRIR` ouvrant une boîte de contenu
  22. *
  23. * Racourci pour ouvrir une boîte (info, simple, pour noisette ...)
  24. *
  25. * @package SPIP\Core\Compilateur\Balises
  26. * @balise
  27. * @see balise_BOITE_PIED_dist() Pour passer au pied de boîte
  28. * @see balise_BOITE_FERMER_dist() Pour fermer une boîte
  29. * @example
  30. * ```
  31. * #BOITE_OUVRIR{titre[,type]}
  32. * [(#BOITE_OUVRIR{<:titre_cadre_interieur_rubrique:>,simple})]
  33. * #BOITE_OUVRIR{'',raccourcis}
  34. * ```
  35. *
  36. * @param Champ $p
  37. * Pile au niveau de la balise
  38. * @return Champ
  39. * Pile complétée par le code à générer
  40. */
  41. function balise_BOITE_OUVRIR_dist($p) {
  42. $_titre = interprete_argument_balise(1, $p);
  43. $_class = interprete_argument_balise(2, $p);
  44. $_head_class = interprete_argument_balise(3, $p);
  45. $_titre = ($_titre ? $_titre : "''");
  46. $_class = ($_class ? ", $_class" : ", 'simple'");
  47. $_head_class = ($_head_class ? ", $_head_class" : '');
  48. $f = chercher_filtre('boite_ouvrir');
  49. $p->code = "$f($_titre$_class$_head_class)";
  50. $p->interdire_scripts = false;
  51. return $p;
  52. }
  53. /**
  54. * Compile la balise `#BOITE_PIED` cloturant une boîte de contenu
  55. *
  56. * Racourci pour passer au pied de la boite, avant sa fermeture. On peut
  57. * lui transmettre une classe CSS avec `#BOITE_PIED{class}`
  58. *
  59. * @package SPIP\Core\Compilateur\Balises
  60. * @balise
  61. * @see balise_BOITE_OUVRIR_dist() Pour ouvrir une boîte
  62. * @see balise_BOITE_FERMER_dist() Pour fermer une boîte
  63. *
  64. * @param Champ $p
  65. * Pile au niveau de la balise
  66. * @return Champ
  67. * Pile complétée par le code à générer
  68. */
  69. function balise_BOITE_PIED_dist($p) {
  70. $_class = interprete_argument_balise(1, $p);
  71. $_class = ($_class ? "$_class" : '');
  72. $f = chercher_filtre('boite_pied');
  73. $p->code = "$f($_class)";
  74. $p->interdire_scripts = false;
  75. return $p;
  76. }
  77. /**
  78. * Compile la balise `#BOITE_FERMER` clôturant une boîte de contenu
  79. *
  80. * Racourci pour fermer une boîte ouverte
  81. *
  82. * @package SPIP\Core\Compilateur\Balises
  83. * @balise
  84. * @see balise_BOITE_OUVRIR_dist() Pour ouvrir une boîte
  85. * @see balise_BOITE_PIED_dist() Pour passer au pied de boîte
  86. *
  87. * @param Champ $p
  88. * Pile au niveau de la balise
  89. * @return Champ
  90. * Pile complétée par le code à générer
  91. */
  92. function balise_BOITE_FERMER_dist($p) {
  93. $f = chercher_filtre('boite_fermer');
  94. $p->code = "$f()";
  95. $p->interdire_scripts = false;
  96. return $p;
  97. }
  98. /**
  99. * Ouvrir une boîte
  100. *
  101. * Peut-être surchargé par `filtre_boite_ouvrir_dist` ou `filtre_boite_ouvrir`
  102. *
  103. * @filtre
  104. * @see balise_BOITE_OUVRIR_dist() qui utilise ce filtre
  105. * @param string $titre
  106. * Titre de la boîte
  107. * @param string $class
  108. * Classes CSS de la boîte
  109. * @param string $head_class
  110. * Classes CSS sur l'entête
  111. * @param string $id
  112. * Identifiant HTML de la boîte
  113. * @return string
  114. * HTML du début de la boîte
  115. */
  116. function boite_ouvrir($titre, $class = '', $head_class = '', $id = '') {
  117. $class = "box $class";
  118. $head_class = "clearfix hd $head_class";
  119. // dans l'espace prive, titrer en h3 si pas de balise <hn>
  120. if (test_espace_prive() and strlen($titre) and strpos($titre, '<h') === false) {
  121. $titre = "<h3>$titre</h3>";
  122. }
  123. return '<div class="' . $class . ($id ? "\" id=\"$id" : '') . '">'
  124. . '<b class="top"><b class="tl"></b><b class="tr"></b></b>'
  125. . '<div class="inner">'
  126. . ($titre ? '<div class="clearfix ' . $head_class . '">' . $titre . '<!--/hd--></div>' : '')
  127. . '<div class="clearfix bd">';
  128. }
  129. /**
  130. * Passer au pied d'une boîte
  131. *
  132. * Peut-être surchargé par `filtre_boite_pied_dist` ou `filtre_boite_pied`
  133. *
  134. * @filtre
  135. * @see balise_BOITE_PIED_dist() qui utilise ce filtre
  136. * @param string $class
  137. * Classes CSS de la boîte
  138. * @return string
  139. * HTML de transition vers le pied de la boîte
  140. */
  141. function boite_pied($class = 'act') {
  142. $class = "ft $class";
  143. return '</div>'
  144. . '<div class="cleafix ' . $class . '">';
  145. }
  146. /**
  147. * Fermer une boîte
  148. *
  149. * Peut-être surchargé par `filtre_boite_fermer_dist` ou `filtre_boite_fermer`
  150. *
  151. * @filtre
  152. * @see balise_BOITE_FERMER_dist() qui utilise ce filtre
  153. * @return string
  154. * HTML de fin de la boîte
  155. */
  156. function boite_fermer() {
  157. return '</div></div>'
  158. . '<b class="bottom"><b class="bl"></b><b class="br"></b></b>'
  159. . '</div>';
  160. }