Changeset 49107 in spip-zone


Ignore:
Timestamp:
Jun 27, 2011, 8:46:14 PM (10 years ago)
Author:
marcimat@…
Message:

Création de champs extras via le formulaire d'interface fonctionnel. Merci cerdic pour creer_ou_upgrader_table().

Location:
_plugins_/champs_extras
Files:
2 added
3 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/champs_extras/core/trunk/base/cextras.php

    r49091 r49107  
    1717        // ajoutons les champs un par un
    1818        foreach ($champs as $c){
    19                 $table = $c->_table_sql;
     19                $table = $c->table;
    2020                if (isset($tables[$table]) and $c->champ and $c->sql) {
    2121                        $tables[$table]['field'][$c->champ] = $c->sql;
  • _plugins_/champs_extras/core/trunk/inc/cextras.php

    r49091 r49107  
    33
    44class ChampExtra{
    5         var $table = ''; // type de table ('rubrique')
    6         var $champ = ''; // nom du champ ('ps')
    7         var $label = ''; // label du champ, code de lanque ('monplug:mon_label')
    8         var $precisions = ''; // (deprecie ; voir $saisie_parametres) precisions pour la saisie du champ (optionnel), code de lanque ('monplug:mon_label')
    9         var $obligatoire = false; // ce champ est il obligatoire ? 'oui' ou true : c'est le cas.
    10         var $verifier = false; // Fonction de vérification du plugin API verifier
     5        var $table       = ''; // table SQL (spip_rubriques)
     6        var $champ       = ''; // nom du champ SQL (ps)
     7        var $sql         = ''; // définition SQL du champ SQL (text NOT NULL DEFAULT '')
     8
     9        var $saisie      = ''; // type de saisie (input)
     10        var $label       = ''; // label du champ. Code de langue (monplug:mon_label)
     11        var $obligatoire = false; // champ obligatoire ? 'oui'/true
     12        var $saisie_parametres = array();
     13                /*
     14                    // peut indiquer tout parametre d'une #SAISIE, tel que :
     15                        explication => '', // message d'explication !
     16                        attention => '',   // message d'attention !
     17                        class => '',       // classes CSS sur l'element
     18                        li_class => '',    // classes CSS sur l'element parent LI
     19                        datas => '',       // donnees pour les listes d'éléments
     20                                       // liste de valeurs
     21                                       // champ texte : "cle1,val1\ncle2,val2"
     22                                       // ou tableau : array("cle1"=>"val1","cle2"=>"val2")
     23                */
     24
     25
     26        var $verifier         = false;   // Fonction de vérification du plugin API verifier
    1127        var $verifier_options = array(); // Fonction de vérification du plugin API verifier
    12         var $rechercher = false; // ce champ entre-t-il dans le moteur de recherche ?
    13         var $enum = ''; // liste de valeurs (champ texte : "cle1,val1\ncle2,val2" ou tableau : array("cle1"=>"val1","cle2"=>"val2") )
    14         var $type = ''; // type (ligne/bloc/etc)
    15         var $sql = ''; // declaration sql (text NOT NULL DEFAULT '')
    16         var $traitements = ''; // _TRAITEMENT_RACCOURCIS ,  _TRAITEMENT_TYPO ou autre declaration pour la $table_des_traitements
     28       
     29        var $rechercher       = false;   // ce champ entre-t-il dans le moteur de recherche ?
     30        var $traitements      = '';      // _TRAITEMENT_RACCOURCIS , 
     31                                         // _TRAITEMENT_TYPO ou autre declaration pour la $table_des_traitements
    1732
    1833        var $_id = ''; // identifiant de ce champ extra
     
    2136        var $_type = ''; // rubrique
    2237        var $_objet = ''; // rubriques
    23         var $_table_sql = ''; // spip_rubriques
    2438
    2539
    26         var $saisie_parametres = array();
    27                 /*
    28                     peut indiquer tout parametre d'une #SAISIE, tel que :
    29                         explication => ''; // message d'explication !
    30                         attention => ''; // message d'attention !
    31                         class => ""; // classes CSS     sur l'element
    32                         li_class => ""; // classes CSS sur l'element parent LI
    33                 */
    3440
    3541
     
    5056                $this->_type      = objet_type(table_objet($this->table)); // article
    5157                $this->_objet     = table_objet($this->_type); // articles
    52                 $this->_table_sql = table_objet_sql($this->table); // spip_articles
    5358               
    5459                // calculer l'id du champ extra
     
    7378                $extra = array();
    7479                foreach ($this as $cle=>$val) {
    75                         if ($cle[0]!=='_') {
     80                        if ($cle[0] !== '_') {
    7681                                $extra[$cle] = $val;
    7782                        }
  • _plugins_/champs_extras/core/trunk/inc/cextras_gerer.php

    r49098 r49107  
    2626        $objets = array();
    2727        foreach(lister_tables_objets_sql() as $table => $desc) {
    28                 $objets[ $desc['type'] ] = $desc['texte_objets'];
     28                $objets[ $table ] = _T($desc['texte_objets']);
    2929        }
    3030        return $objets;
     
    7878                               
    7979        // on recupere juste les differentes tables a mettre a jour
    80         $tables = array();
     80        $tables_modifiees = array();
    8181        foreach ($champs as $c){
    82                 if ($table = $c->_table_sql) {
    83                         $tables[$table] = $table;
     82                if ($table = $c->table) {
     83                        $tables_modifiees[$table] = $table;
    8484                } else {
    8585                        // ici on est bien ennuye, vu qu'on ne pourra pas creer ce champ.
     
    8989        }       
    9090
    91         if (!$tables) {
     91        if (!$tables_modifiees) {
    9292                return false;
    9393        }
    9494       
    95        
    96         // on met a jour les tables trouvees
    97         // recharger les tables principales et auxiliaires
    98 /*
    99         include_spip('base/serial');
    100         include_spip('base/auxiliaires');
    101         global $tables_principales, $tables_auxiliaires;
    102         base_serial($tables_principales);
    103         base_auxiliaires($tables_auxiliaires);
    104 */
    105        
    106         // inclure les champs extras declares ALORS que le pipeline
    107         // n'est pas encore actif : important lorsqu'on active
    108         // en meme temps CE2 et un plugin dependant
    109         // et non l'un apres l'autre
    110 /*
    111         if (!defined('_CHAMPS_EXTRAS_DECLARES')) {
    112                 include_spip('base/cextras');
    113                 $tables_principales = cextras_declarer_tables_principales($tables_principales);
    114         }
    115 */
     95        $tables = lister_tables_objets_sql();
     96        $tables = array_intersect_key($tables, $tables_modifiees);
     97        foreach ($champs as $c) {
     98                if (!isset($tables[$c->table]['field'][$c->champ])) {
     99                        $tables[$c->table]['field'][$c->champ] = $c->sql;
     100                }
     101        };
     102       
     103
    116104        // executer la mise a jour
    117105        include_spip('base/create');
    118         maj_tables($tables);
     106        foreach ($tables as $table => $desc) {
     107                creer_ou_upgrader_table($table, $desc, true, true);
     108        }
    119109
    120110        // pour chaque champ a creer, on verifie qu'il existe bien maintenant !
     
    156146        // on efface chaque champ trouve
    157147        foreach ($champs as $c){
    158                 if ($table = $c->_table_sql and $c->champ and $c->sql) {
     148                if ($table = $c->table and $c->champ and $c->sql) {
    159149                        sql_alter("TABLE $table DROP $c->champ");
    160150                }
  • _plugins_/champs_extras/interface/trunk/formulaires/editer_champ_extra.html

    r49091 r49107  
    2727                                explication=<:iextras:precisions_pour_label:>,
    2828                                obligatoire=oui})]
    29                         [(#SAISIE{selection,type,
    30                                 label=<:iextras:label_type:>,
     29                        [(#SAISIE{selection,saisie,
     30                                label=<:iextras:label_saisie:>,
    3131                                obligatoire=oui,
    32                                 explication=<:iextras:precisions_pour_type:>,
     32                                explication=<:iextras:precisions_pour_saisie:>,
    3333                                datas=[(#VAL|cextras_types_formulaires)]})]
    3434                               
     
    36361,valeur 1
    37372,valeur 2"}
    38                         [(#SAISIE{textarea,enum,
    39                                 label=<:iextras:label_enum:>,
    40                                 explication=<:iextras:precisions_pour_enum:>,
     38                        [(#SAISIE{textarea,datas,
     39                                label=<:iextras:label_datas:>,
     40                                explication=<:iextras:precisions_pour_datas:>,
    4141                                rows=3,
    4242                                defaut=#GET{defaut}})]
  • _plugins_/champs_extras/interface/trunk/formulaires/editer_champ_extra.php

    r49091 r49107  
    1919        if (!$valeurs['sql']) $valeurs['sql'] = "text NOT NULL DEFAULT ''";
    2020
    21         if (!$valeurs['type']) {
    22                 $valeurs['type'] = "ligne";
     21        if (!$valeurs['saisie']) {
     22                $valeurs['saisie'] = "input";
    2323        }
    2424       
     
    3232               
    3333                $valeurs = array_merge($valeurs, $extra->toArray());
    34                 // compatibilite le temps de migrer vers cextras 1.4.0
    35                 if (isset($valeurs['precisions']) and $valeurs['precisions']) {
    36                         $valeurs['saisie_parametres']['explication'] = $valeurs['precisions'];
    37                 }
    3834
    3935                // chaque saisie_parametres devient un parametre a charger
     
    5450       
    5551        // pas de champ vide
    56         foreach(array('champ', 'table', 'type', 'label', 'sql') as $c) {
     52        foreach(array('champ', 'table', 'saisie', 'label', 'sql') as $c) {
    5753                if (!$extra[$c]) {
    5854                        $erreurs[$c] = _T('iextras:veuillez_renseigner_ce_champ');
     
    9995        // dans un tableau specifique
    10096        $extra['saisie_parametres'] = array();
    101         foreach (array('explication', 'attention', 'class', 'li_class') as $p) {
     97        foreach (array('explication', 'attention', 'class', 'li_class', 'datas') as $p) {
    10298                $extra['saisie_parametres'][$p] = $extra[$p];
    10399                unset($extra[$p]);
     
    159155        $extra = array();
    160156        foreach(array(
    161                 'champ', 'table', 'type',
     157                'champ', 'table', 'saisie',
    162158                'label', 'sql',
    163159                'traitements',
    164                 // 'precisions',
    165160                'obligatoire',
    166                 'enum', 'rechercher',
     161                'datas',
     162                'rechercher',
    167163                'explication', 'attention', 'class', 'li_class'
    168164        ) as $c) {
  • _plugins_/champs_extras/interface/trunk/inc/iextras.php

    r49093 r49107  
    1313                // reinitialiser aucazou les valeurs de tables
    1414                foreach($extras as $e) {
    15                         if (!$e->_table_sql) {
    16                                 $e->definir(); // va recreer les infos des tables/objet/type
     15                        if (!$e->_objet) {
     16                                $e->definir(); // va recreer les infos des objet/type
    1717                        }
    1818                }
  • _plugins_/champs_extras/interface/trunk/lang/iextras_fr.php

    r35291 r49107  
    3535                                                mais ne sont pas d&eacute;clar&eacute;s (par un plugin ou un jeu de squelettes), vous
    3636                                                pouvez demander &agrave; ce plugin de les g&eacute;rer. Ces champs, s'il y en a,
    37                                                 apparaissent dans un cadre «Liste des champs pr&eacute;sents non g&eacute;r&eacute;s».",               
     37                                                apparaissent dans un cadre «Liste des champs pr&eacute;sents non g&eacute;r&eacute;s».",       
     38        'info_saisie' => 'Saisie :',   
    3839                               
    3940        //L
     
    4142        'label_class' => 'Classes CSS',
    4243        'label_li_class' => 'Classes CSS du &lt;li&gt; parent',
    43         'label_enum' => 'Liste de valeurs',
     44        'label_datas' => 'Liste de valeurs',
    4445        'label_label' => 'Label de la saisie',
    4546        'label_obligatoire' => 'Champ obligatoire&nbsp;?',
     
    5051        'label_table' => 'Objet',
    5152        'label_traitements' => 'Traitements automatiques',
    52         'label_type' => 'Type de saisie',
     53        'label_saisie' => 'Type de saisie',
    5354        'legend_declaration' => 'D&eacute;claration',
    5455        'legend_options_techniques' => 'Options techniques',
     
    6364                s&eacute;par&eacute;es par un espace. Exemple : "haut" pour avoir toute la
    6465                largeur sur le formulaire',     
    65         'precisions_pour_enum' => 'Certains types de champ demandent une liste des valeurs accept&eacute;es&nbsp;: indiquez-en une par ligne, suivie d\'une virgule et d\'une description. Une ligne vide pour la valeur par d&eacute;faut. La description peut &ecirc;tre une cha&icirc;ne de langue.',
     66        'precisions_pour_datas' => 'Certains types de champ demandent une liste des valeurs accept&eacute;es&nbsp;: indiquez-en une par ligne, suivie d\'une virgule et d\'une description. Une ligne vide pour la valeur par d&eacute;faut. La description peut &ecirc;tre une cha&icirc;ne de langue.',
    6667        'precisions_pour_label' => 'Peut &ecirc;tre une cha&icirc;ne de langue &laquo;plugin:chaine&raquo;.',
    6768        'precisions_pour_explication' => 'Vous pouvez donner plus d\'informations concernant la saisie.
     
    7172                Peut &ecirc;tre une cha&icirc;ne de langue &laquo;plugin:chaine&raquo;.',
    7273        'precisions_pour_rechercher' => 'Inclure ce champ dans le moteur de recherche ?',
    73         'precisions_pour_type' => 'Afficher une saisie de type :',
     74        'precisions_pour_saisie' => 'Afficher une saisie de type :',
    7475        'precisions_pour_traitements' => 'Appliquer automatiquement un traitement
    7576                pour la balise #NOM_DU_CHAMP r&eacute;sultante :',
  • _plugins_/champs_extras/interface/trunk/prive/objets/contenu/champs_extras.html

    r49098 r49107  
    1414                                [(#VALEUR{champ})]
    1515                                [<small>&mdash; (#VALEUR{label})</small>]
    16                                 [(type: <tt>(#VALEUR{type})</tt>)]
     16                                [(<:iextras:info_saisie:> <tt>(#VALEUR{saisie})</tt>)]
    1717                                <ul class="actions">
    1818                                [(#TOTAL_BOUCLE|>{1}|oui)
Note: See TracChangeset for help on using the changeset viewer.