Changeset 49234 in spip-zone


Ignore:
Timestamp:
Jul 2, 2011, 2:02:19 PM (10 years ago)
Author:
marcimat@…
Message:
  • S'appuyer au maximum sur la table SQL plutot que l'objet.
  • Utiliser _T_ou_typo()
Location:
_plugins_/champs_extras
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/champs_extras/core/branches/v1/cextras_options.php

    r46787 r49234  
    66    $GLOBALS['spip_pipeline']['objets_extensibles'] = "";
    77       
     8
    89        // utiliser ce pipeline a part
    910        // afin d'etre certain d'arriver apres les autres plugins
  • _plugins_/champs_extras/core/trunk/base/cextras.php

    r49107 r49234  
    66 * Déclarer les nouveaux champs et
    77 * les nouvelles infos des objets éditoriaux
     8 *
     9 * /!\ Ne pas utiliser table_objet() qui ferait une reentrance et des calculs faux.
    810 */
    911function cextras_declarer_tables_objets_sql($tables){
     
    5961        foreach ($champs as $c){
    6062                if ($c->traitements and $c->champ and $c->sql) {
    61                         $tobjet = $c->_objet;
    6263                        $balise = strtoupper($c->champ);
    6364                        // definir
     
    6768                        // le traitement peut etre le nom d'un define
    6869                        $traitement = defined($c->traitements) ? constant($c->traitements) : $c->traitements;
    69                         $interface['table_des_traitements'][$balise][$tobjet] = $traitement;
     70                       
     71                        // SPIP 3 permet de declarer par la table sql directement.
     72                        $interface['table_des_traitements'][$balise][$c->table] = $traitement;
    7073                }
    7174        }
  • _plugins_/champs_extras/core/trunk/cextras_balises.php

    r45361 r49234  
    2828        // recuperer la liste des champs extras existants
    2929        include_spip('cextras_pipelines');
    30         if (!$c = cextras_get_extra($objet, $colonne)) {
     30        if (!$c = cextras_get_extra(table_objet_sql($objet), $colonne)) {
    3131                return '';
    3232        }
  • _plugins_/champs_extras/core/trunk/cextras_pipelines.php

    r49141 r49234  
    1616                foreach ($vals = explode("\n", $data) as $x) {
    1717                        list($cle, $desc) = explode(',', trim($x), 2);
    18                         $datas[$cle] = _T($desc);
     18                        $datas[$cle] = _T_ou_typo($desc);
    1919                }
    2020        }
     
    3131        unset($contexte['config']);
    3232
    33 
    3433        $nom_champ = $prefixe . $c->champ;
    3534        $contexte['nom'] = $nom_champ;
    3635        $contexte['type_saisie'] = $c->saisie;
    37         $contexte['label'] = _T($c->label);
     36
    3837        if (isset($contexte[$nom_champ]) and $contexte[$nom_champ]) {
    3938                $contexte['valeur'] = $contexte[$nom_champ];
    4039        }
    4140
     41        // a faire reellement ou les saisies s'en occupent ?
    4242        if ($c->saisie_parametres['datas']) {
    4343                $contexte['datas'] = cextras_data_array($c->saisie_parametres['datas']);
    4444        }
    4545
    46         $params = $c->saisie_parametres;
    47 
    48         // traductions a faire
    49         $contexte['explication'] = _T($params['explication']);
    50         $contexte['attention'] = _T($params['attention']);
    51 
    52         unset ( $params['explication'],
    53                         $params['attention']);
    54 
    5546        // tout inserer le reste des champs
    56         $contexte = array_merge($contexte, $params);
     47        $contexte = array_merge($contexte, $c->saisie_parametres);
    5748
    5849       
     
    9586// recuperer tous les extras qui verifient le critere demande :
    9687// l'objet sur lequel s'applique l'extra est comparee a $type
    97 function cextras_get_extras_match($type) {
     88function cextras_get_extras_match($table) {
    9889        static $champs = false;
    9990        if ($champs === false) {
    10091                $champs = pipeline('declarer_champs_extras', array());
    10192        }
    102        
     93
    10394        $extras = array();
    10495        if ($champs) {
    105                 $type = objet_type(table_objet($type));
    10696                foreach ($champs as $c) {
    10797                        // attention aux cas compliques site->syndic !
    108                         if ($type == $c->_type and $c->champ and $c->sql) {
     98                        if ($table == $c->table and $c->champ and $c->sql) {
    10999                                $extras[] = $c;
    110100                        }
    111101                }
    112102        }
    113        
     103
    114104        return $extras;
    115105}
     
    124114 * @return ChampExtra|false
    125115**/
    126 function cextras_get_extra($type, $champ) {
    127         $extras = cextras_get_extras_match($type);
     116function cextras_get_extra($table, $champ) {
     117        $extras = cextras_get_extras_match($table);
    128118        foreach ($extras as $c) {
    129119                if ($c->champ == $champ) {
     
    140130// ajouter les champs sur les formulaires CVT editer_xx
    141131function cextras_editer_contenu_objet($flux){
     132
    142133        // recuperer les champs crees par les plugins
    143         if ($extras = cextras_get_extras_match($flux['args']['type'])) {
     134        if ($extras = cextras_get_extras_match( table_objet_sql($flux['args']['type'])) ) {
     135
    144136                // les saisies a ajouter seront mises dedans.
    145137                $inserer_saisie = '';
     
    155147                // le pipeline formulaire_charger de spip_auteurs (pour cet exemple) avec les bons prefixe.
    156148                if (isset($flux['args']['prefixe_champs_extras']) and $prefixe = $flux['args']['prefixe_champs_extras']) {
    157                         $inserer_saisie .= "<input type='hidden' name='prefixe_champs_extras_" . $flux['args']['type'] . "' value='$prefixe' />\n";
     149                        $inserer_saisie .= "<input type='hidden' name='prefixe_champs_extras_" . table_objet_sql($flux['args']['type']) . "' value='$prefixe' />\n";
    158150                } else {
    159151                        $prefixe = '';
     
    206198        if ($extras = cextras_get_extras_match($flux['args']['table'])) {
    207199                // recherchons un eventuel prefixe utilise pour poster les champs
    208                 $type = objet_type(table_objet($flux['args']['table']));
    209                 $prefixe = _request('prefixe_champs_extras_' . $type);
     200                $prefixe = _request('prefixe_champs_extras_' . $flux['args']['table']);
    210201                if (!$prefixe) {
    211202                        $prefixe = '';
     
    230221
    231222        // recuperer les champs crees par les plugins
    232         if ($extras = cextras_get_extras_match($flux['args']['type'])) {
     223        if ($extras = cextras_get_extras_match( table_objet_sql($flux['args']['type']) ) ) {
    233224
    234225                $contexte = cextra_quete_valeurs_extras($extras, $flux['args']['type'], $flux['args']['id_objet']);
     
    242233
    243234                        // on affiche seulement les champs dont la vue est autorisee
    244                         $type = $c->_type . '_' . $c->champ;
     235                        $type = objet_type($c->table) . '_' . $c->champ;
    245236                        include_spip('inc/autoriser');
    246237                        if (autoriser('voirextra', $type, $flux['args']['id_objet'], '', array(
     
    250241                        {
    251242                                $options = $c->saisie_parametres;
    252                                 $options['nom'] = $c-> champ;
     243                                $options['nom'] = $c->champ;
    253244                                $saisies[] = array('saisie' => $c->saisie, 'options' => $options);
    254245                                # saisies_charger_infos($c->saisie);
     
    270261// verification de la validite des champs extras
    271262function cextras_formulaire_verifier($flux){
     263
    272264        // recuperer les champs crees par les plugins
    273265        $form = $flux['args']['form'];
  • _plugins_/champs_extras/core/trunk/inc/cextras.php

    r49131 r49234  
    4444        function ChampExtra($params=array()) {
    4545                $this->definir($params);
     46
     47                // ne pas definir les objets à la creation
     48                // car au moment de l'appel de declarer_table_objet_sql
     49                // il peut y avoir une reentrance, via table_objet, surnoms,
     50                // dans declarer_table_objet_sql, renvoyant alors 0, puis aucun surnom,
     51                // et ne calculant finalement pas un table_objet correct.
     52                // On definit donc plus tard, au besoin.
     53                # $this->definir_raccourcis();
     54
    4655        }
     56
    4757
    4858        // definir les champs
     
    5464                }
    5565               
    56                 // calculer _objet et _table_sql
    57                 $this->_type      = objet_type(table_objet($this->table)); // article
    58                 $this->_objet     = table_objet($this->_type); // articles
    59                
    60                 // calculer l'id du champ extra
    6166                $this->make_id();
    6267        }
    6368
     69        // definir les raccourcis _objet _type
     70        function definir_raccourcis($params=array()) {                 
     71                $this->_objet     = table_objet($this->table); // articles
     72                $this->_type      = objet_type($this->_objet); // article
     73        }
     74       
    6475        // creer l'id du champ extra :
    6576        function make_id(){
  • _plugins_/champs_extras/core/trunk/inc/cextras_gerer.php

    r49107 r49234  
    113113        $retour = true;
    114114        foreach ($champs as $c){
    115                 if ($objet = $c->_objet) {
     115                if ($objet = table_objet($c->table)) {
    116116                        $desc = $trouver_table($objet);
    117117                        if (!isset($desc['field'][$c->champ])) {
  • _plugins_/champs_extras/core/trunk/plugin.xml

    r49188 r49234  
    5656        <categorie>outil</categorie>
    5757       
    58         <necessite id="saisies" version="[1.9.0;]" />
     58        <necessite id="saisies" version="[1.10.0;]" />
    5959</plugin>
  • _plugins_/champs_extras/interface/trunk/inc/iextras.php

    r49107 r49234  
    1414                foreach($extras as $e) {
    1515                        if (!$e->_objet) {
    16                                 $e->definir(); // va recreer les infos des objet/type
     16                                $e->definir_raccourcis(); // va recreer les infos des objet/type
    1717                        }
    1818                }
Note: See TracChangeset for help on using the changeset viewer.