X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fmenus%2Fformulaires%2Fediter_menus_entree.php;fp=www%2Fplugins%2Fmenus%2Fformulaires%2Fediter_menus_entree.php;h=723968cee7e40c8c9bb88d3d450ed55ca74a47c4;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/menus/formulaires/editer_menus_entree.php b/www/plugins/menus/formulaires/editer_menus_entree.php new file mode 100644 index 0000000..723968c --- /dev/null +++ b/www/plugins/menus/formulaires/editer_menus_entree.php @@ -0,0 +1,250 @@ +'; + + return $valeurs; +} + +function formulaires_editer_menus_entree_verifier($id_menu,$id_menus_entree='new'){ + $erreurs = formulaires_editer_objet_verifier('menus_entree',$id_menus_entree,array()); + + // Si on demande une nouvelle entree pour un menu -------------------------- + + if ($id_menu = intval(_request('demander_nouvelle_entree'))){ + // S'il n'y a pas encore de type d'entree de choisi + if (!($type_entree = _request('type_entree'))){ + $erreurs['id_menu_nouvelle_entree'] = $id_menu; + // On charge les différents types d'entrées disponibles + $erreurs['entrees'] = menus_lister_disponibles(); + if (_request('suivant')) + $erreurs['type'] = _T('menus:erreur_type_menu'); + } + // Si on a choisi un type d'entree + else{ + $erreurs['id_menu_nouvelle_entree'] = $id_menu; + $erreurs['type_entree'] = $type_entree; + // On charge les infos du type choisi + $entrees = menus_lister_disponibles(); + $erreurs['infos_'.$type_entree] = $entrees[$type_entree]; + } + } + + // Si on veut modifier une entrée ------------------------------------------ + + if ($id_menus_entree = intval(_request('modifier_entree'))){ + // On va chercher l'existant de cette entrée + $entree = sql_fetsel( + 'type_entree, parametres', + 'spip_menus_entrees', + 'id_menus_entree = '.$id_menus_entree + ); + $type_entree = $entree['type_entree']; + $parametres = unserialize($entree['parametres']); + + $erreurs = array_merge($erreurs, $parametres); + $erreurs['id_menus_entree'] = $id_menus_entree; + $erreurs['type_entree'] = $type_entree; + // On charge les infos du type choisi + $entrees = menus_lister_disponibles(); + $erreurs['infos_'.$type_entree] = $entrees[$type_entree]; + } + + // Si on valide une entree pour un menu ------------------------------------ + + if (($id_menu = intval(_request('id_menu_nouvelle_entree')) or $id_menus_entree = intval(_request('id_menus_entree'))) and _request('enregistrer')){ + $type_entree = _request('type_entree'); + $parametres_envoyes = _request('parametres'); + $entrees = menus_lister_disponibles(); + $infos = $entrees[$type_entree]; + // On teste que chaque paramètre obligatoire est bien renseigné + foreach ($infos['parametres'] as $nom=>$parametre){ + if ($parametre['obligatoire']){ + if (!$parametres_envoyes[$nom]){ + if ($id_menu) + $erreurs['id_menu_nouvelle_entree'] = $id_menu; + if ($id_menus_entree) + $erreurs['id_menus_entree'] = $id_menus_entree; + $erreurs['type_entree'] = $type_entree; + $erreurs['infos_'.$type_entree] = $infos; + $erreurs['parametres'][$nom] = _T('info_obligatoire'); + } + } + } + } + + return $erreurs; +} + +function formulaires_editer_menus_entree_traiter($id_menu,$id_menus_entree='new'){ + $retours = array(); + + // Si on valide une entree pour un menu ------------------------------------ + + if (($id_menu = intval(_request('id_menu_nouvelle_entree')) or $id_menus_entree = intval(_request('id_menus_entree'))) and _request('enregistrer')){ + $res = formulaires_editer_objet_traiter('menus_entree', $id_menus_entree, 0, 0, '', '', '', ''); + if (!$res['id_menus_entree']) + $retours['message_erreur'] = _T('menus:erreur_mise_a_jour'); + } + + // Si on demande la supression d'une entrée -------------------------------- + + if ($id_menus_entree = intval(_request('supprimer_entree'))){ + $ok = menus_supprimer_entree($id_menus_entree); + if (!$ok) + $retours['message_erreur'] = _T('menus:erreur_mise_a_jour'); + } + + // Si on demande à déplacer une entrée ------------------------------------- + + if ($params = _request('deplacer_entree')){ + preg_match('/^([\d]+)-(bas|haut)$/', $params, $params); + array_shift($params); + list($id_menus_entree, $sens) = $params; + $id_menus_entree = intval($id_menus_entree); + + // On récupère des infos sur le placement actuel + $entree = sql_fetsel( + 'id_menu, rang', + 'spip_menus_entrees', + 'id_menus_entree = '.$id_menus_entree + ); + $id_menu = intval($entree['id_menu']); + $rang_actuel = intval($entree['rang']); + + // On teste si ya une entrée suivante + $dernier_rang = intval(sql_getfetsel( + 'rang', + 'spip_menus_entrees', + 'id_menu = '.$id_menu, + '', + '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 entrées + $rang_echange = ($sens == 'bas') ? ($rang_actuel + 1) : ($rang_actuel - 1); + $ok = sql_updateq( + 'spip_menus_entrees', + array( + 'rang' => $rang_actuel + ), + 'id_menu = '.$id_menu.' and rang = '.$rang_echange + ); + if ($ok) + $ok = sql_updateq( + 'spip_menus_entrees', + array( + 'rang' => $rang_echange + ), + 'id_menus_entree = '.$id_menus_entree + ); + } + // 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_menus_entrees', + array( + 'rang' => 'rang + 1' + ), + 'id_menu = '.$id_menu + ); + // L'entrée passe tout en haut + if ($ok) + $ok = sql_updateq( + 'spip_menus_entrees', + array( + 'rang' => 1 + ), + 'id_menus_entree = '.$id_menus_entree + ); + } + else{ + // Tout le monde monte d'un rang + $ok = sql_update( + 'spip_menus_entrees', + array( + 'rang' => 'rang - 1' + ), + 'id_menu = '.$id_menu + ); + // L'entrée passe tout en bas + if ($ok) + $ok = sql_updateq( + 'spip_menus_entrees', + array( + 'rang' => $dernier_rang + ), + 'id_menus_entree = '.$id_menus_entree + ); + } + } + if (!$ok) $retours['message_erreur'] = _T('menus:erreur_mise_a_jour'); + } + + // Si on veut faire un sous-menu ------------------------------------------- + + if ($id_menus_entree = intval(_request('demander_sous_menu'))){ + $id_menu = sql_insertq( + 'spip_menus', + array( + 'id_menus_entree' => $id_menus_entree + ) + ); + if (!$id_menu) $retours['message_erreur'] = _T('menus:erreur_mise_a_jour'); + } + + // Si on veut supprimer un menu -------------------------------------------- + + if ($id_menu = intval(_request('supprimer_menu'))){ + // Est-ce un menu ou un sous-menu ? + $sous_menu = intval(sql_getfetsel( + 'id_menus_entree', + 'spip_menus', + 'id_menu = '.$id_menu + )); + $ok = menus_supprimer_menu($id_menu); + if (!$ok) $retours['message_erreur'] = _T('menus:erreur_mise_a_jour'); + if ($ok and !$sous_menu) $retours['redirect'] = generer_url_ecrire('menus_tous'); + } + + $retours['editable'] = true; + + return $retours; +} + +?> \ No newline at end of file