4 if (!defined("_ECRIRE_INC_VERSION")) return;
6 include_spip('inc/editer');
8 function formulaires_editer_composition_noizetier_charger($id, $nouveau){
9 include_spip('inc/autoriser');
11 $contexte['editable'] = true;
12 $noizetier_compositions = unserialize($GLOBALS['meta']['noizetier_compositions']);
14 // Seulement si on a le droit de configurer le noizetier
15 if (autoriser('configurer', 'noizetier')){
16 $nouveau = ($nouveau == 'oui') ?
true : false;
18 // Si on demande une composition
20 // On désactive de toute façon le nouveau
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');
32 $contexte['editable'] = false;
33 $contexte['message_erreur'] = _T('spip:erreur');
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'] = '';
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'];
54 // Déclarer l'action pour SPIP 2.0
55 $contexte['_action'] = array('editer_composition_noizetier', $id);
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';
67 $contexte['editable'] = false;
73 function formulaires_editer_composition_noizetier_verifier($id, $nouveau){
75 foreach(array('type','compo','nom') as $champ) {
76 if (!_request($champ)) {
77 $erreurs[$champ] = _T('noizetier:formulaire_obligatoire');
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');
96 function formulaires_editer_composition_noizetier_traiter($id, $nouveau){
97 include_spip('inc/autoriser');
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');
105 // Au cas où on n'a pas encore configuré de compositions
106 if (!is_array($noizetier_compositions))
107 $noizetier_compositions = array();
109 $noizetier_compositions[$type][$compo] = array(
110 'nom' => _request('nom'),
111 'description' => _request('description'),
112 'icon' => _request('icon')
114 ecrire_meta('noizetier_compositions',serialize($noizetier_compositions));
115 $retours['message_ok'] = _T('noizetier:formulaire_composition_mise_a_jour');
117 // S'il s'agit d'une nouvelle composition, on la préremplie avec la config de la page mère
119 include_spip('base/abstract_sql');
120 $config_mere = sql_allfetsel(
121 'rang, type, composition, bloc, noisette, parametres',
123 'type='.sql_quote($type).' AND composition=""'
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);
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');
136 $retours['editable'] = true;