'; $contexte['_hidden'] .= ''; $contexte['_hidden'] .= ''; // Si on demande une nouvelle noisette pour un bloc -------------------------- if ($bloc_page = _request('demander_nouvelle_noisette')){ // S'il n'y a pas encore de noisette de choisie if (!($noisette = _request('noisette'))){ $contexte['bloc_page_nouvelle_noisette'] = $bloc_page; // On charge les différentes noisettes du type, celles de la composition et celles pour toutes les pages $contexte['_noisettes_type'] = noizetier_lister_noisettes($contexte['type']); if ($contexte['composition']!='') $contexte['_noisettes_composition'] = noizetier_lister_noisettes($contexte['type'].'-'.$contexte['composition']); $contexte['_noisettes_toutes_pages'] = noizetier_lister_noisettes(''); } // Si on a choisi une noisette else{ $contexte['bloc_page_nouvelle_noisette'] = $bloc_page; $contexte['noisette'] = $noisette; // On charge les infos de la noisette choisie $noisettes = noizetier_lister_noisettes(); $contexte['_infos_'.$noisette] = $noisettes[$noisette]; $contexte['_infos_'.$noisette]['parametres'][] = array( 'saisie' => 'input', 'options' => array( 'nom' => 'noizetier_css', 'label' => _T('noizetier:label_noizetier_css'), 'explication' => _T('noizetier:explication_noizetier_css') ) ); } } // Si on veut modifier une noisette ------------------------------------------ if ($id_noisette = intval(_request('modifier_noisette'))){ // On va chercher l'existant de cette noisette $entree = sql_fetsel( 'noisette, parametres, css', 'spip_noisettes', 'id_noisette = '.$id_noisette ); $noisette = $entree['noisette']; $parametres = unserialize($entree['parametres']); $css = $entree['css']; if (is_array($parametres)) $contexte = array_merge($contexte, $parametres); $contexte['id_noisette'] = $id_noisette; $contexte['noisette'] = $noisette; // On charge les infos de la noisette choisie $noisettes = noizetier_lister_noisettes(); $contexte['_infos_'.$noisette] = $noisettes[$noisette]; $contexte['_infos_'.$noisette]['parametres'][] = array( 'saisie' => 'input', 'options' => array( 'nom' => 'noizetier_css', 'label' => _T('noizetier:label_noizetier_css'), 'explication' => _T('noizetier:explication_noizetier_css'), 'defaut' => $css ) ); } // Si on a validé une noisette et qu'il y a une erreur ------------------------------- if (($bloc_page = _request('bloc_page_nouvelle_noisette') or $id_noisette = intval(_request('id_noisette_modifiee'))) and _request('enregistrer')!=''){ $erreurs = formulaires_configurer_bloc_verifier($bloc,$page); // S'il y a des erreurs if(count($erreurs)>0){ $noisette = _request('noisette'); $infos_param = noizetier_charger_parametres_noisette($noisette); // On récupère les paramètres transmis foreach ($infos_param as $nom=>$parametre) $contexte[$nom] = _request($nom); // On transmets les autres éléments du contexte $noisettes = noizetier_lister_noisettes(); $contexte['_infos_'.$noisette] = $noisettes[$noisette]; $contexte['noisette'] = $noisette; if ($id_noisette>0) $contexte['id_noisette'] = $id_noisette; if ($bloc_page) $contexte['bloc_page_nouvelle_noisette'] = $bloc_page; } } return $contexte; } function formulaires_configurer_bloc_verifier($bloc,$page){ $erreurs = array(); // Si on demande une nouvelle noisette pour un bloc -------------------------- if ($bloc_page = _request('demander_nouvelle_noisette')){ // S'il n'y a pas encore de noisette de choisie alors qu'on a demandé la suite if (!($noisette = _request('noisette'))) if (_request('suivant')) $erreurs['erreur_noisette'] = _T('noizetier:erreur_doit_choisir_noisette'); } // Si on valide une noisette pour un bloc ------------------------------------ if (($bloc_page = _request('bloc_page_nouvelle_noisette') or $id_noisette = intval(_request('id_noisette_modifiee',$_POST))) and _request('enregistrer')){ $noisette = _request('noisette'); $infos_param = noizetier_charger_parametres_noisette($noisette); // Si le plugin verifier est actif if (defined('_DIR_PLUGIN_VERIFIER')){ $verifier = charger_fonction('verifier','inc',true); foreach ($infos_param as $nom=>$parametre){ if (isset($parametre['verifier'])){ if (!isset($parametre['verifier']['options'])) $parametre['verifier']['options']=array(); if (($erreur = $verifier(_request($nom),$parametre['verifier']['type'],$parametre['verifier']['options'])) != '') $erreurs[$nom] = $erreur; } } } // On teste que chaque paramètre obligatoire est bien renseigné foreach ($infos_param as $nom=>$parametre){ if ($parametre['obligatoire']=='oui'){ if (_request($nom)=='') $erreurs[$nom] = _T('info_obligatoire'); } } } return $erreurs; } function formulaires_configurer_bloc_traiter($bloc,$page){ $retours = array(); // Si on valide une noisette pour un bloc ------------------------------------ if (($bloc_page = _request('bloc_page_nouvelle_noisette') or $id_noisette_modifiee = intval(_request('id_noisette_modifiee',$_POST))) and _request('enregistrer')!=''){ $rang = intval(_request('rang')); $noisette = _request('noisette'); $css = _request('noizetier_css'); $infos_param = noizetier_charger_parametres_noisette($noisette); $parametres_envoyes = array(); foreach ($infos_param as $nom=>$parametre) $parametres_envoyes[$nom] = _request($nom); spip_desinfecte($parametres_envoyes); // Enregistrement de la noisette if ($bloc_page) { $t_bloc_page = explode ('-',$bloc_page,3); $bloc = $t_bloc_page[0]; $type = $t_bloc_page[1]; $composition = $t_bloc_page[2]; $id_noisette = sql_insertq( 'spip_noisettes', array( 'bloc' => $bloc, 'type' => $type, 'composition' => $composition, 'rang' => $rang, 'noisette' => $noisette, 'parametres' => serialize($parametres_envoyes), 'css' => $css ) ); // On invalide le cache include_spip('inc/invalideur'); $cle_invalidation = $bloc.'/'.$type; if ($composition != '') $cle_invalidation .= '-'.composition; suivre_invalideur($cle_invalidation); } // Mise à jour de la noisette if ($id_noisette_modifiee) { $id_noisette = sql_updateq( 'spip_noisettes', array( 'parametres' => serialize($parametres_envoyes), 'css' => $css ), 'id_noisette='.$id_noisette_modifiee ); // On invalide le cache include_spip('inc/invalideur'); $cle_invalidation = _request('bloc').'/'._request('type'); if (_request('composition') != '') $cle_invalidation .= '-'._request('composition'); suivre_invalideur($cle_invalidation); } if (!$id_noisette) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour'); } // Si on demande la supression d'une noisette -------------------------------- if ($id_noisette = intval(_request('supprimer_noisette'))){ $ok = sql_delete( 'spip_noisettes', 'id_noisette = '.$id_noisette ); // On invalide le cache include_spip('inc/invalideur'); $cle_invalidation = _request('bloc').'/'._request('type'); if (_request('composition') != '') $cle_invalidation .= '-'._request('composition'); suivre_invalideur($cle_invalidation); if (!$ok) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour'); } // Si on demande à déplacer une noisette avec dragndrop ------------------------------------- if ($params = _request('dragndrop_noisette')){ $rang_noisettes = _request('rang_noisettes'); foreach ($rang_noisettes as $rang=>$id_noisette){ $rang = $rang + 1; $ok = sql_updateq('spip_noisettes',array('rang' => intval($rang)),"id_noisette = $id_noisette"); } // On invalide le cache include_spip('inc/invalideur'); // necessaire tout ça ? $cle_invalidation = _request('bloc').'/'._request('type'); if (_request('composition') != '') $cle_invalidation .= '-'._request('composition'); // doit suffire '1' suivre_invalideur($cle_invalidation); if (!$ok) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour'); } // Si on demande à déplacer une noisette sans dragndrop ------------------------------------- if ($params = _request('deplacer_noisette')){ preg_match('/^([\d]+)-(bas|haut)$/', $params, $params); array_shift($params); list($id_noisette, $sens) = $params; $id_noisette = intval($id_noisette); // On récupère des infos sur le placement actuel $noisette = sql_fetsel( 'bloc, type, composition, rang', 'spip_noisettes', 'id_noisette = '.$id_noisette ); $bloc = $noisette['bloc']; $type = $noisette['type']; $composition = $noisette['composition']; $rang_actuel = intval($noisette['rang']); // On teste si ya une noisette suivante $dernier_rang = intval(sql_getfetsel( 'rang', 'spip_noisettes', 'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition), '', 'rang desc', '0,1' )); // Tant qu'on ne veut pas faire de tour complet if (!($sens == 'bas' and $rang_actuel == $dernier_rang) and !($sens == 'haut' and $rang_actuel == 1)){ // Alors on ne fait qu'échanger deux noisettes $rang_echange = ($sens == 'bas') ? ($rang_actuel + 1) : ($rang_actuel - 1); $ok = sql_updateq( 'spip_noisettes', array( 'rang' => $rang_actuel ), 'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition).' and rang = '.$rang_echange ); if ($ok) $ok = sql_updateq( 'spip_noisettes', array( 'rang' => $rang_echange ), 'id_noisette = '.$id_noisette ); } // Sinon on fait un tour complet en déplaçant tout else{ if ($sens == 'bas'){ // Tout le monde descend d'un rang $ok = sql_update( 'spip_noisettes', array( 'rang' => 'rang + 1' ), 'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition) ); // La noisette passe tout en haut if ($ok) $ok = sql_updateq( 'spip_noisettes', array( 'rang' => 1 ), 'id_noisette = '.$id_noisette ); } else{ // Tout le monde monte d'un rang $ok = sql_update( 'spip_noisettes', array( 'rang' => 'rang - 1' ), 'bloc = '.sql_quote($bloc).' and type='.sql_quote($type).'and composition='.sql_quote($composition) ); // La noisette passe tout en bas if ($ok) $ok = sql_updateq( 'spip_noisettes', array( 'rang' => $dernier_rang ), 'id_noisette = '.$id_noisette ); } } // On invalide le cache include_spip('inc/invalideur'); $cle_invalidation = _request('bloc').'/'._request('type'); if (_request('composition') != '') $cle_invalidation .= '-'._request('composition'); suivre_invalideur($cle_invalidation); if (!$ok) $retours['message_erreur'] = _T('noizetier:erreur_mise_a_jour'); } $retours['editable'] = true; return $retours; } ?>