Changeset 90519 in spip-zone


Ignore:
Timestamp:
Jun 25, 2015, 3:53:57 PM (4 years ago)
Author:
cedric@…
Message:

un bouton 'vider le panier' pour permettre de vider le panier. Il peut etre masque en css si on en veut pas. Attention, cela oblige a rajouter une premiere occurence du bouton recalculer en offscreen pour que le return sur une quantite recalcule bien le panier et le vide pas. Il faut avoir une class css offscreen ou over definies, c'est le plus souvent le cas, notamment dans la dist

Location:
_plugins_/paniers/trunk/formulaires
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/paniers/trunk/formulaires/panier.html

    r90517 r90519  
    4949                        <p class="boutons">
    5050                                <span class="image_loading">&nbsp;</span>
     51                                <button class="submit over offscreen" type="submit" name="recalcul" value="1"><:paniers:panier_recalculer:></button>
     52                                <button class="submit vider btn-link left" type="submit" name="vider" value="1"><:paniers:vider_le_panier:></button>
    5153                                <button class="submit recalcul" type="submit" name="recalcul" value="1"><:paniers:panier_recalculer:></button>
    5254                        </p>
  • _plugins_/paniers/trunk/formulaires/panier.php

    r90509 r90519  
    2121function formulaires_panier_verifier($id_panier=0){
    2222        $erreurs = array();
    23        
    24         $quantites = _request('quantites');
    25        
    26         if (is_array($quantites)){
    27                 foreach ($quantites as $objet => $objets_de_ce_type){
    28                         foreach ($objets_de_ce_type as $id_objet => $quantite){
    29                                 if (!is_numeric($quantite) or $quantite!=intval($quantite) or (is_numeric($quantite) and $quantite<0)){
    30                                         $erreurs['message_erreur'] = _T('paniers:panier_erreur_quantites');
    31                                         $erreurs['quantites'][$objet][$id_objet] = 'erreur';
     23
     24        if (!_request('vider')){
     25                $quantites = _request('quantites');
     26
     27                if (is_array($quantites)){
     28                        foreach ($quantites as $objet => $objets_de_ce_type){
     29                                foreach ($objets_de_ce_type as $id_objet => $quantite){
     30                                        if (!is_numeric($quantite) or $quantite!=intval($quantite) or (is_numeric($quantite) and $quantite<0)){
     31                                                $erreurs['message_erreur'] = _T('paniers:panier_erreur_quantites');
     32                                                $erreurs['quantites'][$objet][$id_objet] = 'erreur';
     33                                        }
    3234                                }
    3335                        }
    3436                }
    3537        }
    36        
     38
    3739        return $erreurs;
    3840}
     
    4446        // On commence par chercher le panier du visiteur actuel s'il n'est pas donné
    4547        if (!$id_panier) $id_panier = session_get('id_panier');
    46        
    47         $quantites = _request('quantites');
    48         $ok = 0;
    49        
    50         if (is_array($quantites))
    51                 foreach($quantites as $objet => $objets_de_ce_type)
    52                         foreach($objets_de_ce_type as $id_objet => $quantite){
    53                                 $quantite = intval($quantite);
    54                                 // Si la quantite est 0, on supprime du panier
    55                                 if (!$quantite)
    56                                         $ok += sql_delete(
    57                                                 'spip_paniers_liens',
    58                                                 'id_panier = '.intval($id_panier).' and objet = '.sql_quote($objet).' and id_objet = '.intval($id_objet)
    59                                         );
    60                                 // Sinon on met à jour
    61                                 else{
    62                                         if ($quantite!=sql_getfetsel("quantite","spip_paniers_liens",'id_panier = '.intval($id_panier).' and objet = '.sql_quote($objet).' and id_objet = '.intval($id_objet))){
    63                                                 $ok += sql_updateq(
     48
     49        if (_request('vider')){
     50                $supprimer_panier = charger_fonction("supprimer_panier","action");
     51                $supprimer_panier($id_panier);
     52        }
     53        else {
     54                $quantites = _request('quantites');
     55                $ok = 0;
     56
     57                if (is_array($quantites))
     58                        foreach($quantites as $objet => $objets_de_ce_type)
     59                                foreach($objets_de_ce_type as $id_objet => $quantite){
     60                                        $quantite = intval($quantite);
     61                                        // Si la quantite est 0, on supprime du panier
     62                                        if (!$quantite)
     63                                                $ok += sql_delete(
    6464                                                        'spip_paniers_liens',
    65                                                         array('quantite' => $quantite),
    6665                                                        'id_panier = '.intval($id_panier).' and objet = '.sql_quote($objet).' and id_objet = '.intval($id_objet)
    6766                                                );
     67                                        // Sinon on met à jour
     68                                        else{
     69                                                if ($quantite!=sql_getfetsel("quantite","spip_paniers_liens",'id_panier = '.intval($id_panier).' and objet = '.sql_quote($objet).' and id_objet = '.intval($id_objet))){
     70                                                        $ok += sql_updateq(
     71                                                                'spip_paniers_liens',
     72                                                                array('quantite' => $quantite),
     73                                                                'id_panier = '.intval($id_panier).' and objet = '.sql_quote($objet).' and id_objet = '.intval($id_objet)
     74                                                        );
     75                                                }
    6876                                        }
    6977                                }
    70                         }
    71        
    72         // Mais dans tous les cas on met la date du panier à jour
    73         sql_updateq(
    74                 'spip_paniers',
    75                 array('date'=>'NOW()'),
    76                 'id_panier = '.$id_panier
    77         );
    78        
    79         if ($ok){
    80                 $retours['message_ok'] = _T('paniers:panier_quantite_ok');
     78                // Mais dans tous les cas on met la date du panier à jour
     79                sql_updateq(
     80                        'spip_paniers',
     81                        array('date'=>'NOW()'),
     82                        'id_panier = '.$id_panier
     83                );
     84                if ($ok){
     85                        $retours['message_ok'] = _T('paniers:panier_quantite_ok');
     86                }
     87
    8188        }
    82        
     89
    8390        return $retours;
    8491}
Note: See TracChangeset for help on using the changeset viewer.