From a6bb2daf5b7fd76b8bb235834c6afcc15353533e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 5 Jun 2007 22:30:46 +0000 Subject: [PATCH] Fix: Debuggage editeur de menu --- ChangeLog | 10 +- htdocs/admin/menus/edit.php | 237 +++++++++++++++++----------------- htdocs/admin/menus/index.php | 72 +++++------ htdocs/langs/en_US/admin.lang | 23 ++++ htdocs/langs/fr_FR/admin.lang | 7 +- 5 files changed, 189 insertions(+), 160 deletions(-) diff --git a/ChangeLog b/ChangeLog index 88c769928c7..9c17c5b4516 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,17 +2,17 @@ English Dolibarr changelog ***** Changelog for 2.2 compared to 2.1 ***** -- Added more statistics on main page. -- Added option to add message on login page. +- Add more statistics on main page. +- Add option to add message on login page. - Management of categories for third parties. -- Adde volume on products properties. -- Support LDAP authentication. +- Add volume on products properties. +- Support for LDAP authentication. - Full member synchronisation with LDAP database in fundation module. - More LDAP fields supported for user synchronization. - Better logger for install. - First changes to support UTF8. -- Added a "forget password" feature. +- Add a "forget password" feature. - Setup process can run several migrate files if need to jump several versions to upgrade. - Support for webcalendar 1.1 in webcalendar module. diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index f27adbdbe21..73c8b74f150 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -29,10 +29,18 @@ require("./pre.inc.php"); - -if (!$user->admin) +if (! $user->admin) accessforbidden(); +$menu_handler_top=$conf->global->MAIN_MENU_BARRETOP; +$menu_handler_left=$conf->global->MAIN_MENU_BARRELEFT; +$menu_handler_top=eregi_replace('_backoffice\.php','',$menu_handler_top); +$menu_handler_top=eregi_replace('_frontoffice\.php','',$menu_handler_top); +$menu_handler_left=eregi_replace('_backoffice\.php','',$menu_handler_left); +$menu_handler_left=eregi_replace('_frontoffice\.php','',$menu_handler_left); + +$menu_handler=$menu_handler_left; + /* * Actions @@ -40,8 +48,6 @@ if (!$user->admin) if (isset($_GET["action"]) && $_GET["action"] == 'update') { - - if(!$_POST['cancel']) { @@ -54,10 +60,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'update') if($_GET['return']) { header("location: index.php"); + exit; } else { header("location: edit.php?action=edit&menuId=".$_POST['menuId']); + exit; } @@ -65,89 +73,70 @@ if (isset($_GET["action"]) && $_GET["action"] == 'update') if (isset($_GET["action"]) && $_GET["action"] == 'add') { - - if($_POST['cancel']) + if ($_POST['cancel']) { header("location:index.php"); + exit; } - else + + $error=0; + if (! $error && ! $_POST['handler']) + { + $mesg='
'.$langs->trans("ErrorFieldRequired",'handler').'
'; + $_GET["action"] = 'create'; + $error++; + } + if (! $error && ! $_POST['type']) + { + $mesg='
'.$langs->trans("ErrorFieldRequired",'type').'
'; + $_GET["action"] = 'create'; + $error++; + } + if (! $error && ! $_POST['url']) + { + $mesg='
'.$langs->trans("ErrorFieldRequired",$langs->trans("Url")).'
'; + $_GET["action"] = 'create'; + $error++; + } + if (! $error && ! $_POST['titre']) + { + $mesg='
'.$langs->trans("ErrorFieldRequired",$langs->trans("Title")).'
'; + $_GET["action"] = 'create'; + $error++; + } + if (! $error) { + $sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m"; + $result = $db->query($sql); + $lastMenu = $db->fetch_object($result); + $rowid = $lastMenu->maxId + 1; + + // On prend le max de toutes celles qui auront le meme pere fk_menu + $sql = "SELECT max(m.order) as maxOrder FROM ".MAIN_DB_PREFIX."menu as m WHERE m.fk_menu = ".$_POST['menuId']; + $result = $db->query($sql); + $lastMenu = $db->fetch_object($result); + if ($lastMenu) $order = $lastMenu->maxOrder + 1; + else + { + dolibarr_print_error($db); + } - 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.=" VALUES(".$rowid.",'".$_POST['handler']."','".$_POST['type']."','".$_POST['mainmenu']."','".$_POST['leftmenu']."',".$_POST['menuId'].",'".$_POST['url']."','".$_POST['titre']."','".$_POST['level']."','".$_POST['langs']."','".$_POST['right']."','".$_POST['target']."',".$_POST['user'].",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.")"; + dolibarr_syslog("edit: insert menu entry sql=".$sql); $result=$db->query($sql); - - header("location: edit.php?action=edit&menuId=".$rowid); + if ($result > 0) + { + dolibarr_syslog("location: edit.php?action=edit&menuId=".$rowid); + header("location: edit.php?action=edit&menuId=".$rowid); + exit; + } + else + { + $mesg='
'.'FailedToInsert'.$db->lasterror().' sql='.$sql.'
'; + $_GET["action"] = 'create'; + } } } @@ -176,7 +165,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add_const') $db->query($sql); header("location:edit.php?action=edit&menuId=".$_POST['menuId']); - + exit; } if (isset($_GET["action"]) && $_GET["action"] == 'del_const') @@ -194,14 +183,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'del_const') } header("location:edit.php?action=edit&menuId=".$_GET['menuId']); + exit; } - - +// Suppression 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) @@ -226,7 +213,7 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes') } -; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu WHERE rowid = ".$_GET['menuId']; $db->query($sql); @@ -258,6 +245,8 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create') { print_titre($langs->trans("NewMenu"),'','setup'); + if ($mesg) print $mesg; + print '
'; print ''; @@ -286,12 +275,31 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create') } } + // MenuId Parent + print ''; + //$menu_handler + //print ''; + print ''; + print ''; + //Handler - print ''; - //Handler - print ''; + print ''; + //$menu_handler + //print ''; + print ''; + print ''; + + // Type + print ''; //User - print ''; + print ''; print ''; + print ''; + //URL + print ''; //Langs print ''; - //URL - print ''; //Target print ''; //Mainmenu = group - print ''; + //print ''; //Leftmenu - print ''; + //print ''; // Boutons print '
'.$langs->trans('MenuIdParent').''.$langs->trans('DetailMenuIdParent').'
'.$langs->trans('MenuHandler').''.$langs->trans('DetailMenuHandler').'
'.$langs->trans('Type').''.$langs->trans('DetailType').'
'.$langs->trans('MenuHandler').''.$langs->trans('DetailMenuHandler').'
'.$langs->trans('Type').''; + print ''; + // print ''; + print ''.$langs->trans('DetailType').'
'.$langs->trans('User').'
'.$langs->trans('User').''; //Titre - print '
'.$langs->trans('Title').''.$langs->trans('DetailTitre').'
'.$langs->trans('Title').''.$langs->trans('DetailTitre').'
'.$langs->trans('URL').''.$langs->trans('DetailUrl').'
'.$langs->trans('Langs').''.$langs->trans('DetailLangs').'
'.$langs->trans('URL').''.$langs->trans('DetailUrl').'
'.$langs->trans('Target').'
'.$langs->trans('Right').''.$langs->trans('DetailRight').'
'.$langs->trans('Group').''.$langs->trans('DetailMainmenu').'
'.$langs->trans('Group').''.$langs->trans('DetailMainmenu').'
'.$langs->trans('Leftmenu').''.$langs->trans('DetailLeftmenu').'
'.$langs->trans('Leftmenu').''.$langs->trans('DetailLeftmenu').'
'; @@ -337,7 +345,6 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') 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); @@ -349,11 +356,17 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') while($i < $num) { $menu = $db->fetch_object($result); - - // Id + // MenuId Parent + print ''; + //$menu_handler + //print ''; + print ''; + print ''; print ''; - print ''; + + // Id + print ''; // Handler print ''; @@ -369,7 +382,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') print ''; // Niveau - print ''; + //print ''; // Titre print ''; @@ -389,9 +402,9 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') print ''; // Leftmenu - print ''; + //print ''; // Mainmenu = group - print ''; + //print ''; // Bouton print '
'.$langs->trans('MenuIdParent').''.$menu->fk_menu.''.$langs->trans('DetailMenuIdParent').'
'.$langs->trans('rowid').''.$menu->rowid.''.$langs->trans('DetailId').'
'.$langs->trans('Id').''.$menu->rowid.''.$langs->trans('DetailId').'
'.$langs->trans('MenuHandler').''.$menu->menu_handler.''.$langs->trans('DetailMenuHandler').'
'.$langs->trans('Type').''.$menu->type.''.$langs->trans('DetailType').'
'.$langs->trans('Level').''.$menu->level.''.$langs->trans('DetailLevel').'
'.$langs->trans('Level').''.$menu->level.''.$langs->trans('DetailLevel').'
'.$langs->trans('Title').''.$langs->trans('DetailTitre').'
'.$langs->trans('Right').''.$langs->trans('DetailRight').'
'.$langs->trans('Leftmenu').''.$langs->trans('DetailLeftmenu').'
'.$langs->trans('Leftmenu').''.$langs->trans('DetailLeftmenu').'
'.$langs->trans('Group').''.$langs->trans('DetailMainmenu').'
'.$langs->trans('Group').''.$langs->trans('DetailMainmenu').'
'; @@ -404,7 +417,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') print ''; - /* + /* * Lignes de contraintes */ $sql = 'SELECT c.rowid, c.action, mc.user '; @@ -496,7 +509,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') while ($i < $num) { $objc = $db->fetch_object($resql); - print ''; + print ''; $i++; } @@ -523,18 +536,12 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit') print '
'; - - print '
'; - - print ''.$langs->trans('Valid').''; - print ''.$langs->trans('Supprimer').''; - print '
'; - - } +print ''; - - - + +$db->close(); + +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index c7cbf18fce5..fa5cbe4e1a2 100644 --- a/htdocs/admin/menus/index.php +++ b/htdocs/admin/menus/index.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2007 Patrick Raguin + * 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 @@ -28,7 +29,7 @@ require("./pre.inc.php"); -if (!$user->rights->menudb->creer && ! $user->admin) +if (! $user->admin) accessforbidden(); @@ -128,35 +129,6 @@ if (isset($_GET["action"]) && $_GET["action"] == 'down') $sql = "UPDATE ".MAIN_DB_PREFIX."menu as m SET m.order = ".$precedent['order']." WHERE m.rowid = ".$suivant['rowid'].""; // Descend celui du dessus $db->query($sql); } - - - -/* - * Affichage page - */ - -llxHeader(); - - - -print_fiche_titre($langs->trans("Menus"),'','setup'); - -print $langs->trans("MenusEditorDesc")."
\n"; -print "
\n"; - -$h = 0; - -$head[$h][0] = DOL_URL_ROOT."/admin/menus.php"; -$head[$h][1] = $langs->trans("MenuHandlers"); -$head[$h][2] = 'handler'; -$h++; - -$head[$h][0] = DOL_URL_ROOT."/admin/menus/index.php"; -$head[$h][1] = $langs->trans("MenuAdmin"); -$head[$h][2] = 'editor'; -$h++; - -dolibarr_fiche_head($head, 'editor', $langs->trans("Menus")); if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes') { @@ -184,7 +156,7 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes') } -; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."menu WHERE rowid = ".$_GET['menuId']; $db->query($sql); @@ -202,23 +174,47 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes') } } + +/* + * Affichage page + */ + +llxHeader(); + + +print_fiche_titre($langs->trans("Menus"),'','setup'); + +print $langs->trans("MenusEditorDesc")."
\n"; +print "
\n"; + +$h = 0; + +$head[$h][0] = DOL_URL_ROOT."/admin/menus.php"; +$head[$h][1] = $langs->trans("MenuHandlers"); +$head[$h][2] = 'handler'; +$h++; + +$head[$h][0] = DOL_URL_ROOT."/admin/menus/index.php"; +$head[$h][1] = $langs->trans("MenuAdmin"); +$head[$h][2] = 'editor'; +$h++; + +dolibarr_fiche_head($head, 'editor', $langs->trans("Menus")); + // Confirmation de la suppression de la facture if ($_GET["action"] == 'delete') { - $sql = "SELECT m.titre FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId']; $result = $db->query($sql); $obj = $db->fetch_object($result); $html = new Form($db); - $html->form_confirm("index.php?menuId=".$_GET['menuId'],$langs->trans("DeleteMenu"),$langs->trans("ConfirmDeleteMenu")." ".$obj->titre,"confirm_delete"); + $html->form_confirm("index.php?menuId=".$_GET['menuId'],$langs->trans("DeleteMenu"),$langs->trans("ConfirmDeleteMenu",$obj->titre),"confirm_delete"); print "
\n"; } - - print ''; print ''; @@ -226,12 +222,12 @@ print ''; print ''; print ''; -print ''; +print ''; print ''; print ''; print '
'.$langs->trans("MenuHandler").': '.$menu_handler.'
'.$langs->trans("TreeMenu").''.$langs->trans("TreeMenuPersonalized").'
'; - + /************************* * ARBORESCENCE * *************************/ diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index fb5c3f6d519..82a488fdf3e 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -721,3 +721,26 @@ MantisErrorConnectOkButWrongDatabase=Connection succeeded but database doesn't l ##### Stock ##### StockSetup=Configuration module stock UserWarehouse=Use user personal stocks +##### Menu ##### +MenuDeleted=Menu deleted +TreeMenu=Tree menus +TreeMenuPersonalized=Personalized menus +NewMenu=New menu +MenuConf=Menus setup +Menu=Selection of menu +MenuHandler=Manu handler +DetailId=Id menu +DetailMenuHandler=Menu handler (or "all" for all menu handlers) +DetailType=Type of menu (top or left) +DetailTitre=Menu label +DetailMainmenu=Groupe auquel il appartient (obsolete) +DetailUrl=URL where menu send you +DetailLeftmenu=Condition d'affichage ou non (obsolete) +DetailRight=Condition to display unauthorized grey menus +DetailLangs=Lang file name for label translation +DetailUser=Intern / Extern / All +DetailTarget=Target +DetailLevel=Niveau (-1:menu top, 0:entete menu, >0 menu et sous menu) +ModifMenu=Menu change +DeleteMenu=Delete menu entry +ConfirmDeleteMenu=Are you sure you want to delete menu entry %s ? diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 9141063b489..2eddd9765b6 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -735,12 +735,13 @@ mailDroitPret=Adresse mail ##### Menu ##### MenuDeleted=Menu supprimé TreeMenu=Arborescence des menus +TreeMenuPersonalized=Menus personalisés NewMenu=Nouveau menu MenuConf=Configuration des menus Menu=Sélection des menus MenuHandler=Gestionnaire menu DetailId=Identifiant du menu -DetailMenuHandler=Nom du gestionnaire menu +DetailMenuHandler=Nom du gestionnaire menu (ou "all" pour tous) DetailType=Type de menu (top ou left) DetailTitre=Libellé du menu DetailMainmenu=Groupe auquel il appartient (obsolete) @@ -748,9 +749,11 @@ DetailUrl=URL de la page vers laquelle le menu pointe DetailLeftmenu=Condition d'affichage ou non (obsolete) DetailRight=Condition d'affichage plein ou grisé DetailLangs=Fichier langs pour la traduction du titre -DetailUser=Interne / externe / Tous +DetailUser=Interne / Externe / Tous DetailTarget=Cible DetailLevel=Niveau (-1:menu top, 0:entete menu, >0 menu et sous menu) ModifMenu=Modification du menu +DeleteMenu=Effacer entrée de menu +ConfirmDeleteMenu=Etes-vous sur de vouloir supprimer l'entrée de menu %s ?