source: spip-zone/_plugins_/albums/trunk/formulaires/editer_album.php @ 87042

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

suite/bugfix r86554 : bon rechargement ajax

File size: 6.4 KB
Line 
1<?php
2/**
3 * Gestion du formulaire de d'édition d'un album
4 *
5 * @plugin     Albums
6 * @copyright  2014
7 * @author     Tetue, Charles Razack
8 * @licence    GNU/GPL
9 * @package    SPIP\Albums\Formulaires
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14include_spip('inc/actions');
15include_spip('inc/editer');
16
17/**
18 * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
19 *
20 * @param int|string $id_album
21 *     Identifiant de l'album. 'new' pour un nouvel album.
22 * @param string $retour
23 *     URL de redirection après le traitement
24 * @param string $associer_objet
25 *     Éventuel `objet|x` indiquant de lier l'album créé à cet objet,
26 *     tel que `article|3`
27 * @param int $lier_trad
28 *     Identifiant éventuel d'un album source d'une traduction
29 * @param string $config_fonc
30 *     Nom de la fonction ajoutant des configurations particulières au formulaire
31 * @param array $row
32 *     Valeurs de la ligne SQL de l'album, si connu
33 * @param string $hidden
34 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
35 * @return string
36 *     Hash du formulaire
37 */
38function formulaires_editer_album_identifier_dist($id_album='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
39        return serialize(array(intval($id_album), $associer_objet));
40}
41
42/**
43 * Chargement du formulaire d'édition d'un album
44 *
45 * Déclarer les champs postés et y intégrer les valeurs par défaut
46 *
47 * @uses formulaires_editer_objet_charger()
48 *
49 * @param int|string $id_album
50 *     Identifiant de l'album. 'new' pour un nouvel album.
51 * @param string $retour
52 *     URL de redirection après le traitement
53 * @param string $associer_objet
54 *     Éventuel `objet|x` indiquant de lier le album créé à cet objet,
55 *     tel que `article|3`
56 * @param int $lier_trad
57 *     Identifiant éventuel d'un album source d'une traduction
58 * @param string $config_fonc
59 *     Nom de la fonction ajoutant des configurations particulières au formulaire
60 * @param array $row
61 *     Valeurs de la ligne SQL de l'album, si connu
62 * @param string $hidden
63 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
64 * @return array
65 *     Environnement du formulaire
66 */
67function formulaires_editer_album_charger_dist($id_album='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
68        $valeurs = formulaires_editer_objet_charger('album',$id_album,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
69
70        // lorsqu'on créé un album associé à un objet...
71        if (
72                !intval($id_album)
73                AND $associer_objet
74                AND list($objet, $id_objet) = explode('|', $associer_objet)
75        ){
76                // le publier d'office
77                $valeurs['statut'] = 'publie';
78                // donner un titre par défaut selon la configuration
79                include_spip('inc/config');
80                if (lire_config('albums/utiliser_titre_defaut') == 'on'){
81                        $valeurs['titre_defaut'] = generer_info_entite($id_objet, $objet, 'titre');
82                }
83        }
84
85        return $valeurs;
86
87}
88
89/**
90 * Vérifications du formulaire d'édition d'un album
91 *
92 * Vérifier les champs postés et signaler d'éventuelles erreurs
93 *
94 * @uses formulaires_editer_objet_verifier()
95 *
96 * @param int|string $id_album
97 *     Identifiant de l'album. 'new' pour un nouvel album.
98 * @param string $retour
99 *     URL de redirection après le traitement
100 * @param string $associer_objet
101 *     Éventuel `objet|x` indiquant de lier le album créé à cet objet,
102 *     tel que `article|3`
103 * @param int $lier_trad
104 *     Identifiant éventuel d'un album source d'une traduction
105 * @param string $config_fonc
106 *     Nom de la fonction ajoutant des configurations particulières au formulaire
107 * @param array $row
108 *     Valeurs de la ligne SQL de l'album, si connu
109 * @param string $hidden
110 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
111 * @return array
112 *     Tableau des erreurs
113 */
114function formulaires_editer_album_verifier_dist($id_album='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
115        return formulaires_editer_objet_verifier('album',$id_album,array());
116}
117
118/**
119 * Traitement du formulaire d'édition d'un album
120 *
121 * Traiter les champs postés
122 *
123 * @uses formulaires_editer_objet_traiter()
124 *
125 * @param int|string $id_album
126 *     Identifiant de l'album. 'new' pour un nouvel album.
127 * @param string $retour
128 *     URL de redirection après le traitement
129 * @param string $associer_objet
130 *     Éventuel `objet|x` indiquant de lier le album créé à cet objet,
131 *     tel que `article|3`
132 * @param int $lier_trad
133 *     Identifiant éventuel d'un album source d'une traduction
134 * @param string $config_fonc
135 *     Nom de la fonction ajoutant des configurations particulières au formulaire
136 * @param array $row
137 *     Valeurs de la ligne SQL de l'album, si connu
138 * @param string $hidden
139 *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
140 * @return array
141 *     Retours des traitements
142 */
143function formulaires_editer_album_traiter_dist($id_album='new', $retour='', $associer_objet='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
144
145        // traitements génériques
146        $res = formulaires_editer_objet_traiter('album',$id_album,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
147
148        // peupler le titre à posteriori s'il est vide lors de la création (création rapide d'un album)
149        if (!intval($id_album='new') AND !_request('titre') AND $res['id_album']){
150                objet_modifier("album",$res['id_album'],array('titre' => _T('album:info_nouvel_album')." "._T('info_numero_abbreviation').$res['id_album']));
151        }
152
153        // un lien a prendre en compte ?
154        if ($associer_objet AND $id_album = $res['id_album']) {
155                if (list($objet, $id_objet) = explode('|', $associer_objet)) {
156                        include_spip('action/editer_liens');
157                        objet_associer(array('album' => $id_album), array($objet => $id_objet));
158                        if (isset($res['redirect'])) {
159                                $res['redirect'] = ancre_url(parametre_url($res['redirect'],'id_album','','&'),'album'.$res['id_album']);
160                        }
161                }
162        }
163
164        // FIXME : cas particulier aux squelettes de l'espace privé
165        // Rechargement ajax en cas d'édition rapide sur place
166        if (!$res['redirect']){
167                $id_album = $res['id_album'];
168                $js = "if (window.jQuery) jQuery(function(){ajaxReload('albums');});";
169                $js = "<script type='text/javascript'>$js</script>";
170                if (isset($res['message_erreur']))
171                        $res['message_erreur'].= $js;
172                else
173                        $res['message_ok'] .= $js;
174        }
175
176        return $res;
177
178}
179
180
181?>
Note: See TracBrowser for help on using the repository browser.