[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / saisies / saisies_fonctions.php
index e010e4e..321ffaa 100644 (file)
@@ -16,9 +16,12 @@ include_spip('balise/saisie');
 include_spip('formulaires/selecteur/generique_fonctions');
 
 /**
- * A partir de SPIP 3.1
- * - ul.editer-groupe deviennent des div.editer-groupe
- * - li.editer devient div.editer
+ * Retourne une balise `div` si on est en SPIP >= 3.1, sinon le texte en parametre.
+ *
+ * @example `[(#VAL{ul}|saisie_balise_structure_formulaire)]`
+ * @see balise_DIV_dist() pour une écriture plus courte.
+ * @note Préférer `[(#DIV|sinon{ul})]` dans les squelettes, plus lisible.
+ *
  * @param $tag
  *   ul ou li
  * @return string
@@ -38,11 +41,31 @@ function saisie_balise_structure_formulaire($tag) {
        }
        return $tag;
 }
-// variante plus simple a ecrire dans les squelettes
-// [(#DIV|sinon{ul})]
-if (!function_exists('balise_DIV_dist')
+
+if (
+       !function_exists('balise_DIV_dist')
        and $version = explode('.', $GLOBALS['spip_version_branche'])
-       and ($version[0]>3 or ($version[0]==3 and $version[1] > 0))) {
+       and ($version[0]>3 or ($version[0]==3 and $version[1] > 0))
+) {
+
+       /**
+        * Compile la balise `DIV` qui retourne simplement le texte `div`
+        *
+        * Sert à la compatibilité entre SPIP 3.0 et SPIP 3.1+
+        *
+        * Variante d'écriture, plus courte, que le filtre `saisie_balise_structure_formulaire`
+        *
+        * À partir de SPIP 3.1
+        * - ul.editer-groupe deviennent des div.editer-groupe
+        * - li.editer devient div.editer
+        *
+        * @see saisie_balise_structure_formulaire()
+        * @example
+        *     `[(#DIV|sinon{ul})]`
+        *
+        * @param Pile $p
+        * @return Pile
+        */
        function balise_DIV_dist($p) {
                $p->code = "'div'";
                $p->interdire_scripts = false;
@@ -91,7 +114,7 @@ function saisie_traitement_vue($valeur, $env) {
  * - toto[truc] => toto_truc
  *
  * @param string $nom
- * return string
+ * @return string
 **/
 function saisie_nom2classe($nom) {
        return str_replace(array('/', '[', ']', '[', ']'), array('_', '_', '', '_', ''), $nom);
@@ -102,10 +125,12 @@ function saisie_nom2classe($nom) {
  *
  * - toto => toto,
  * - toto/truc => toto[truc],
+ * - toto/truc/ => toto[truc][],
  * - toto[truc] => toto[truc]
  *
+ * @see saisie_name2nom() pour l'inverse.
  * @param string $nom
- * return string
+ * @return string
 **/
 function saisie_nom2name($nom) {
        if (false === strpos($nom, '/')) {
@@ -117,6 +142,26 @@ function saisie_nom2name($nom) {
        return $premier . '[' . $nom . ']';
 }
 
+/**
+ * Passer un `name` en un format de nom compris de saisies
+ *
+ * - toto => toto,
+ * - toto[truc] => toto/truc,
+ * - toto[truc][] => toto/truc/
+ * - toto/truc => toto/truc
+ *
+ * @see saisie_nom2name() pour l'inverse.
+ * @param string $name
+ * @return string
+ **/
+function saisie_name2nom($name) {
+       if (false === strpos($name, '[')) {
+               return $name;
+       }
+       $name = explode('[', str_replace(']', '', $name));
+       return implode('/', $name);
+}
+
 /**
  * Compile la balise `#GLOBALS{xxx}` qui retourne la valeur d'une vilaine variable globale de même nom si elle existe
  *
@@ -214,3 +259,21 @@ function lister_tables_objets_edit() {
 
        return $objets_edit;
 }
+
+/**
+ * Afficher la chaine de langue traduite.
+ *
+ * @param string $chaine
+ * @return string
+ */
+function saisies_label($chaine) {
+       $chaine = trim($chaine);
+       if (preg_match("/:>$/", $chaine)) {
+               $chaine = preg_replace("/^<:/", "", $chaine);
+               $chaine = preg_replace("/^<;:/", "", $chaine);
+               $chaine = preg_replace("/:>$/", "", $chaine);
+               return _T($chaine);
+       }
+
+       return $chaine;
+}
\ No newline at end of file