source: spip-zone/_plugins_/pensebetes/formulaires/editer_pensebete.php @ 119120

Last change on this file since 119120 was 119120, checked in by vincent.callies@…, 17 months ago

un traitement CVT qui permette l'association d'objets

File size: 7.7 KB
Line 
1<?php
2/**
3 * Gestion du formulaire de d'édition de pensebete
4 *
5 * @plugin Pensebetes
6 * @copyright  2019
7 * @author     Vincent CALLIES
8 * @licence    GNU/GPL
9 * @package SPIP\Pensebetes\Formulaires
10 */
11
12if (!defined("_ECRIRE_INC_VERSION")) return;
13
14include_spip('inc/actions');
15include_spip('inc/editer');
16
17/**
18 * Chargement des valeurs de SAISIES
19 *
20 * Aide à la création du formulaire avec le plugin SAISIES
21 *
22 * @param string $icone_objet
23 *     pour afficher si nécessaire l'icône de l'objet auquel le pense-bête sera lié
24 *
25 */
26function mes_saisies_pensebete($icone_objet='') {
27
28$mes_saisies = array(
29  array( // le fieldset
30    'saisie' => 'fieldset',
31    'options' => array(
32      'nom' => 'le_pensebete',
33      'label' => _T('pensebete:info_le_pensebete'),
34      'icone' => 'pensebete-24',
35    ),
36    'saisies' => array( // les champs dans le fieldset
37       array( // champ id_pensebete (numéro unique du pense-bête)
38          'saisie' => 'hidden',
39          'options' => array(
40            'nom' => 'id_pensebete',
41           )
42      ),
43       array( // champ id_donneur (numéro identification auteur du pense-bête)
44          'saisie' => 'hidden',
45          'options' => array(
46             'nom' => 'id_donneur',
47           )
48      ),
49        array( // champ date (date de création du pense-bête)
50          'saisie' => 'hidden',
51          'options' => array(
52            'nom' => 'date',
53           )
54      ),
55        array( // champ associer_objet (A-t-on demandé que ce pense-bête soit associé à un objet )
56          'saisie' => 'hidden',
57          'options' => array(
58             'nom' => 'associer_objet',
59           )
60      ),
61        array( // champ id_receveur (numéro identification de l'auteur destinataire du pense-bête)
62          'saisie' => 'auteurs',
63          'options' => array(
64             'nom' => 'id_receveur',
65            'label' => _T('pensebete:label_receveur'),
66             'obligatoire'=>'oui',
67           )
68      ),
69      array( // champ titre : ligne de texte
70          'saisie' => 'input',
71          'options' => array(
72            'nom' => 'titre',
73            'label' => _T('pensebete:label_titre'),
74            'maxlength' => 17, // un titre court
75          ),
76                   'verifier' => array(
77                        'type' => 'taille',
78                        'options' => array ('min' => 0, 'max' => 17),
79                )
80     ),
81     array( // champ texte : un bloc de texte
82          'saisie' => 'textarea',
83          'options' => array(
84            'nom' => 'texte',
85            'label' => _T('pensebete:label_texte'),
86            'rows'=>3,'cols'=>60,'longueur_max'=>110, // un texte court
87           ),
88                   'verifier' => array(
89                        'type' => 'taille',
90                        'options' => array ('min' => 0, 'max' => 110)
91                ),
92      ),
93  ),
94 ),
95  array( // le fieldset
96    'saisie' => 'fieldset',
97    'options' => array(
98      'afficher_si'=> '@associer_objet@ != ""',
99      'nom' => 'lassociation',
100      'label' => _T('pensebete:info_lassociation'),
101      'icone' => $icone_objet,
102    ),
103    'saisies' => array( // les champs dans le second fieldset
104  array( // hors fieldset : association
105    'saisie' => 'oui_non',
106    'options' => array(
107      'nom' => 'c_associe',
108      'label' => _T('pensebete:texte_associer_pensebete'),
109'valeur_oui' => 'oui', 
110'valeur_non' => 'non',
111         )
112    ),
113   )
114  )
115);
116
117  return $mes_saisies;
118}
119
120
121/**
122 * Chargement du formulaire d'édition de pensebete
123 *
124 * Déclarer les champs postés et y intégrer les valeurs par défaut
125 *
126 * @param string $associer_objet
127 *     Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
128 *     tel que 'article|3'
129 * @uses formulaires_editer_objet_charger()
130 * @uses mes_saisies_pensebete()
131 *
132 */
133function formulaires_editer_pensebete_charger_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
134        $valeurs = formulaires_editer_objet_charger('pensebete',$id_pensebete,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
135
136        // Si nouveau et titre dans l'url : fixer le titre (à 17 caractères)
137        if ($id_pensebete == 'oui'
138                and strlen($titre = _request('titre'))
139        ) {
140                $valeurs['titre'] = substr ($titre,0,16);
141        }
142
143        // A-t-on demandé à ce que le pense-bête soit associé à un objet éditorial ?
144        if ($associer_objet) {
145                $valeurs['associer_objet']=$associer_objet;
146                list($objet, $id_objet) = explode('|', $associer_objet);
147                $icone_objet=chemin_image($objet);
148                $valeurs['c_associe']='oui';
149        } else
150                $valeurs['c_associe']='non';
151
152        // s'il n'y a pas d'id_donneur, donner l'id de l'auteur
153        if (empty($valeurs['id_donneur']))
154                $valeurs['id_donneur']=$GLOBALS['visiteur_session']['id_auteur'];
155        $valeurs['_mes_saisies'] = mes_saisies_pensebete($icone_objet);
156
157        return $valeurs;
158}
159
160/**
161 * Identifier le formulaire en faisant abstraction des parametres qui ne representent pas l'objet edite
162 */
163function formulaires_editer_pensebete_identifier_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
164        return serialize(array(intval($id_pensebete), $associer_objet));
165}
166
167/**
168 * Vérification du formulaire d'édition de pensebete
169 *
170 * @uses formulaires_editer_objet_verifier()
171 * @uses saisies_verifier()
172 *
173 */
174function formulaires_editer_pensebete_verifier_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
175
176        $erreurs = formulaires_editer_objet_verifier('pensebete', $id_pensebete);
177
178        // on va chercher le pipeline saisies_verifier() dans son fichier
179        include_spip('inc/saisies');
180 
181        // on charge les saisies
182        $mes_saisies = mes_saisies_pensebete();
183 
184        // saisies_verifier retourne un tableau des erreurs s'il y en a, sinon traiter() prend le relais
185        $erreurs = saisies_verifier($mes_saisies);
186
187        return $erreurs;
188}
189
190/**
191 * Traitement du formulaire d'édition de pensebete
192 *
193 * Le traitement effectue une mise à zéro de l'id_auteur pour éviter des associations considérées comme inutiles.
194 *
195 * @uses formulaires_editer_objet_traiter()
196 * @uses objet_associer()
197 *
198 */
199function formulaires_editer_pensebete_traiter_dist($id_pensebete='new', $id_rubrique=0, $retour='', $associer_objet, $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
200        // éviter que l'auteur soit associé au pense-bête.
201        set_request('id_auteur','');
202       
203        // rompre l'association si nécessaire           
204        if (_request('c_associe')=='non'){
205                set_request('associer_objet','');
206        } else { // on garde la donnée de redirection s'il y a une association
207                $redirect=_request('redirect');
208        }
209
210        // on traite les données
211        $retours = formulaires_editer_objet_traiter('pensebete',_request('id_pensebete'),$id_parent,$lier_trad,_request('retour'),_request('config_fonc'),_request('row'),_request('hidden'));
212       
213        // associer le pensebete à un objet
214        if (_request('associer_objet') AND $id_pensebete=$retours['id_pensebete']) {                   
215                if (intval(_request('associer_objet'))) {
216                                // compat avec l'appel de la forme ajouter_id_article
217                                $objet = 'article';
218                                $id_objet = intval(_request('associer_objet'));
219                } else {
220                                list($objet, $id_objet) = explode('|', _request('associer_objet'));
221                }
222                if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
223                        include_spip('action/editer_liens');
224                        objet_associer( array('pensebete'=>$id_pensebete), array($objet=>$id_objet) );
225                        // rediriger vers l'objet
226                        if (isset($redirect)) {
227                                $retours['redirect'] = parametre_url($redirect, 'id_lien_ajoute', $id_pensebete, '&');
228                        }
229                        return $retours;
230                }
231                else
232                        return array('message_erreur'=>_T('pensebete:erreur_association'));
233        } // si remord par rapport à l'association à l'objet, rediriger vers le pense-bête
234        elseif (_request('c_associe')=='non')
235                $retours['redirect']=generer_url_ecrire('pensebete','id_pensebete='.$retours['id_pensebete']);
236
237        return $retours;       
238}
239
Note: See TracBrowser for help on using the repository browser.