[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / noiZetier / formulaires / editer_composition_noizetier.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 include_spip('inc/editer');
7
8 function formulaires_editer_composition_noizetier_charger($id, $nouveau){
9 include_spip('inc/autoriser');
10 $contexte = array();
11 $contexte['editable'] = true;
12 $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
13
14 // Seulement si on a le droit de configurer le noizetier
15 if (autoriser('configurer', 'noizetier')){
16 $nouveau = ($nouveau == 'oui') ? true : false;
17
18 // Si on demande une composition
19 if ($id!=''){
20 // On désactive de toute façon le nouveau
21 $nouveau = false;
22 $type = noizetier_page_type($id);
23 $compo = noizetier_page_composition($id);
24 // On vérifie que cette composition existe
25 // et si elle n'existe pas
26 if (!is_array($noizetier_compositions[$type][$compo])){
27 $contexte['editable'] = false;
28 $contexte['message_erreur'] = _T('spip:erreur');
29 }
30 }
31 elseif (!$nouveau){
32 $contexte['editable'] = false;
33 $contexte['message_erreur'] = _T('spip:erreur');
34 }
35
36 // Si on peut bien éditer la composition
37 if ($contexte['editable']){
38 // Les champs de la composition
39 $contexte['type'] = '';
40 $contexte['compo'] = '';
41 $contexte['nom'] = '';
42 $contexte['description'] = '';
43 $contexte['icon'] = '';
44
45 // Si la compo existe on prérempli
46 if (isset($noizetier_compositions[$type][$compo])){
47 $contexte['type'] = $type;
48 $contexte['compo'] = $compo;
49 $contexte['nom'] = $noizetier_compositions[$type][$compo]['nom'];
50 $contexte['description'] = $noizetier_compositions[$type][$compo]['description'];
51 $contexte['icon'] = $noizetier_compositions[$type][$compo]['icon'];
52 }
53
54 // Déclarer l'action pour SPIP 2.0
55 $contexte['_action'] = array('editer_composition_noizetier', $id);
56
57 if ($nouveau) {
58 $contexte['_hidden'] .= '<input type="hidden" name="nouveau" value="oui" />';
59 $contexte['nouveau'] = oui;
60 $contexte['_objets_avec_compos'] = $GLOBALS['compositions_exec'];
61 if(defined('_NOIZETIER_COMPOSITIONS_TYPE_PAGE') AND _NOIZETIER_COMPOSITIONS_TYPE_PAGE)
62 $contexte['_objets_avec_compos'][''] = 'page';
63 }
64 }
65 }
66 else{
67 $contexte['editable'] = false;
68 }
69
70 return $contexte;
71 }
72
73 function formulaires_editer_composition_noizetier_verifier($id, $nouveau){
74 $erreurs = array();
75 foreach(array('type','compo','nom') as $champ) {
76 if (!_request($champ)) {
77 $erreurs[$champ] = _T('noizetier:formulaire_obligatoire');
78 }
79 }
80 // On vérifie, dans le cas d'une nouvelle composition que $compo n'est pas déjà pris (compo du noizetier ou compo existante).
81 // On vérifie aussi que $compo ne contient ni espace, ni tiret, ni
82 if (_request('nouveau')=='oui' AND _request('compo')) {
83 include_spip('inc/noizetier');
84 $type = _request('type');
85 $compo = _request('compo');
86 $liste_pages = noizetier_lister_pages();
87 if (is_array($liste_pages[$type.'-'.$compo]))
88 $erreurs['compo'] = _T('noizetier:formulaire_identifiant_deja_pris');
89 if (preg_match('#^[a-z0-9_]+$#',$compo)==0)
90 $erreurs['compo'] = _T('noizetier:formulaire_erreur_format_identifiant');
91 }
92
93 return $erreurs;
94 }
95
96 function formulaires_editer_composition_noizetier_traiter($id, $nouveau){
97 include_spip('inc/autoriser');
98 $retours = array();
99 if (autoriser('configurer', 'noizetier')){
100 $nouveau = ($nouveau == 'oui') ? true : false;
101 $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
102 $type = _request('type');
103 $compo = _request('compo');
104
105 // Au cas où on n'a pas encore configuré de compositions
106 if (!is_array($noizetier_compositions))
107 $noizetier_compositions = array();
108
109 $noizetier_compositions[$type][$compo] = array(
110 'nom' => _request('nom'),
111 'description' => _request('description'),
112 'icon' => _request('icon')
113 );
114 ecrire_meta('noizetier_compositions',serialize($noizetier_compositions));
115 $retours['message_ok'] = _T('noizetier:formulaire_composition_mise_a_jour');
116
117 // S'il s'agit d'une nouvelle composition, on la préremplie avec la config de la page mère
118 if ($nouveau) {
119 include_spip('base/abstract_sql');
120 $config_mere = sql_allfetsel(
121 'rang, type, composition, bloc, noisette, parametres',
122 'spip_noisettes',
123 'type='.sql_quote($type).' AND composition=""'
124 );
125 if (count($config_mere)>0) {
126 foreach($config_mere as $cle => $noisette)
127 $config_mere[$cle]['composition'] = $compo;
128 sql_insertq_multi('spip_noisettes',$config_mere);
129 }
130 }
131
132 // Si on est dans l'espace privé, on redirige vers la liste des compos
133 if (_request('exec') == 'noizetier_composition_editer')
134 $retours['redirect'] = generer_url_ecrire('noizetier_compositions');
135 }
136 $retours['editable'] = true;
137 return $retours;
138 }
139
140 ?>