source: spip-zone/_plugins_/commandes/trunk/formulaires/dater_commande.php @ 81704

Last change on this file since 81704 was 81704, checked in by tcharlss@…, 5 years ago

Remaniement de l'affichage des dates sur la fiche d'une commande :

  • Au lieu d'afficher les dates comme des champs de texte, on les affiche par le biais d'un formulaire de date (basé sur le formulaire dater de SPIP).

Avantage : les dates sont plus lisibles, c'est plus raccord avec l'affichage des dates des autres objets éditoriaux, et c'est plus précis (on peut modifier l'heure et les minutes).
On laisse ces champs de date dans le formulaire d'édition d'une commande au cas où, même s'il est préférable d'utiliser les formulaires dédiés.

incrémentation de z pour les derniers commits.

File size: 4.0 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4
5include_spip('formulaires/dater');
6
7/**
8 * Chargement
9 *
10 * @param integer $id_commande
11 *      identifiant de la commande
12 * @param string $type_date
13 *      creation|paiement|envoi
14 * @param string $retour
15 *      adresse de redirection
16 * @return Array
17 */
18function formulaires_dater_commande_charger_dist($id_commande, $type_date='creation', $retour=''){
19
20        if (!intval($id_commande))
21                return false;
22
23        $table = table_objet('commande');
24        $trouver_table = charger_fonction('trouver_table','base');
25        $desc = $trouver_table($table);
26
27        if (!$desc)
28                return false;
29
30        // date, date_paiement, date_envoi
31        $champ_date = ($type_date=='creation') ? 'date' : 'date_'.$type_date;
32        $label = ($type_date=='creation') ? 'date_commande_label' : 'date_'.$type_date.'_label';
33
34        if (!isset($desc['field'][$champ_date]))
35                return false;
36
37        $valeurs = array(
38                'champ_date'=>$champ_date,
39                'id'=>$id_commande,
40                'type_date'=>$type_date
41        );
42
43        $select = "$champ_date as date";
44        $row = sql_fetsel($select, $desc['table'], "id_commande=".intval($id_commande));
45
46        $valeurs['editable'] = autoriser('dater','commande',$id_commande,null);
47
48        if ($regs = recup_date($row['date'], false)) {
49                $annee = $regs[0];
50                $mois = $regs[1];
51                $jour = $regs[2];
52                $heure = $regs[3];
53                $minute = $regs[4];
54        }
55
56        $valeurs['afficher_'.$champ_date] = $row['date'];
57        $valeurs[$champ_date.'_jour'] = dater_formater_saisie_jour($jour,$mois,$annee);
58        $valeurs[$champ_date.'_heure'] = "$heure:$minute";
59
60        $valeurs['_label_date'] = _T('commandes:'.$label);
61        $valeurs['_saisie_en_cours'] = (_request($champ_date.'_jour')!==null) && (_request('annuler')==null);
62
63        return $valeurs;
64}
65
66/**
67 * Identifier le formulaire en faisant abstraction des parametres qui
68 * ne representent pas l'objet edite
69 */
70function formulaires_dater_commande_identifier_dist($id_commande, $type_date='creation', $retour=''){
71        return serialize(array($id_commande));
72}
73
74/**
75 * Verification avant traitement
76 *
77 * @param integer $id_commande
78 *      identifiant de la commande
79 * @param string $type_date
80 *      creation|paiement|envoi
81 * @param string $retour
82 *      adresse de redirection
83 * @return Array Tableau des erreurs
84 */
85function formulaires_dater_commande_verifier($id_commande, $type_date='creation', $retour=''){
86        $erreurs = array();
87
88        $champ_date = ($type_date=='creation') ? 'date' : 'date_'.$type_date;
89
90        if ($v=_request($champ_date."_jour") AND !dater_recuperer_date_saisie($v))
91                $erreurs[$champ_date] = _T('format_date_incorrecte');
92        elseif ($v=_request($champ_date."_heure") AND !dater_recuperer_heure_saisie($v))
93                $erreurs[$champ_date] = _T('format_heure_incorrecte');
94
95        /*if (intval(_request($champ_date."_jour"))==0)
96                $erreurs[$champ_date] = _T('info_obligatoire');*/
97
98        return $erreurs;
99}
100
101/**
102 * Traitement
103 *
104 * @param integer $id_commande
105 *      identifiant de la commande
106 * @param string $type_date
107 *      creation|paiement|envoi
108 * @param string $retour
109 *      adresse de redirection
110 * @return Array
111 */
112function formulaires_dater_commande_traiter_dist($id_commande, $type_date='creation', $retour=''){
113        $res = array('editable'=>' ');
114
115        if (_request('changer')){
116                $table = table_objet('commande');
117                $trouver_table = charger_fonction('trouver_table','base');
118                $desc = $trouver_table($table);
119
120                if (!$desc)
121                        return array('message_erreur'=>_L('erreur')); #impossible en principe
122
123                // date, date_paiement, date_envoi
124                $champ_date = ($type_date=='creation') ? 'date' : 'date_'.$type_date;
125
126                $set = array();
127
128                if (!$d = dater_recuperer_date_saisie(_request($champ_date.'_jour')))
129                        $d = array(date('Y'),date('m'),date('d'));
130                if (!$h = dater_recuperer_heure_saisie(_request($champ_date.'_heure')) or intval(_request($champ_date.'_jour'))==0)
131                        $h = array(0,0);
132
133                // déjouer le formatage auto
134                if (intval($d[0]) == 9000) $d[0] = 0;
135
136                $set[$champ_date] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]);
137
138                include_spip('action/editer_objet');
139                objet_modifier('commande', $id_commande, $set);
140        }
141
142        if ($retour)
143                $res['redirect'] = $retour;
144
145        set_request($champ_date.'_jour');
146        set_request($champ_date.'_heure');
147
148        return $res;
149}
150
151?>
Note: See TracBrowser for help on using the repository browser.