Changeset 32316 in spip-zone


Ignore:
Timestamp:
Oct 23, 2009, 11:04:35 PM (11 years ago)
Author:
marcimat@…
Message:
  • Expérimental (Core uniquement) : les saisies peuvent utiliser le plugin «saisies». Du coup, on peut ajouter presque tous les paramètres standard de #SAISIE… on pourrait les regrouper dans un tableau peut être.
Location:
_plugins_/champs_extras2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/champs_extras2/core/base/cextras.php

    r32222 r32316  
    2222        return declarer_champs_extras($champs, $tables_principales);
    2323}
     24
     25
     26
     27function cextras_declarer_tables_interfaces($interface){
     28
     29        // pouvoir utiliser la class ChampExtra
     30        include_spip('inc/cextras');
     31       
     32        // recuperer les champs crees par les plugins
     33        $champs = pipeline('declarer_champs_extras', array());
     34
     35        // ajouter les champs au tableau spip
     36        return declarer_champs_extras_interfaces($champs, $interface);
     37}
     38
     39
    2440?>
  • _plugins_/champs_extras2/core/cextras_options.php

    r31076 r32316  
    1313                return cextras_declarer_tables_principales($tables_principales);
    1414        }
     15        $GLOBALS['spip_pipeline']['declarer_tables_interfaces'] .= '||cextras_declarer_champs_interfaces_apres_les_autres';
     16        function cextras_declarer_champs_interfaces_apres_les_autres($interface) {
     17                include_spip('base/cextras');
     18                return cextras_declarer_tables_interfaces($interface);
     19        }
    1520?>
  • _plugins_/champs_extras2/core/cextras_pipelines.php

    r32143 r32316  
    8989
    9090
     91// recuperation d'une saisie interne
     92function ce_calculer_saisie_interne($c, $contexte) {
     93        // le contexte possede deja l'entree SQL,
     94        // calcule par le pipeline formulaire_charger.
     95        $contexte = cextras_creer_contexte($c, $contexte);
     96
     97        // calculer le bon squelette et l'ajouter
     98        if (!find_in_path(
     99        ($f = 'extra-saisies/'.$c->type).'.html')) {
     100                // si on ne sait pas, on se base sur le contenu
     101                // pour choisir ligne ou bloc
     102                $f = strstr($contexte[$c->champ], "\n")
     103                        ? 'extra-saisies/bloc'
     104                        : 'extra-saisies/ligne';
     105        }
     106        return array($f, $contexte);
     107}
     108
     109
     110// en utilisant le plugin "saisies"
     111function ce_calculer_saisie_externe($c, $contexte) {
     112
     113        $contexte['nom'] = $c->champ;
     114        $contexte['type_saisie'] = $c->type;
     115        if (isset($contexte[$c->champ]) and $contexte[$c->champ]) {
     116                $contexte['valeur'] = $contexte[$c->champ];
     117        }
     118               
     119        $opts = $c->toArray();
     120        // remapper les precisions
     121        if ($opts['precisions']) {
     122                $opts['explication'] = $opts['precisions'];
     123        }
     124        // traductions a faire
     125        foreach (array('label', 'explication', 'attention') as $nom) {
     126                if ($opts[$nom]) {
     127                        $contexte[$nom] = _T($opts[$nom]);
     128                }
     129        }
     130       
     131        // inutiles dans le contexte
     132        unset(  $opts['champ'],
     133                        $opts['type'],
     134                        $opts['precisions'],
     135                        $opts['sql'],
     136                        $opts['rechercher'],
     137                        // deja dedans
     138                        $opts['label'],
     139                        $opts['explication'],
     140                        $opts['attention']);
     141               
     142        // tout inserer le reste des champs
     143        foreach ($opts as $nom=>$val) {
     144                if ($val) {
     145                        $contexte[$nom] = $val;
     146                }
     147        }
     148
     149        return array('saisies/_base', $contexte);
     150}
     151
     152
     153
     154
    91155// recuperer en bdd les valeurs des champs extras
    92156// en une seule requete...
     
    147211                                'contexte' => $flux['args']['contexte'])))
    148212                        {
    149                                                
    150                                 // le contexte possede deja l'entree SQL,
    151                                 // calcule par le pipeline formulaire_charger.
    152                                 $contexte = cextras_creer_contexte($c, $flux['args']['contexte']);
    153                                 $extras[$c->champ] = $contexte[$c->champ];
    154 
    155                                 // calculer le bon squelette et l'ajouter
    156                                 if (!find_in_path(
    157                                 ($f = 'extra-saisies/'.$c->type).'.html')) {
    158                                         // si on ne sait pas, on se base sur le contenu
    159                                         // pour choisir ligne ou bloc
    160                                         $f = strstr($contexte[$c->champ], "\n")
    161                                                 ? 'extra-saisies/bloc'
    162                                                 : 'extra-saisies/ligne';
     213
     214                                if ($c->saisie_externe) {
     215                                        list($f, $contexte) = ce_calculer_saisie_externe($c, $flux['args']['contexte']);
     216                                } else {
     217                                        list($f, $contexte) = ce_calculer_saisie_interne($c, $flux['args']['contexte']);
    163218                                }
    164219                                $saisie = recuperer_fond($f, $contexte);
  • _plugins_/champs_extras2/core/inc/cextras.php

    r32146 r32316  
    1414       
    1515        var $_id = ''; // identifiant de ce champ extra
     16
     17        // experimental (avec saisies)
     18        var $saisie_externe = false;
     19        var $explication = ''; // message d'explication !
     20        var $attention = ''; // message d'attention !
     21        var $filtres = ''; // _TRAITEMENT_RACCOURCIS ,  _TRAITEMENT_TYPO
     22        var     $class = ""; // classes CSS     sur l'element
     23        var     $li_class = ""; // classes CSS sur l'element parent LI
     24
    1625       
    1726        // constructeur
     
    7079
    7180
     81function declarer_champs_extras_interfaces($champs, $interface){
     82        // ajoutons les filtres sur les champs
     83        foreach ($champs as $c){
     84                if ($c->filtres and $c->champ and $c->sql) {
     85                        $tobjet = table_objet($c->table);
     86                        $balise = strtoupper($c->champ);
     87                        // definir
     88                        if (!isset($interface['table_des_traitements'][$balise])) {
     89                                $interface['table_des_traitements'][$balise] = array();
     90                        }
     91                        $interface['table_des_traitements'][$balise][$tobjet] = $c->filtres;
     92                }
     93        }
     94        return $interface;
     95}
     96
    7297
    7398/**
  • _plugins_/champs_extras2/core/plugin.xml

    r32248 r32316  
    33        <auteur>Matthieu Marcillaud, Fil</auteur>
    44        <licence>GNU/GPL</licence>
    5         <version>1.3.1</version>
     5        <version>1.4.0</version>
    66        <description>
    77        Creer de nouveaux champs aux objets d'&eacute;dition de SPIP
  • _plugins_/champs_extras2/extensions/interface/formulaires/editer_champ_extra.html

    r32312 r32316  
    66                #ACTION_FORMULAIRE{#ENV{action}}
    77                <input type='hidden' name='extra_id' value='#ENV{extra_id}' />
    8                 <ul>
     8
    99                #SET{disable,#ENV{new}|?{'',oui}}
    10                
    11                 [(#SAISIE{input,champ,
    12                         label=<:iextras:label_champ:>,
    13                         explication=<:iextras:caracteres_autorises_champ:>,
    14                         obligatoire=oui,
    15                         disable_avec_post=#GET{disable}})]
    16        
    17                 [(#SAISIE{selection,table,
    18                         label=<:iextras:label_table:>,
    19                         obligatoire=oui,
    20                         disable_avec_post=#GET{disable},
    21                         datas=[(#VAL|cextras_objets_valides_boucle_pour)]})]
     10                <fieldset>
     11                        <h3 class='legend'><:iextras:legend_declaration:></h3>
     12                        <ul>
     13                        [(#SAISIE{input,champ,
     14                                label=<:iextras:label_champ:>,
     15                                explication=<:iextras:caracteres_autorises_champ:>,
     16                                obligatoire=oui,
     17                                disable_avec_post=#GET{disable}})]
    2218
    23                 [(#SAISIE{input,label,
    24                         label=<:iextras:label_label:>,
    25                         explication=<:iextras:precisions_pour_label:>,
    26                         obligatoire=oui})]
     19                        [(#SAISIE{selection,table,
     20                                label=<:iextras:label_table:>,
     21                                obligatoire=oui,
     22                                disable_avec_post=#GET{disable},
     23                                datas=[(#VAL|cextras_objets_valides_boucle_pour)]})]
    2724
    28                 [(#SAISIE{input,precisions,
    29                         label=<:iextras:label_precisions:>,
    30                         explication=<:iextras:precisions_pour_precisions:>})]
    31 
    32                 [(#SAISIE{oui_non,obligatoire,
    33                         label=<:iextras:label_obligatoire:>,
    34                         obligatoire=oui})]
    35 
    36                 [(#SAISIE{oui_non,rechercher,
    37                         label=<:iextras:label_rechercher:>,
    38                         explication=<:iextras:precisions_pour_rechercher:>})]
    39 
    40                 [(#SAISIE{selection,type,
    41                         label=<:iextras:label_type:>,
    42                         obligatoire=oui,
    43                         explication=<:iextras:precisions_pour_type:>,
    44                         datas=[(#VAL|cextras_types_formulaires)]})]
    45 
    46                 #SET{defaut,",-vide-
     25                        [(#SAISIE{input,label,
     26                                label=<:iextras:label_label:>,
     27                                explication=<:iextras:precisions_pour_label:>,
     28                                obligatoire=oui})]
     29                               
     30                        [(#SAISIE{selection,type,
     31                                label=<:iextras:label_type:>,
     32                                obligatoire=oui,
     33                                explication=<:iextras:precisions_pour_type:>,
     34                                datas=[(#VAL|cextras_types_formulaires)]})]
     35                               
     36                        #SET{defaut,",-vide-
    47371,valeur 1
    48382,valeur 2"}
    49                 [(#SAISIE{textarea,enum,
    50                         label=<:iextras:label_enum:>,
    51                         explication=<:iextras:precisions_pour_enum:>,
    52                         rows=3,
    53                         defaut=#GET{defaut}})]
     39                        [(#SAISIE{textarea,enum,
     40                                label=<:iextras:label_enum:>,
     41                                explication=<:iextras:precisions_pour_enum:>,
     42                                rows=3,
     43                                defaut=#GET{defaut}})]
    5444
    55                 [(#SAISIE{input,sql,
    56                         label=<:iextras:label_sql:>,
    57                         obligatoire=oui,
    58                         disable_avec_post=#GET{disable}})]
     45                        </ul>
     46                </fieldset>
     47                <fieldset>
     48                        <h3 class='legend'><:iextras:legend_options:></h3>     
     49                        <ul>
     50                        [(#SAISIE{input,precisions,
     51                                label=<:iextras:label_precisions:>,
     52                                explication=<:iextras:precisions_pour_precisions:>})]
    5953
    60                 </ul>
     54                        [(#SAISIE{oui_non,obligatoire,
     55                                label=<:iextras:label_obligatoire:>,
     56                                obligatoire=oui})]
     57
     58                        [(#SAISIE{oui_non,rechercher,
     59                                label=<:iextras:label_rechercher:>,
     60                                explication=<:iextras:precisions_pour_rechercher:>})]
     61
     62                        [(#SAISIE{input,sql,
     63                                label=<:iextras:label_sql:>,
     64                                obligatoire=oui,
     65                                disable_avec_post=#GET{disable}})]
     66                        </ul>
     67                </fieldset>             
    6168                [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    6269                <!--extra-->
  • _plugins_/champs_extras2/extensions/interface/lang/iextras_fr.php

    r25810 r32316  
    4646        'label_table' => 'Objet',
    4747        'label_type' => 'Type de saisie',
     48        'legend_declaration' => 'D&eacute;claration',
     49        'legend_options' => 'Options',
    4850        'liste_des_extras' => 'Liste des champs extras',
    4951        'liste_des_extras_possibles' => 'Liste des champs pr&eacute;sents non g&eacute;r&eacute;s',
Note: See TracChangeset for help on using the changeset viewer.