8ca8c4996b426a79b919fe2ca0a6549bf9a0d2ea
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
14 * Gestion du formulaire d'édition d'un mot
16 * @package SPIP\Mots\Formulaires
18 if (!defined('_ECRIRE_INC_VERSION')) {
22 include_spip('inc/actions');
23 include_spip('inc/editer');
26 * Chargement du formulaire d'édition d'un mot
28 * @see formulaires_editer_objet_charger()
30 * @param int|string $id_mot
31 * Identifiant du mot. 'new' pour un nouveau mot.
32 * @param int $id_groupe
33 * Identifiant du groupe parent (si connu)
34 * @param string $retour
35 * URL de redirection après le traitement
36 * @param string $associer_objet
37 * Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
39 * @param string $dummy1 ?
40 * @param string $dummy2 ?
41 * @param string $config_fonc
42 * Nom de la fonction ajoutant des configurations particulières au formulaire
44 * Valeurs de la ligne SQL du mot, si connu
45 * @param string $hidden
46 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
48 * Environnement du formulaire
50 function formulaires_editer_mot_charger_dist(
57 $config_fonc = 'mots_edit_config',
61 $valeurs = formulaires_editer_objet_charger('mot', $id_mot, $id_groupe, '', $retour, $config_fonc, $row, $hidden);
62 if ($valeurs['id_parent'] && !$valeurs['id_groupe']) {
63 $valeurs['id_groupe'] = $valeurs['id_parent'];
66 if ($associer_objet) {
67 if (intval($associer_objet)) {
68 // compat avec l'appel de la forme ajouter_id_article
70 $id_objet = intval($associer_objet);
72 list($objet, $id_objet) = explode('|', $associer_objet);
75 $valeurs['table'] = ($associer_objet ?
table_objet($objet) : '');
77 // Si nouveau et titre dans l'url : fixer le titre
79 and strlen($titre = _request('titre'))
81 $valeurs['titre'] = $titre;
89 * Identifier le formulaire en faisant abstraction des paramètres qui
90 * ne representent pas l'objet edité
92 * @param int|string $id_mot
93 * Identifiant du mot. 'new' pour un nouveau mot.
94 * @param int $id_groupe
95 * Identifiant du groupe parent (si connu)
96 * @param string $retour
97 * URL de redirection après le traitement
98 * @param string $associer_objet
99 * Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
100 * tel que 'article|3'
101 * @param string $dummy1 ?
102 * @param string $dummy2 ?
103 * @param string $config_fonc
104 * Nom de la fonction ajoutant des configurations particulières au formulaire
106 * Valeurs de la ligne SQL du mot, si connu
107 * @param string $hidden
108 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
112 function formulaires_editer_mot_identifier_dist(
116 $associer_objet = '',
119 $config_fonc = 'mots_edit_config',
123 return serialize(array(intval($id_mot), $associer_objet));
127 * Choix par défaut des options de présentation
130 * Valeurs de la ligne SQL d'un mot, si connu
132 * Configuration pour le formulaire
134 function mots_edit_config($row) {
135 global $spip_ecran, $spip_lang;
137 $config = $GLOBALS['meta'];
138 $config['lignes'] = ($spip_ecran == 'large') ?
8 : 5;
139 $config['langue'] = $spip_lang;
140 $config['restreint'] = false;
146 * Vérification du formulaire d'édition d'un mot
148 * @see formulaires_editer_objet_verifier()
150 * @param int|string $id_mot
151 * Identifiant du mot. 'new' pour un nouveau mot.
152 * @param int $id_groupe
153 * Identifiant du groupe parent (si connu)
154 * @param string $retour
155 * URL de redirection après le traitement
156 * @param string $associer_objet
157 * Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
158 * tel que 'article|3'
159 * @param string $dummy1 ?
160 * @param string $dummy2 ?
161 * @param string $config_fonc
162 * Nom de la fonction ajoutant des configurations particulières au formulaire
164 * Valeurs de la ligne SQL du mot, si connu
165 * @param string $hidden
166 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
168 * Tableau des erreurs
170 function formulaires_editer_mot_verifier_dist(
174 $associer_objet = '',
177 $config_fonc = 'mots_edit_config',
182 $erreurs = formulaires_editer_objet_verifier('mot', $id_mot, array('titre'));
183 // verifier qu'un mot du meme groupe n'existe pas avec le meme titre
184 // la comparaison accepte un numero absent ou different
186 // on ne fait la verification que si c'est une creation de mot ou un retitrage
188 or supprimer_numero(_request('titre'))
189 !== supprimer_numero(sql_getfetsel('titre', 'spip_mots', 'id_mot=' . intval($id_mot)))
191 if (!count($erreurs) and !_request('confirm_titre_mot')) {
194 'titre REGEXP ' . sql_quote('^([0-9]+[.] )?' . preg_quote(supprimer_numero(_request('titre'))) . '$')
195 . ' AND id_mot<>' . intval($id_mot)
198 _T('mots:avis_doublon_mot_cle')
199 . " <input type='hidden' name='confirm_titre_mot' value='1' />";
208 * Traitements du formulaire d'édition d'un mot
210 * @param int|string $id_mot
211 * Identifiant du mot. 'new' pour un nouveau mot.
212 * @param int $id_groupe
213 * Identifiant du groupe parent (si connu)
214 * @param string $retour
215 * URL de redirection après le traitement
216 * @param string $associer_objet
217 * Éventuel 'objet|x' indiquant de lier le mot créé à cet objet,
218 * tel que 'article|3'
219 * @param string $dummy1 ?
220 * @param string $dummy2 ?
221 * @param string $config_fonc
222 * Nom de la fonction ajoutant des configurations particulières au formulaire
224 * Valeurs de la ligne SQL du mot, si connu
225 * @param string $hidden
226 * Contenu HTML ajouté en même temps que les champs cachés du formulaire.
228 * Retour des traitements
230 function formulaires_editer_mot_traiter_dist(
234 $associer_objet = '',
237 $config_fonc = 'mots_edit_config',
242 set_request('redirect', '');
243 $action_editer = charger_fonction('editer_mot', 'action');
244 list($id_mot, $err) = $action_editer();
246 $res['message_erreur'] = $err;
248 $res['message_ok'] = '';
249 $res['id_mot'] = $id_mot;
251 if (strncmp($retour, 'javascript:', 11) == 0) {
252 $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>';
253 $res['editable'] = true;
255 $res['redirect'] = $retour;
256 if (strlen(parametre_url($retour, 'id_mot'))) {
257 $res['redirect'] = parametre_url($res['redirect'], 'id_mot', $id_mot);
262 if ($associer_objet) {
263 if (intval($associer_objet)) {
264 // compat avec l'appel de la forme ajouter_id_article
266 $id_objet = intval($associer_objet);
268 list($objet, $id_objet) = explode('|', $associer_objet);
270 if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
271 include_spip('action/editer_mot');
272 mot_associer($id_mot, array($objet => $id_objet));
273 if (isset($res['redirect'])) {
274 $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_mot, '&');