* Copyright (C) 2007 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id$ * $Source$ */ /** \file htdocs/admin/menus/edit.php \ingroup core,menudb \brief Edition des menus \version $Revision$ */ require("./pre.inc.php"); if (!$user->admin) accessforbidden(); /* * Actions */ if (isset($_GET["action"]) && $_GET["action"] == 'update') { if(!$_POST['cancel']) { $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m"; $sql.=" SET m.titre = '".$_POST['titre']."', m.leftmenu = '".$_POST['leftmenu']."', m.url = '".$_POST['url']."', m.langs = '".$_POST['langs']."', m.right = '".$_POST['right']."',m.target = '".$_POST['target']."', m.user = ".$_POST['user']; $sql.=" WHERE m.rowid = ".$_POST['menuId']; $db->query($sql); } if($_GET['return']) { header("location: index.php"); } else { header("location: edit.php?action=edit&menuId=".$_POST['menuId']); } } if (isset($_GET["action"]) && $_GET["action"] == 'add') { if($_POST['cancel']) { header("location:index.php"); } else { if($_POST['level'] == -1) { $sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m WHERE m.level = ".$_POST['level']; $result = $db->query($sql); $lastMenu = $db->fetch_object($result); $rowid = $lastMenu->maxId + 1; $sql = "SELECT max(m.order) as maxOrder FROM ".MAIN_DB_PREFIX."menu as m WHERE m.level = ".$_POST['level']; $result = $db->query($sql); $lastMenu = $db->fetch_object($result); $order = $lastMenu->maxOrder + 1; } elseif($_POST['level'] == 0) { $sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m WHERE m.level = ".$_POST['level']; $result = $db->query($sql); $lastMenu = $db->fetch_object($result); $rowid = $lastMenu->maxId + 100 ; $sql = "SELECT max(m.order) as maxOrder FROM ".MAIN_DB_PREFIX."menu as m WHERE m.fk_menu = ".$_GET['menuId']; $result = $db->query($sql); $lastMenu = $db->fetch_object($result); if(isset($lastMenu->maxOrder)) { $order = ($lastMenu->maxOrder) + 1; } else { $order = 0; } } elseif($_POST['level'] > 0) { $parentId = round($_GET['menuId'] / 100); $sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid LIKE '".$parentId."__' AND m.rowid <> '".$parentId."00'"; $result = $db->query($sql); $lastMenu = $db->fetch_object($result); if(isset($lastMenu->maxId)) { $rowid = ($lastMenu->maxId) + 1; } else { $rowid = ($parentId * 100) + 1; } $sql = "SELECT max(m.order) as maxOrder FROM ".MAIN_DB_PREFIX."menu as m WHERE m.fk_menu = ".$_GET['menuId']; $result = $db->query($sql); $lastMenu = $db->fetch_object($result); if(isset($lastMenu->maxOrder)) { $order = ($lastMenu->maxOrder) + 1; } else { $order = 0; } } $sql = "INSERT INTO ".MAIN_DB_PREFIX."menu(rowid, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, right, target, user, order)"; $sql.= $sql.=" VALUES($rowid, '".$_POST['menu_hanlder']."','".$_POST['type']."','".$_POST['mainmenu']."','".$_POST['leftmenu']."',".$_GET['menuId'].",'".$_POST['url']."','".$_POST['titre']."',".$_POST['level'].",'".$_POST['langs']."','".$_POST['right']."','".$_POST['target']."',".$_POST['user'].",".$order.")"; $result=$db->query($sql); header("location: edit.php?action=edit&menuId=".$rowid); } } if (isset($_GET["action"]) && $_GET["action"] == 'add_const') { if($_POST['type'] == 'prede') { $sql = "INSERT INTO ".MAIN_DB_PREFIX."menu_const(fk_menu, fk_constraint, user) VALUES(".$_POST['menuId'].",".$_POST['constraint'].",".$_POST['user'].")"; } else { $sql = "SELECT max(rowid) as maxId FROM ".MAIN_DB_PREFIX."menu_constraint"; $result = $db->query($sql); $objc = $db->fetch_object($result); $constraint = ($objc->maxId) + 1; $sql = "INSERT INTO ".MAIN_DB_PREFIX."menu_constraint(rowid,action) VALUES(".$constraint.",'".$_POST['constraint']."')"; $db->query($sql); $sql = "INSERT INTO ".MAIN_DB_PREFIX."menu_const(fk_menu, fk_constraint, user) VALUES(".$_POST['menuId'].",".$constraint.",".$_POST['user'].")"; } $db->query($sql); header("location:edit.php?action=edit&menuId=".$_POST['menuId']); } if (isset($_GET["action"]) && $_GET["action"] == 'del_const') { $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu_const WHERE fk_menu = ".$_GET['menuId']." AND fk_constraint = ".$_GET['constId']; $db->query($sql); $sql = "SELECT count(rowid) as countId FROM ".MAIN_DB_PREFIX."menu_const WHERE fk_constraint = ".$_GET['constId']; $result = $db->query($sql); $objc = $db->fetch_object($result); if($objc->countId == 0) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu_constraint WHERE rowid = ".$_GET['constId']; $db->query($sql); } header("location:edit.php?action=edit&menuId=".$_GET['menuId']); } if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes') { $sql = "SELECT c.rowid, c.fk_constraint FROM ".MAIN_DB_PREFIX."menu_const as c WHERE c.fk_menu = ".$_GET['menuId']; $res = $db->query($sql); if ($res) { while ($obj = $db->fetch_object ($res)) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu_const WHERE rowid = ".$obj->rowid; $db->query($sql); $sql = "SELECT count(rowid) as countId FROM ".MAIN_DB_PREFIX."menu_const WHERE fk_constraint = ".$obj->fk_constraint; $result = $db->query($sql); $objc = $db->fetch_object($result); if($objc->countId == 0) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu_constraint WHERE rowid = ".$obj->fk_constraint; $db->query($sql); } } } ; $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu WHERE rowid = ".$_GET['menuId']; $db->query($sql); if ($result == 0) { llxHeader(); print '
'.$langs->trans("MenuDeleted").'
'; llxFooter(); exit ; } else { $reload = 0; $_GET["action"]=''; } } /* * Affichage page */ llxHeader(); if (isset($_GET["action"]) && $_GET["action"] == 'create') { print_titre($langs->trans("NewMenu"),'','setup'); print '
'; print ''; // Id if($_GET['menuId'] == 0) { $parent_rowid = $_GET['menuId']; $parent_level = -2; } else { $sql = "SELECT m.rowid, m.mainmenu, m.level, m.langs FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId']; $res = $db->query($sql); if ($res) { while ($menu = $db->fetch_array ($res)) { $parent_rowid = $menu['rowid']; $parent_mainmenu = $menu['mainmenu']; $parent_langs = $menu['langs']; $parent_level = $menu['level']; } } } //Handler print ''; //Handler print ''; //User print ''; print ''; print ''; //Level print ''; //Titre print ''; //Langs print ''; //URL print ''; //Target print ''; //Right print ''; //Mainmenu = group print ''; //Leftmenu print ''; // Boutons print ''; print '
'.$langs->trans('MenuHandler').''.$langs->trans('DetailMenuHandler').'
'.$langs->trans('Type').''.$langs->trans('DetailType').'
'.$langs->trans('User').''.$langs->trans('DetailUser').'
'.$langs->trans('Title').''.$langs->trans('DetailTitre').'
'.$langs->trans('Langs').''.$langs->trans('DetailLangs').'
'.$langs->trans('URL').''.$langs->trans('DetailUrl').'
'.$langs->trans('Target').''.$langs->trans('DetailTarget').'
'.$langs->trans('Right').''.$langs->trans('DetailRight').'
'.$langs->trans('Group').''.$langs->trans('DetailMainmenu').'
'.$langs->trans('Leftmenu').''.$langs->trans('DetailLeftmenu').'
'; print ' '; print '
'; print '
'; } elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') { print_titre($langs->trans("ModifMenu"),'','setup'); print '
'; print ''; $sql = "SELECT m.rowid, m.menu_handler, m.type, m.titre, m.mainmenu, m.leftmenu, m.fk_menu, m.url, m.langs, m.level, m.right, m.target, m.user, m.order"; $sql.=" FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId']; $result = $db->query($sql); if ($result) { $num = $db->num_rows(); $i = 0; while($i < $num) { $menu = $db->fetch_object($result); // Id print ''; print ''; // Handler print ''; // user print ''; // Type print ''; // Niveau print ''; // Titre print ''; // Langs print ''; // Url print ''; // Target print ''; // Right print ''; // Leftmenu print ''; // Mainmenu = group print ''; // Bouton print ''; $i++; } } print ''; /* * Lignes de contraintes */ $sql = 'SELECT c.rowid, c.action, mc.user '; $sql.= 'FROM '.MAIN_DB_PREFIX.'menu_constraint as c, '.MAIN_DB_PREFIX.'menu_const as mc '; $sql.= 'WHERE c.rowid = mc.fk_constraint '; $sql.= 'AND mc.fk_menu = '.$_GET['menuId']; $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; print '
'.$langs->trans('rowid').''.$menu->rowid.''.$langs->trans('DetailId').'
'.$langs->trans('MenuHandler').''.$menu->menu_handler.''.$langs->trans('DetailMenuHandler').'
'.$langs->trans('User').''.$langs->trans('DetailUser').'
'.$langs->trans('Type').''.$menu->type.''.$langs->trans('DetailType').'
'.$langs->trans('Level').''.$menu->level.''.$langs->trans('DetailLevel').'
'.$langs->trans('Title').''.$langs->trans('DetailTitre').'
'.$langs->trans('Langs').''.$langs->trans('DetailLangs').'
'.$langs->trans('URL').''.$langs->trans('DetailUrl').'
'.$langs->trans('Target').''.$langs->trans('DetailTarget').'
'.$langs->trans('Right').''.$langs->trans('DetailRight').'
'.$langs->trans('Leftmenu').''.$langs->trans('DetailLeftmenu').'
'.$langs->trans('Group').''.$langs->trans('DetailMainmenu').'
'; print ' '; print '
'; if ($num) { print ''; print ''; print ''; print ''; print "\n"; } $var=true; $var = true; while ($i < $num) { $objc = $db->fetch_object($resql); $var = !$var; print ''; print ''; print ''; print ''; $i++; } print ''; print ''; print ''; print ''; print "\n"; // Ajout de contraintes personalisés print ''; print ''; print ''; $var=true; print ''; print ' '; print ''; print ''; print ''; print ''; // Ajout de contraintes prédéfinis print ''; print ''; print ''; $var=!$var; print ''; print ''; print ''; print ''; print ''; print ''; print '
'.$langs->trans('Constraint').''.$langs->trans('User').' 
'.$objc->action.''; switch ($objc->user) { case 0: print 'Interne'; break; case 1: print 'Externe'; break; case 2: print 'Tous'; break; } print ''.img_delete().'
'.$langs->trans('Constraint').''.$langs->trans('User').' 
'; print '
'; print ''; print ''; print '
'; $db->free($resql); } print ''; print ''; } ?>