Changeset 87487 in spip-zone


Ignore:
Timestamp:
Feb 16, 2015, 6:42:40 PM (5 years ago)
Author:
tcharlss@…
Message:

Bugfix : le formulaire d'édition d'un produit refusait d'enregistrer quoi que ce soit.
Pfiou, j'ai cru que je trouverais jamais. C'était tout simplement lié au nom choisi pour la saisie du sélecteur de rubrique : id_secteur doit être un nom réservé ou un truc comme ça. Enfin bref, ça faisait tout planter. On renomme la saisie parent et on fait set_request('id_parent',$id_parent) tout à la fin.
On en profite pour ajouter du PHPDoc, ajouter les paramètres $lier_trad et cie, et un brin d'indentation par-ci par-là.

Incrémentation de z.

Location:
_plugins_/produits/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/produits/trunk/formulaires/editer_produit.php

    r80933 r87487  
    11<?php
     2/**
     3 * Gestion du formulaire de d'édition de produit
     4 *
     5 * @plugin     Produits
     6 * @copyright  2015
     7 * @author     Les Développements Durables
     8 * @licence    GNU/GPL
     9 * @package    SPIP\Produits\Formulaires
     10 */
    211
    312// Sécurité
     
    716include_spip('inc/editer');
    817
     18/**
     19 * Saisies du formulaire
     20 *
     21 * @param int|string $id_produit
     22 *     Identifiant du produit. 'new' pour un nouveau produit.
     23 * @param int $id_rubrique
     24 *     Identifiant de la rubrique parente (si connue)
     25 * @param string $retour
     26 *     URL de redirection après le traitement
     27 * @return array
     28 *     Saisies du formulaire
     29 */
    930function formulaires_editer_produit_saisies($id_produit='new', $id_rubrique=0, $retour=''){
    1031        $saisies = array(
     
    2950                        'saisie' => 'selecteur_rubrique',
    3051                        'options' => array(
    31                                 'nom' => 'id_parent',
     52                                'nom' => 'parent',
    3253                                'obligatoire' => 'oui',
    3354                                'label' => _T('produits:produit_champ_rubrique_label'),
     
    82103        );
    83104
    84     if (lire_config('produits/editer_ttc')) {
    85         $saisie_prix_ttc = array(
    86                     'saisie' => 'input',
    87                     'options' => array(
    88                             'nom' => 'prix_ttc',
    89                             'obligatoire' => 'oui',
    90                             'label' => _T('produits:produit_champ_prix_ttc_label'),
    91                             'defaut' => 0,
    92                     ),
    93                     'verifier' => array(
    94                             'type' => 'decimal'
    95                     )
    96             );
    97         $saisies = saisies_inserer($saisies,$saisie_prix_ttc,'prix_ht');
    98         $saisies = saisies_modifier($saisies,'prix_ht',array('options' => array('nouveau_type_saisie' => 'hidden')));
    99     }
    100 
    101     return $saisies;
    102 }
    103 
     105        if (lire_config('produits/editer_ttc')) {
     106                $saisie_prix_ttc = array(
     107                        'saisie' => 'input',
     108                        'options' => array(
     109                                'nom' => 'prix_ttc',
     110                                'obligatoire' => 'oui',
     111                                'label' => _T('produits:produit_champ_prix_ttc_label'),
     112                                'defaut' => 0,
     113                        ),
     114                        'verifier' => array(
     115                                'type' => 'decimal'
     116                        )
     117                );
     118                $saisies = saisies_inserer($saisies,$saisie_prix_ttc,'prix_ht');
     119                $saisies = saisies_modifier($saisies,'prix_ht',array('options' => array('nouveau_type_saisie' => 'hidden')));
     120        }
     121
     122        return $saisies;
     123}
     124
     125/**
     126 * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
     127 *
     128 * @param int|string $id_produit
     129 *     Identifiant du produit. 'new' pour un nouveau produit.
     130 * @param int $id_rubrique
     131 *     Identifiant de la rubrique parente (si connue)
     132 * @param string $retour
     133 *     URL de redirection après le traitement
     134 * @param int $lier_trad
     135 *     Identifiant éventuel d'un produit source d'une traduction
     136 * @param string $config_fonc
     137 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     138 * @param array $row
     139 *     Valeurs de la ligne SQL du produit, si connu
     140 * @param string $hidden
     141 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     142 * @return string
     143 *     Hash du formulaire
     144 */
     145function formulaires_editer_produit_identifier_dist($id_produit='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     146        return serialize(array(intval($id_produit)));
     147}
     148
     149/**
     150 * Chargement du formulaire d'édition de produit
     151 *
     152 * Déclarer les champs postés et y intégrer les valeurs par défaut
     153 *
     154 * @uses formulaires_editer_objet_charger()
     155 *
     156 * @param int|string $id_produit
     157 *     Identifiant du produit. 'new' pour un nouveau produit.
     158 * @param int $id_rubrique
     159 *     Identifiant de la rubrique parente (si connue)
     160 * @param string $retour
     161 *     URL de redirection après le traitement
     162 * @param int $lier_trad
     163 *     Identifiant éventuel d'un produit source d'une traduction
     164 * @param string $config_fonc
     165 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     166 * @param array $row
     167 *     Valeurs de la ligne SQL du produit, si connu
     168 * @param string $hidden
     169 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     170 * @return array
     171 *     Environnement du formulaire
     172 */
    104173function formulaires_editer_produit_charger($id_produit='new', $id_rubrique=0, $retour=''){
    105174        $config = lire_config('produits') ;
    106         // Si l'insertion est limité à une rubrique, on peut déjà la passer par defaut
     175
     176        // Si l'insertion est limitée à une rubrique, on peut déjà la passer par defaut
    107177        if($config['limiter_ajout'] && (count($config['limiter_ident_secteur']) == 1)) {
    108178                $id_rubrique = $config['limiter_ident_secteur'][0] ;
    109179        }
    110         $contexte = formulaires_editer_objet_charger('produit', $id_produit, $id_rubrique, 0, $retour, '');
     180        $contexte = formulaires_editer_objet_charger('produit',$id_produit,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
     181
    111182        //Si on a déjà le $id_produit il faut afficher sa rubrique!
    112183        if($id_produit>0) $id_rubrique=sql_getfetsel('id_rubrique','spip_produits',"id_produit=".sql_quote($id_produit));
    113         $contexte['id_parent'] = 'rubrique|'.($contexte['id_rubrique']?$contexte['id_rubrique']:$id_rubrique);
    114     //Calculer le prix TTC selon le contexte
    115     $taxe = $contexte['taxe'] ? $contexte['taxe'] : lire_config('produits/taxe', 0);
    116     $precision_ttc=lire_config('produits/precision_ttc',2);
    117     if(!is_int($precision_ttc)) { $precision_ttc = 0; }
    118     $contexte['prix_ttc'] = round($contexte['prix_ht'] * (1+$taxe),$precision_ttc);
     184        $contexte['parent'] = 'rubrique|'.($contexte['id_rubrique']?$contexte['id_rubrique']:$id_rubrique);
     185
     186        //Calculer le prix TTC selon le contexte
     187        $taxe = $contexte['taxe'] ? $contexte['taxe'] : lire_config('produits/taxe', 0);
     188        $precision_ttc=lire_config('produits/precision_ttc',2);
     189        if(!is_int($precision_ttc)) { $precision_ttc = 0; }
     190        $contexte['prix_ttc'] = round($contexte['prix_ht'] * (1+$taxe),$precision_ttc);
     191
    119192        unset($contexte['id_produit']);
    120193        unset($contexte['id_rubrique']);
     194
    121195        return $contexte;
    122196}
    123197
     198/**
     199 * Vérifications du formulaire d'édition de produit
     200 *
     201 * Vérifier les champs postés et signaler d'éventuelles erreurs
     202 *
     203 * @uses formulaires_editer_objet_verifier()
     204 *
     205 * @param int|string $id_produit
     206 *     Identifiant du produit. 'new' pour un nouveau produit.
     207 * @param int $id_rubrique
     208 *     Identifiant de la rubrique parente (si connue)
     209 * @param string $retour
     210 *     URL de redirection après le traitement
     211 * @param int $lier_trad
     212 *     Identifiant éventuel d'un produit source d'une traduction
     213 * @param string $config_fonc
     214 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     215 * @param array $row
     216 *     Valeurs de la ligne SQL du produit, si connu
     217 * @param string $hidden
     218 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     219 * @return array
     220 *     Tableau des erreurs
     221 */
    124222function formulaires_editer_produit_verifier($id_produit='new', $id_rubrique=0, $retour=''){
    125223        $erreurs = array();
    126224        $erreurs = formulaires_editer_objet_verifier('produit', $id_produit);
    127        
    128         $config = lire_config('produits') ;
     225        $config = lire_config('produits');
    129226        // Vérifier que la rubrique choisie se trouve dans les secteurs autorisés
    130227        if($config['limiter_ajout']) {
     
    135232                                $titres .= sql_getfetsel("titre", "spip_rubriques", "id_rubrique=" . intval($id_secteur))." / " ;
    136233                        }
    137                         $erreurs['id_parent'] .= _T("produits:secteurs_autorises", array('secteurs' => $titres));
     234                        $erreurs['parent'] .= _T("produits:secteurs_autorises", array('secteurs' => $titres));
    138235                }
    139236        }
     
    142239}
    143240
     241/**
     242 * Traitement du formulaire d'édition de produit
     243 *
     244 * Traiter les champs postés
     245 *
     246 * @uses formulaires_editer_objet_traiter()
     247 *
     248 * @param int|string $id_produit
     249 *     Identifiant du produit. 'new' pour un nouveau produit.
     250 * @param int $id_rubrique
     251 *     Identifiant de la rubrique parente (si connue)
     252 * @param string $retour
     253 *     URL de redirection après le traitement
     254 * @param int $lier_trad
     255 *     Identifiant éventuel d'un produit source d'une traduction
     256 * @param string $config_fonc
     257 *     Nom de la fonction ajoutant des configurations particulières au formulaire
     258 * @param array $row
     259 *     Valeurs de la ligne SQL du produit, si connu
     260 * @param string $hidden
     261 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
     262 * @return array
     263 *     Retours des traitements
     264 */
    144265function formulaires_editer_produit_traiter($id_produit='new', $id_rubrique=0, $retour=''){
    145266        set_request('id_parent', produits_id_parent());
    146     if (lire_config('produits/editer_ttc')) {
    147         $prix_ht = _request('prix_ttc') / (1+_request('taxe',lire_config('produits/taxe',0)));
    148         set_request('prix_ht',$prix_ht);
    149     }
    150         $retours = formulaires_editer_objet_traiter('produit',$id_produit,$id_rubrique,0,$retour);
     267        if (lire_config('produits/editer_ttc')) {
     268                $prix_ht = _request('prix_ttc') / (1+_request('taxe',lire_config('produits/taxe',0)));
     269                set_request('prix_ht',$prix_ht);
     270        }
     271        $retours = formulaires_editer_objet_traiter('produit',$id_produit,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
    151272        return $retours;
    152273}
    153274
     275/**
     276 * Fonction qui retourne l'identifiant de la rubrique choisie via le sélecteur de rubrique
     277 *
     278 * Le sélecteur retourne un tableau : `array('rubrique|10')`
     279 *
     280 * @return int
     281 *     Identifiant de la rubrique
     282 */
    154283function produits_id_parent() {
    155284        // On reformule l'id_parent
    156         $id_parent = _request('id_parent');
     285        $id_parent = _request('parent');
    157286        // La saisie retourne normalement un tableau, dans ce cas on considére
    158287        // la premiere valeur comme vrai parent (logique issue de polyhierarchie)
  • _plugins_/produits/trunk/paquet.xml

    r80849 r87487  
    22        prefix="produits"
    33        categorie="outil"
    4         version="1.0.0"
     4        version="1.0.1"
    55        etat="dev"
    66        compatibilite="[3.0.13;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.