X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fmenus%2Faction%2Fediter_menu.php;fp=www%2Fplugins%2Fmenus%2Faction%2Fediter_menu.php;h=b93b43e307aed30ab561f3eb901a8a6b8232f58d;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/menus/action/editer_menu.php b/www/plugins/menus/action/editer_menu.php new file mode 100644 index 0000000..b93b43e --- /dev/null +++ b/www/plugins/menus/action/editer_menu.php @@ -0,0 +1,144 @@ + 0) $err = menu_set($id_menu); + + // S'il y a un fichier on tente d'importer son contenu + if ($_FILES['import']){ + $fichier = $_FILES['import']['tmp_name']; + $yaml = ''; + lire_fichier($fichier, $yaml); + // Si on a bien recupere une chaine on tente de la decoder + if ($yaml){ + include_spip('inc/yaml'); + $entrees = yaml_decode($yaml); + // Si le decodage marche on importe alors le contenu + if (is_array($entrees)){ + menus_importer($entrees, $id_menu); + } + } + } + + if (_request('redirect')) { + $redirect = parametre_url(urldecode(_request('redirect')), + 'id_menu', $id_menu, '&') . $err; + + include_spip('inc/headers'); + redirige_par_entete($redirect); + } + else + return array($id_menu,$err); +} + +/** + * Appelle la fonction de modification d'un menu + * + * @param int $id_menu + * @param unknown_type $set + * @return $err + */ +function menu_set($id_menu, $set=null) { + $err = ''; + + $c = array(); + foreach (array( + 'titre', + 'identifiant', + 'css' + ) as $champ) + $c[$champ] = _request($champ,$set); + + include_spip('inc/modifier'); + revision_menu($id_menu, $c); + + return $err; +} + +/** + * Crée un nouveau menu et retourne son ID + * + * @return int id_menu + */ +function insert_menu() { + $champs = array('titre'=>''); // eviter le bug de req/sqlite < 2.1.3 + // Envoyer aux plugins + $champs = pipeline('pre_insertion', + array( + 'args' => array( + 'table' => 'spip_menus', + ), + 'data' => $champs + ) + ); + $id_menu = sql_insertq("spip_menus"); + + return $id_menu; +} + +/** + * Enregistre une révision de menu + * + * @param int $id_menu + * @param array $c + * @return + */ +function revision_menu ($id_menu, $c=false) { + $invalideur = "id='id_menu/$id_menu'"; + + modifier_contenu('menu', $id_menu, + array( + 'nonvide' => array('titre' => _T('info_sans_titre')), + 'invalideur' => $invalideur + ), + $c); + + return ''; // pas d'erreur +} + +function menus_importer($entrees, $id_menu){ + // On lit chaque entree de premier niveau + foreach ($entrees as $cle => $entree){ + // On ajoute cette entree + $id_menus_entree = sql_insertq( + 'spip_menus_entrees', + array( + 'id_menu' => $id_menu, + 'rang' => ($cle+1), // les entrees sont dans l'ordre des rangs + 'type_entree' => $entree['type_entree'], + 'parametres' => serialize($entree['parametres']) + ) + ); + + // S'il existe un sous-menu pour cette entree on le cree + if (is_array($entree['sous_menu'])){ + $id_sous_menu = sql_insertq( + 'spip_menus', + array( + 'id_menus_entree' => $id_menus_entree + ) + ); + // Puis dedans on importe les entrees correspondantes + menus_importer($entree['sous_menu'], $id_sous_menu); + } + } +} +?> \ No newline at end of file