Changeset 90490 in spip-zone


Ignore:
Timestamp:
Jun 24, 2015, 4:33:37 PM (4 years ago)
Author:
teddy.spip@…
Message:
  • Ajout d'une saisie pour sélectionner les objets ayant une url d'édition et bien entendu éditables ;

Cela s'utilise de la même manière que la saisie choix_objets.

  • Up de y
Location:
_plugins_/saisies/trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk/paquet.xml

    r90289 r90490  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="2.4.0"
     4        version="2.5.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/saisies/trunk/saisies_fonctions.php

    r90254 r90490  
    22
    33/**
    4  * Déclaration de fonctions pour les squelettes
    5  *
    6  * @package SPIP\Saisies\Fonctions
    7 **/
    8 
    9 if (!defined('_ECRIRE_INC_VERSION')) return;
     4 * Déclaration de fonctions pour les squelettes.
     5 **/
     6if (!defined('_ECRIRE_INC_VERSION')) {
     7    return;
     8}
    109
    1110include_spip('inc/saisies');
     
    1514
    1615/**
    17  * A partir de SPIP 3.1
    18  * - ul.editer-groupe deviennent des div.editer-groupe
    19  * - li.editer devient div.editer
    20  * @param $tag
    21  *   ul ou li
     16 * Traiter la valeur de la vue en fonction du env
     17 * si un traitement a ete fait en amont (champs extra) ne rien faire
     18 * si pas de traitement defini (formidable) passer typo ou propre selon le type du champ.
     19 *
     20 * @param string $valeur
     21 * @param string|array $env
     22 *
    2223 * @return string
    23  *   $tag initial ou div
    2424 */
    25 function saisie_balise_structure_formulaire($tag){
    26         static $is_div=null;
    27         if (is_null($is_div)){
    28                 $version = explode(".",$GLOBALS['spip_version_branche']);
    29                 if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0))
    30                         $is_div = true;
    31         }
    32         if ($is_div) return "div";
    33         return $tag;
     25function saisie_traitement_vue($valeur, $env)
     26{
     27    if (is_string($env)) {
     28        $env = unserialize($env);
     29    }
     30    if (!function_exists('propre')) {
     31        include_spip('inc/texte');
     32    }
     33
     34    $valeur = trim($valeur);
     35
     36    // si traitement est renseigne, alors le champ est deja mis en forme
     37    // (saisies)
     38    // sinon on fait une mise en forme smart
     39    if ($valeur and !isset($env['traitements'])) {
     40        if (in_array($env['type_saisie'], array('textarea'))) {
     41            $valeur = propre($valeur);
     42        } else {
     43            $valeur = '<p>'.typo($valeur).'</p>';
     44        }
     45    }
     46
     47    return $valeur;
    3448}
    3549
    3650/**
    37  * Traiter la valeur de la vue en fonction du env
    38  * si un traitement a ete fait en amont (champs extra) ne rien faire
    39  * si pas de traitement defini (formidable) passer typo ou propre selon le type du champ
     51 * Passer un nom en une valeur compatible avec une classe css.
    4052 *
    41  * @param string $valeur
    42  * @param string|array $env
    43  * @return string
    44  */
    45 function saisie_traitement_vue($valeur,$env){
    46         if (is_string($env))
    47                 $env = unserialize($env);
    48         if (!function_exists('propre'))
    49                 include_spip('inc/texte');
    50 
    51         $valeur = trim($valeur);
    52 
    53         // si traitement est renseigne, alors le champ est deja mis en forme
    54         // (saisies)
    55         // sinon on fait une mise en forme smart
    56         if ($valeur and !isset($env['traitements'])) {
    57                 if (in_array($env['type_saisie'], array('textarea'))) {
    58                         $valeur = propre($valeur);
    59                 }
    60                 else {
    61                         $valeur = "<p>" . typo($valeur) . "</p>";
    62                 }
    63         }
    64 
    65         return $valeur;
    66 }
    67 
    68 /**
    69  * Passer un nom en une valeur compatible avec une classe css
    70  *
    7153 * - toto => toto,
    7254 * - toto/truc => toto_truc,
     
    7557 * @param string $nom
    7658 * return string
    77 **/
    78 function saisie_nom2classe($nom) {
    79         return str_replace(array('/', '[', ']', '&#91;', '&#93;'), array('_', '_', '', '_', ''), $nom);
     59 **/
     60function saisie_nom2classe($nom)
     61{
     62    return str_replace(array('/', '[', ']', '&#91;', '&#93;'), array('_', '_', '', '_', ''), $nom);
    8063}
    8164
    8265/**
    83  * Passer un nom en une valeur compatible avec un `name` de formulaire
    84  * 
     66 * Passer un nom en une valeur compatible avec un `name` de formulaire.
     67 *
    8568 * - toto => toto,
    8669 * - toto/truc => toto[truc],
     
    8972 * @param string $nom
    9073 * return string
    91 **/
    92 function saisie_nom2name($nom) {
    93         if (false === strpos($nom, '/')) {
    94                 return $nom;
    95         }
    96         $nom = explode('/', $nom);
    97         $premier = array_shift($nom);
    98         $nom = implode('][', $nom);
    99         return $premier . '[' . $nom . ']';
     74 **/
     75function saisie_nom2name($nom)
     76{
     77    if (false === strpos($nom, '/')) {
     78        return $nom;
     79    }
     80    $nom = explode('/', $nom);
     81    $premier = array_shift($nom);
     82    $nom = implode('][', $nom);
     83
     84    return $premier.'['.$nom.']';
    10085}
    10186
    10287/**
    103  * Compile la balise `#GLOBALS{xxx}` qui retourne la valeur d'une vilaine variable globale de même nom si elle existe
     88 * Compile la balise `#GLOBALS{xxx}` qui retourne la valeur d'une vilaine variable globale de même nom si elle existe.
    10489 *
    10590 * @example
     
    10792 *     #GLOBALS{debut_intertitre}
    10893 *     ```
    109  * 
     94 *
    11095 * @param Champ $p
    11196 *     Pile au niveau de la balise
     97 *
    11298 * @return Champ
    11399 *     Pile complétée du code php de la balise.
    114 **/
    115 function balise_GLOBALS_dist($p) {
    116         if (function_exists('balise_ENV'))
    117                 return balise_ENV($p, '$GLOBALS');
    118         else
    119                 return balise_ENV_dist($p, '$GLOBALS');
     100 **/
     101function balise_GLOBALS_dist($p)
     102{
     103    if (function_exists('balise_ENV')) {
     104        return balise_ENV($p, '$GLOBALS');
     105    } else {
     106        return balise_ENV_dist($p, '$GLOBALS');
     107    }
    120108}
    121109
    122110/**
    123  * Liste les éléments du sélecteur générique triés
     111 * Liste les éléments du sélecteur générique triés.
    124112 *
    125113 * Les éléments sont triés par objets puis par identifiants
    126  * 
     114 *
    127115 * @example
    128116 *     L'entrée :
     
    137125 * @param string $selected
    138126 *     Liste des objets sélectionnés
     127 *
    139128 * @return array
    140129 *     Liste des objets triés
    141 **/
    142 function picker_selected_par_objet($selected) {
    143         $res = array();
    144         $liste = picker_selected($selected);
    145         // $liste : la sortie dans le désordre
    146         if (!$liste) {
    147                 return $res;
    148         }
     130 **/
     131function picker_selected_par_objet($selected)
     132{
     133    $res = array();
     134    $liste = picker_selected($selected);
     135    // $liste : la sortie dans le désordre
     136    if (!$liste) {
     137        return $res;
     138    }
    149139
    150         foreach ($liste as $l) {
    151                 if (!isset($res[ $l['objet'] ])) {
    152                         $res[ $l['objet'] ] = array();
    153                 }
    154                 $res[$l['objet']][] = $l['id_objet'];
    155         }
    156         // $res est trié par objet, puis par identifiant
    157         ksort($res);
    158         foreach ($res as $objet => $ids) {
    159                 sort($res[$objet]);
    160         }
     140    foreach ($liste as $l) {
     141        if (!isset($res[ $l['objet'] ])) {
     142            $res[ $l['objet'] ] = array();
     143        }
     144        $res[$l['objet']][] = $l['id_objet'];
     145    }
     146    // $res est trié par objet, puis par identifiant
     147    ksort($res);
     148    foreach ($res as $objet => $ids) {
     149        sort($res[$objet]);
     150    }
    161151
    162         // on remet tout en file
    163         $liste = array();
    164         foreach ($res as $objet=>$ids) {
    165                 foreach ($ids as $id) {
    166                         $liste[] = array('objet' => $objet, 'id_objet' => $id);
    167                 }
    168         }
     152    // on remet tout en file
     153    $liste = array();
     154    foreach ($res as $objet => $ids) {
     155        foreach ($ids as $id) {
     156            $liste[] = array('objet' => $objet, 'id_objet' => $id);
     157        }
     158    }
    169159
    170         return $liste;
     160    return $liste;
    171161}
     162
     163/**
     164 * Lister les objets qui ont une url_edit renseignée et qui sont éditables.
     165 *
     166 * @return array Liste des objets :
     167 *               index : nom de la table (spip_articles, spip_breves, etc.)
     168 *               'type' : le type de l'objet ;
     169 *               'url_edit' : l'url d'édition de l'objet ;
     170 *               'texte_objets' : le nom humain de l'objet éditorial.
     171 */
     172function lister_tables_objets_edit()
     173{
     174    include_spip('base/abstract_sql');
     175
     176    $objets = lister_tables_objets_sql();
     177    $objets_edit = array();
     178
     179    foreach ($objets as $objet => $definition) {
     180        if (isset($definition['editable']) and isset($definition['url_edit']) and $definition['url_edit'] != '') {
     181            $objets_edit[$objet] = array('type' => $definition['type'], 'url_edit' => $definition['url_edit'], 'texte_objets' => $definition['texte_objets']);
     182        }
     183    }
     184    $objets_edit = array_filter($objets_edit);
     185
     186    return $objets_edit;
     187}
Note: See TracChangeset for help on using the changeset viewer.