source: spip-zone/_plugins_/fabrique/trunk/fabrique/formulaires/editer_objet.php.html @ 79328

Last change on this file since 79328 was 79328, checked in by marcimat@…, 7 years ago

Si une saisie date est présente, on crée le code de normalisation adéquat…
il faudrait mettre la dépendance au plugin verifier (si c'est pas déjà fait).

File size: 7.5 KB
Line 
1#PHP
2[(#INCLURE{fond=fabrique/entetes/php,env,
3        description=Gestion du formulaire de d'édition de #TYPE,
4        package=Formulaires})]
5
6include_spip('inc/actions');
7include_spip('inc/editer');
8[(#REM)
9
10        Y a t'il un champ de rubrique a prendre en compte ?
11
12][(#SET{id_rubrique,[(#OBJET|champ_present{id_rubrique})]})][    (#REM)
13][(#SET{id_rubrique_param,#GET{id_rubrique}|?{'$id_rubrique=0,'}})][     (#REM)
14][(#SET{id_rubrique_val,#GET{id_rubrique}|?{'$id_rubrique', "''"}})][    (#REM)
15
16        Y a t'il une association a prendre en compte ?
17
18][(#SET{associer,[(#OBJET|option_presente{vue_liens})]})][     (#REM)
19][(#SET{associer_param,#GET{associer}|?{"$associer_objet='',"}})][   (#REM)
20][(#SET{associer_val,#GET{associer}|?{'$associer_objet'}})][    (#REM)
21
22        Y a t'il des champs obligatoire a verifier ?
23        Il faut qu'il soit obligatoire et dispose d'une saisie
24
25][(#SET{obligatoires,[(#ENV{objet/champs}|champs_options_presentes{#LISTE{obligatoire,saisie},champ})]})][   (#REM)
26
27
28        Fonctions de chargement de l'objet
29
30
31]
32/**
33 * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
34 *
35 * @param int|string $#ID_OBJET
36 *     Identifiant du #TYPE. 'new' pour un nouveau #TYPE.[
37 * @param int $(#GET{id_rubrique}|?{id_rubrique})
38 *     Identifiant de la rubrique parente (si connue)]
39 * @param string $retour
40 *     URL de redirection après le traitement[
41 * @param string $(#GET{associer}|?{associer_objet})
42 *     Éventuel `objet|x` indiquant de lier le #TYPE créé à cet objet,
43 *     tel que `article|3`]
44 * @param int $lier_trad
45 *     Identifiant éventuel d'un #TYPE source d'une traduction
46 * @param string $config_fonc
47 *     Nom de la fonction ajoutant des configurations particulières au formulaire
48 * @param array $row
49 *     Valeurs de la ligne SQL du #TYPE, si connu
50 * @param string $hidden
51 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
52 * @return string
53 *     Hash du formulaire
54 */
55function formulaires_editer_[(#TYPE)]_identifier_dist($#ID_OBJET='new',[ (#GET{id_rubrique_param})] $retour='',[ (#GET{associer_param})] $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
56        return serialize(array(intval($#ID_OBJET)[, (#GET{associer_val})]));
57}
58
59/**
60 * Chargement du formulaire d'édition de #TYPE
61 *
62 * Déclarer les champs postés et y intégrer les valeurs par défaut
63 *
64 * @uses formulaires_editer_objet_charger()
65 *
66 * @param int|string $#ID_OBJET
67 *     Identifiant du #TYPE. 'new' pour un nouveau #TYPE.[
68 * @param int $(#GET{id_rubrique}|?{id_rubrique})
69 *     Identifiant de la rubrique parente (si connue)]
70 * @param string $retour
71 *     URL de redirection après le traitement[
72 * @param string $(#GET{associer}|?{associer_objet})
73 *     Éventuel `objet|x` indiquant de lier le #TYPE créé à cet objet,
74 *     tel que `article|3`]
75 * @param int $lier_trad
76 *     Identifiant éventuel d'un #TYPE source d'une traduction
77 * @param string $config_fonc
78 *     Nom de la fonction ajoutant des configurations particulières au formulaire
79 * @param array $row
80 *     Valeurs de la ligne SQL du #TYPE, si connu
81 * @param string $hidden
82 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
83 * @return array
84 *     Environnement du formulaire
85 */
86function formulaires_editer_[(#TYPE)]_charger_dist($#ID_OBJET='new',[ (#GET{id_rubrique_param})] $retour='',[ (#GET{associer_param})] $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
87        $valeurs = formulaires_editer_objet_charger('#TYPE',$#ID_OBJET,#GET{id_rubrique_val},$lier_trad,$retour,$config_fonc,$row,$hidden);
88        return $valeurs;
89}
90
91/**
92 * Vérifications du formulaire d'édition de #TYPE
93 *
94 * Vérifier les champs postés et signaler d'éventuelles erreurs
95 *
96 * @uses formulaires_editer_objet_verifier()
97 *
98 * @param int|string $#ID_OBJET
99 *     Identifiant du #TYPE. 'new' pour un nouveau #TYPE.[
100 * @param int $(#GET{id_rubrique}|?{id_rubrique})
101 *     Identifiant de la rubrique parente (si connue)]
102 * @param string $retour
103 *     URL de redirection après le traitement[
104 * @param string $(#GET{associer}|?{associer_objet})
105 *     Éventuel `objet|x` indiquant de lier le #TYPE créé à cet objet,
106 *     tel que `article|3`]
107 * @param int $lier_trad
108 *     Identifiant éventuel d'un #TYPE source d'une traduction
109 * @param string $config_fonc
110 *     Nom de la fonction ajoutant des configurations particulières au formulaire
111 * @param array $row
112 *     Valeurs de la ligne SQL du #TYPE, si connu
113 * @param string $hidden
114 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
115 * @return array
116 *     Tableau des erreurs
117 */
118function formulaires_editer_[(#TYPE)]_verifier_dist($#ID_OBJET='new',[ (#GET{id_rubrique_param})] $retour='',[ (#GET{associer_param})] $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
119<BOUCLE_si_saisie_date(CONDITION){si #ENV{objet/champs}|champs_saisie_presente{date}}>
120        $erreurs = formulaires_editer_objet_verifier('#TYPE',$#ID_OBJET[, (#GET{obligatoires}|ecrire_tableau_sinon_rien)]);
121        $verifier = charger_fonction('verifier', 'inc');
122
123        foreach ([(#ENV{objet/champs}|champs_saisie_presente{date, champ}|ecrire_tableau)] AS $champ)
124        {
125                $normaliser = null;
126                if ($erreur = $verifier(_request($champ), 'date', array('normaliser'=>'datetime'), $normaliser)) {
127                        $erreurs[$champ] = $erreur;
128                // si une valeur de normalisation a ete transmis, la prendre.
129                } elseif (!is_null($normaliser)) {
130                        set_request($champ, $normaliser);
131                // si pas de normalisation ET pas de date soumise, il ne faut pas tenter d'enregistrer ''
132                } else {
133                        set_request($champ, null);
134                }
135        }
136        return $erreurs;
137</BOUCLE_si_saisie_date>
138        return formulaires_editer_objet_verifier('#TYPE',$#ID_OBJET[, (#GET{obligatoires}|ecrire_tableau_sinon_rien)]);
139<//B_si_saisie_date>
140}
141
142/**
143 * Traitement du formulaire d'édition de #TYPE
144 *
145 * Traiter les champs postés
146 *
147 * @uses formulaires_editer_objet_traiter()
148 *
149 * @param int|string $#ID_OBJET
150 *     Identifiant du #TYPE. 'new' pour un nouveau #TYPE.[
151 * @param int $(#GET{id_rubrique}|?{id_rubrique})
152 *     Identifiant de la rubrique parente (si connue)]
153 * @param string $retour
154 *     URL de redirection après le traitement[
155 * @param string $(#GET{associer}|?{associer_objet})
156 *     Éventuel `objet|x` indiquant de lier le #TYPE créé à cet objet,
157 *     tel que `article|3`]
158 * @param int $lier_trad
159 *     Identifiant éventuel d'un #TYPE source d'une traduction
160 * @param string $config_fonc
161 *     Nom de la fonction ajoutant des configurations particulières au formulaire
162 * @param array $row
163 *     Valeurs de la ligne SQL du #TYPE, si connu
164 * @param string $hidden
165 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
166 * @return array
167 *     Retours des traitements
168 */
169function formulaires_editer_[(#TYPE)]_traiter_dist($#ID_OBJET='new',[ (#GET{id_rubrique_param})] $retour='',[ (#GET{associer_param})] $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
170        [(#GET{associer}|?{'$res =', 'return'})] formulaires_editer_objet_traiter('#TYPE',$#ID_OBJET,#GET{id_rubrique_val},$lier_trad,$retour,$config_fonc,$row,$hidden);[
171(#GET{associer}|oui)
172        // Un lien a prendre en compte ?
173        if ($associer_objet AND $#ID_OBJET = $res\['#ID_OBJET'\]) {
174                list($objet, $id_objet) = explode('|', $associer_objet);
175
176                if ($objet AND $id_objet AND autoriser('modifier', $objet, $id_objet)) {
177                        include_spip('action/editer_liens');
178                        objet_associer(array('#TYPE' => $#ID_OBJET), array($objet => $id_objet));
179                        if (isset($res\['redirect'\])) {
180                                $res\['redirect'\] = parametre_url ($res\['redirect'\], "id_lien_ajoute", $#ID_OBJET, '&');
181                        }
182                }
183        }
184        return $res;
185]
186}
187
188
189?>
190
Note: See TracBrowser for help on using the repository browser.