From f022d27c76a8ab2138c825600625f03a647cfed7 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Tue, 8 Jan 2008 18:35:13 +0000
Subject: [PATCH] =?UTF-8?q?New:=20L'ajout=20de=20menus=20personnalis=E9s?=
 =?UTF-8?q?=20est=20possible?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 htdocs/admin/menus/edit.php                   |  77 ++++----
 htdocs/admin/menus/index.php                  | 174 ++++++++++--------
 htdocs/conf/conf.php.example                  |   2 +-
 htdocs/includes/boxes/box_actions.php         |   2 +-
 .../menus/barre_top/auguria_backoffice.php    |   6 +-
 .../menus/barre_top/auguria_frontoffice.php   |   6 +-
 .../menus/barre_top/eldy_backoffice.php       |  20 ++
 htdocs/includes/modules/modAgenda.class.php   |   1 +
 .../includes/modules/modCommercial.class.php  |   3 -
 htdocs/langs/en_US/admin.lang                 |  14 +-
 htdocs/langs/en_US/boxes.lang                 |   1 +
 htdocs/langs/en_US/errors.lang                |  32 ++--
 htdocs/langs/fr_FR/admin.lang                 |  14 +-
 htdocs/langs/fr_FR/boxes.lang                 |   1 +
 htdocs/langs/fr_FR/errors.lang                |  28 +--
 htdocs/lib/functions.inc.php                  |   3 +-
 htdocs/theme/auguria/auguria.css.php          |  23 ++-
 htdocs/theme/eldy/eldy.css.php                |   7 +-
 18 files changed, 244 insertions(+), 170 deletions(-)

diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php
index 44dcc88fba2..b97d28e716a 100644
--- a/htdocs/admin/menus/edit.php
+++ b/htdocs/admin/menus/edit.php
@@ -1,6 +1,6 @@
 <?php
-/* Copyright (C) 2007 Patrick Raguin       <patrick.raguin@gmail.com>
- * Copyright (C) 2007 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2007      Patrick Raguin       <patrick.raguin@gmail.com>
+ * Copyright (C) 2007-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  *
  * 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
@@ -17,7 +17,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  * $Id$
- * $Source$
  */
 
 /**
@@ -80,10 +79,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add')
 {	
 	if ($_POST['cancel'])
 	{
-		header("location:index.php");
+		header("Location: ".DOL_URL_ROOT."/admin/menus/index.php");
 		exit;
 	}
 
+	$langs->load("errors");
+
 	$error=0;
 	if (! $error && ! $_POST['handler'])
 	{
@@ -109,6 +110,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add')
 		$_GET["action"] = 'create';
 		$error++;
 	}
+	if (! $error && $_POST['menuId'] && $_POST['type'] == 'top')
+	{
+		$mesg='<div class="error">'.$langs->trans("ErrorTopMenuMustHaveAParentWithId0").'</div>';
+		$_GET["action"] = 'create';
+		$error++;
+	}
 	if (! $error)
 	{		
 		$sql = "SELECT max(m.rowid) as maxId FROM ".MAIN_DB_PREFIX."menu as m";
@@ -143,13 +150,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'add')
 		$result=$db->query($sql);		
 		if ($result > 0)
 		{
-			dolibarr_syslog("location: edit.php?action=edit&menuId=".$rowid);
-			header("location: edit.php?action=edit&menuId=".$rowid);
+			header("Location: ".DOL_URL_ROOT."/admin/menus/index.php");
 			exit;
 		}
 		else
 		{
-			$mesg='<div class="error">'.'FailedToInsert'.$db->lasterror().' sql='.$sql.'</div>';
+			$mesg='<div class="error">Error '.$db->lasterror().' sql='.$sql.'</div>';
 			$_GET["action"] = 'create';
 		}
 	}
@@ -204,15 +210,17 @@ if (isset($_GET["action"]) && $_GET["action"] == 'del_const')
 // Suppression
 if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 {
+	$this->db->begin();
+	
 	$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))
+		while ($obj = $db->fetch_object($res))
 		{
 			$sql = "DELETE FROM ".MAIN_DB_PREFIX."menu_const WHERE rowid = ".$obj->rowid;
-			$db->query($sql);
+			$result = $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);
@@ -224,9 +232,6 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 				$db->query($sql);
 			}	
 		}
-		
-
-		
 	}
 
 	$sql = "DELETE FROM ".MAIN_DB_PREFIX."menu WHERE rowid = ".$_GET['menuId'];
@@ -234,6 +239,8 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 
 	if ($result == 0)
 	{
+		$this->db->commit();
+
 		llxHeader();
 		print '<div class="ok">'.$langs->trans("MenuDeleted").'</div>';
 		llxFooter();
@@ -241,6 +248,8 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 	}
 	else
 	{
+		$this->db->rollback();
+
 		$reload = 0;
 		$_GET["action"]='';
 	}
@@ -261,6 +270,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create')
 	print_titre($langs->trans("NewMenu"),'','setup');
 	
 	if ($mesg) print $mesg;
+	else print '<br>';
 	
 	print '<form action="./edit.php?action=add&menuId='.$_GET['menuId'].'" method="post" name="formmenucreate">';
 	
@@ -287,16 +297,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create')
 
 	// MenuId Parent
 	print '<tr><td><b>'.$langs->trans('MenuIdParent').'</b></td>';
-	//$menu_handler
-	//print '<td><input type="text" size="50" name="handler" value="all"></td>';
-	print '<td><input type="text" size="50" name="menuId" value="'.$parent_rowid.'"></td>';
+	print '<td><input type="text" size="10" name="menuId" value="'.$parent_rowid.'"></td>';
 	print '<td>'.$langs->trans('DetailMenuIdParent').'</td></tr>';
 
 	//Handler
 	print '<tr><td><b>'.$langs->trans('MenuHandler').'</b></td>';
-	//$menu_handler
-	//print '<td><input type="text" size="50" name="handler" value="all"></td>';
-	print '<td><input type="text" size="50" name="handler" value="'.$menu_handler.'"></td>';
+	print '<td><input type="text" size="30" name="handler" value="'.$menu_handler.'"></td>';
 	print '<td>'.$langs->trans('DetailMenuHandler').'</td></tr>';
 
 	// Type
@@ -309,11 +315,11 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create')
 	//	print '<input type="text" size="50" name="type" value="'.$type.'">';
 	print '</td><td>'.$langs->trans('DetailType').'</td></tr>';
 	//User
-	print '<tr><td><b>'.$langs->trans('User').'</b></td>';
+	print '<tr><td><b>'.$langs->trans('MenuForUsers').'</b></td>';
 	print '<td><select class="flat" name="user">';
+	print '<option value="2" selected>'.$langs->trans("All").'</option>';
 	print '<option value="0">'.$langs->trans('Interne').'</option>';
 	print '<option value="1">'.$langs->trans('Externe').'</option>';
-	print '<option value="2" selected>Tous</option>';
 	print '</select></td>';
 	print '<td>'.$langs->trans('DetailUser').'</td></tr>';
 	//Level
@@ -323,7 +329,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create')
 	//URL
 	print '<tr><td><b>'.$langs->trans('URL').'</b></td><td><input type="text" size="50" name="url" value=""></td><td>'.$langs->trans('DetailUrl').'</td></tr>';
 	//Langs
-	print '<tr><td>'.$langs->trans('Langs').'</td><td><input type="text" size="50" name="langs" value="'.$parent_langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
+	print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="50" name="langs" value="'.$parent_langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
 	//Target
 	print '<tr><td>'.$langs->trans('Target').'</td><td><select class="flat" name="target">';
 	print '<option value=""'.($menu->target==""?' selected="true"':'').'>'.$langs->trans('').'</option>';
@@ -338,9 +344,9 @@ if (isset($_GET["action"]) && $_GET["action"] == 'create')
 	//print '<tr><td>'.$langs->trans('Leftmenu').'</td><td><input type="text" size="50" name="leftmenu" value=""></td><td>'.$langs->trans('DetailLeftmenu').'</td></tr>';
 
 	// Boutons
-	print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="Enregistrer">';
+	print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
 	print '&nbsp;';
-	print '<input type="submit" class="button" name="cancel" value="Annuler"></td></tr>';	
+	print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></td></tr>';	
 
 	print '</table>';
 
@@ -351,6 +357,8 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
 {
 	print_titre($langs->trans("ModifMenu"),'','setup');
 	
+	print '<br>';
+	
 	print '<form action="./edit.php?action=update" method="post" name="formmenuedit">';
 	
 	print '<table class="border" width="100%">';
@@ -382,10 +390,10 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
 			print '<tr><td>'.$langs->trans('MenuHandler').'</td><td>'.$menu->menu_handler.'</td><td>'.$langs->trans('DetailMenuHandler').'</td></tr>';
 
 			// user
-			print '<tr><td>'.$langs->trans('User').'</td><td><select class="flat" name="user">';
+			print '<tr><td>'.$langs->trans('MenuForUsers').'</td><td><select class="flat" name="user">';
+			print '<option value="2"'.($menu->user==2?' selected="true"':'').'>'.$langs->trans("All").'</option>';
         	print '<option value="0"'.($menu->user==0?' selected="true"':'').'>'.$langs->trans('Interne').'</option>';
         	print '<option value="1"'.($menu->user==1?' selected="true"':'').'>'.$langs->trans('Externe').'</option>';
-        	print '<option value="2"'.($menu->user==2?' selected="true"':'').'>Tous</option>';
         	print '</select></td><td>'.$langs->trans('DetailUser').'</td></tr>';
 
 			// Type
@@ -397,7 +405,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
 			// Titre
 			print '<tr><td>'.$langs->trans('Title').'</td><td><input type="text" size="70" name="titre" value="'.$menu->titre.'"></td><td>'.$langs->trans('DetailTitre').'</td></tr>';
 			// Langs
-			print '<tr><td>'.$langs->trans('Langs').'</td><td><input type="text" size="70" name="langs" value="'.$menu->langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
+			print '<tr><td>'.$langs->trans('LangFile').'</td><td><input type="text" size="70" name="langs" value="'.$menu->langs.'"></td><td>'.$langs->trans('DetailLangs').'</td></tr>';
 
 			// Url
 			print '<tr><td>'.$langs->trans('URL').'</td><td><input type="text" size="70" name="url" value="'.$menu->url.'"></td><td>'.$langs->trans('DetailUrl').'</td></tr>';
@@ -409,7 +417,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
         	print '</select></td></td><td>'.$langs->trans('DetailTarget').'</td></tr>';
 			
 			// Right
-			print '<tr><td>'.$langs->trans('Right').'</td><td><input type="text" size="70" name="right" value="'.$menu->right.'"></td><td>'.$langs->trans('DetailRight').'</td></tr>';
+			print '<tr><td>'.$langs->trans('Rights').'</td><td><input type="text" size="70" name="right" value="'.$menu->right.'"></td><td>'.$langs->trans('DetailRight').'</td></tr>';
 
 			// Leftmenu
 			//print '<tr><td>'.$langs->trans('Leftmenu').'</td><td><input type="text" size="70" name="leftmenu" value="'.htmlentities($menu->leftmenu).'"></td><td>'.$langs->trans('DetailLeftmenu').'</td></tr>';
@@ -417,16 +425,20 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
 			//print '<tr><td>'.$langs->trans('Group').'</td><td><input type="text" size="70" name="mainmenu" value="'.$menu->mainmenu.'"></td><td>'.$langs->trans('DetailMainmenu').'</td></tr>';
 
 			// Bouton			
-			print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="Enregistrer">';
-			print '&nbsp;';
-			print '<input type="submit" class="button" name="cancel" value="Annuler"></td></tr>';
+			print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">';
+			print ' &nbsp; &nbsp; ';
+			print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></td></tr>';
 
 			$i++;
 		}
 	}
 	
+	print '</table>';
+	
 	print '</form>';
-		
+	
+	print '<br>';
+	
 	/*
 	* Lignes de contraintes
 	*/
@@ -478,7 +490,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
 		}
 		
 		print '<tr class="liste_titre">';
-		print '<td>'.$langs->trans('Constraint').'</td>';
+		print '<td>'.$langs->trans('Constraints').'</td>';
 		print '<td width="250">'.$langs->trans('User').'</td>';
 		print '<td width="16">&nbsp;</td>';
 		print "</tr>\n";
@@ -495,6 +507,7 @@ elseif (isset($_GET["action"]) && $_GET["action"] == 'edit')
 		print '<td>';
 		print '<select name="user">';
     	print '<option value="0"'.($menu->user==0?' selected="true"':'').'>'.$langs->trans('Interne').'</option>';
+    	print '<option value="0"'.($menu->user==0?' selected="true"':'').'>'.$langs->trans('Interne').'</option>';
     	print '<option value="1"'.($menu->user==1?' selected="true"':'').'>'.$langs->trans('Externe').'</option>';
     	print '<option value="2"'.($menu->user==2?' selected="true"':'').'>Tous</option>';		
 		print '</td>';
diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php
index caefe736d2c..9cab1ef1dfb 100644
--- a/htdocs/admin/menus/index.php
+++ b/htdocs/admin/menus/index.php
@@ -1,6 +1,6 @@
 <?php
-/* Copyright (C) 2007 Patrick Raguin       <patrick.raguin@gmail.com>
- * Copyright (C) 2007 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2007      Patrick Raguin       <patrick.raguin@gmail.com>
+ * Copyright (C) 2007-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  *
  * 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
@@ -17,7 +17,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  * $Id$
- * $Source$
  */
 
 /**
@@ -30,6 +29,7 @@
 require("./pre.inc.php");
 
 $langs->load("other");
+$langs->load("admin");
 
 if (! $user->admin)
   accessforbidden();
@@ -37,6 +37,8 @@ if (! $user->admin)
 $dirtop = "../../includes/menus/barre_top";
 $dirleft = "../../includes/menus/barre_left";
 
+$mesg=$_GET["mesg"];
+
 $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);
@@ -139,11 +141,12 @@ if (isset($_GET["action"]) && $_GET["action"] == 'down')
 
 if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 {
+	$db->begin();
+	
 	$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;
@@ -159,9 +162,6 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 				$db->query($sql);
 			}	
 		}
-		
-
-		
 	}
 
 	$sql = "DELETE FROM ".MAIN_DB_PREFIX."menu WHERE rowid = ".$_GET['menuId'];
@@ -169,13 +169,15 @@ if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 
 	if ($result == 0)
 	{
-		llxHeader();
-		print '<div class="ok">'.$langs->trans("MenuDeleted").'</div>';
-		llxFooter();
+		$db->commit();
+
+		Header("Location: ".DOL_URL_ROOT.'/admin/menus/index.php?mesg='.urlencode($langs->trans("MenuDeleted")));
 		exit ;
 	}
 	else
 	{
+		$db->rollback();
+
 		$reload = 0;
 		$_GET["action"]='';
 	}
@@ -195,6 +197,9 @@ print_fiche_titre($langs->trans("Menus"),'','setup');
 print $langs->trans("MenusEditorDesc")."<br>\n";
 print "<br>\n";
 
+if ($mesg) print '<div class="ok">'.$mesg.'.</div><br>';
+
+
 $h = 0;
 
 $head[$h][0] = DOL_URL_ROOT."/admin/menus.php";
@@ -209,7 +214,7 @@ $h++;
 
 dolibarr_fiche_head($head, 'editor', $langs->trans("Menus"));
 
-// Confirmation de la suppression de la facture
+// Confirmation de la suppression menu
 if ($_GET["action"] == 'delete')
 {
 	$sql = "SELECT m.titre FROM ".MAIN_DB_PREFIX."menu as m WHERE m.rowid = ".$_GET['menuId'];
@@ -221,8 +226,8 @@ if ($_GET["action"] == 'delete')
     print "<br />\n";
 }
 
-print $html->textwithwarning($langs->trans("FeatureExperimental"),$langs->trans("FeatureExperimental"),-1);
-print '<br>';
+//print $html->textwithwarning($langs->trans("FeatureExperimental"),$langs->trans("FeatureExperimental"),-1);
+//print '<br>';
 
 print '<form name="newmenu" class="nocellnopadding" action="'.$_SERVER["PHP_SELF"].'">';
 print '<input type="hidden" action="change_menu_handler">';
@@ -251,20 +256,93 @@ $idLast = -1;
 if ($conf->use_javascript_ajax)
 {
 	print '<script src="menu.js" type="text/javascript"></script>';
+
+	/*-------------------- MAIN -----------------------
+	tableau des �l�ments de l'arbre:
+	c'est un tableau � 2 dimensions.
+	Une ligne repr�sente un �l�ment : data[$x]
+	chaque ligne est d�compos�e en 3 donn�es:
+	  - l'index de l'�l�ment
+	  - l'index de l'�l�ment parent
+	  - la cha�ne � afficher
+	ie: data[]= array (index, index parent, chaine )    
+	*/
+	//il faut d'abord d�clarer un �l�ment racine de l'arbre
+
+	$data[] = array(0,-1,"racine");
+
+	//puis tous les �l�ments enfants
+
+
+	$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
+	$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
+	$sql.= " WHERE menu_handler='".$menu_handler."'";
+	$sql.= " ORDER BY m.order, m.rowid";
+	$res  = $db->query($sql);
+
+	if ($res)
+	{
+		$num = $db->num_rows($res);
+
+		$i = 1;
+		while ($menu = $db->fetch_array ($res))
+		{
+			$langs->load($menu['langs']);
+			$titre = $langs->trans($menu['titre']);
+			$data[] = array($menu['rowid'],$menu['fk_menu'],$titre);
+			$i++;		
+		}
+	}
+
+	//appelle de la fonction r�cursive (ammorce)
+	//avec recherche depuis la racine.
+	print '<ul class="arbre">';
+	recur($data,0,0);
+	print '<script type="text/javascript">imgDel('.$idLast.')</script>';
+	print '</ul>';
+
+	print '</td>';
+
+	print '</tr>';
+
+	print '</table>';
+
+
+	print '</div>';
+
+
+	/*
+	 * Boutons actions
+	 */
+	print '<div class="tabsAction">';
+	print '<a class="butAction" href="'.DOL_URL_ROOT.'/admin/menus/edit.php?menuId=0&amp;action=create">'.$langs->trans("NewMenu").'</a>';
+	print '</div>';
+}
+else
+{
+	$langs->load("errors");
+	print '<div class="error">'.$langs->trans("ErrorFeatureNeedJavascript").'</div>';
 }
 
+$db->close();
+
+llxFooter('$Date$ - $Revision$');
+
+
+
 /* cette fonction g�re le d�callage des �l�ments
    suivant leur position dans l'arborescence
 */
 function affiche($tab,$rang) 
 {
-	global $rangLast, $idLast, $menu_handler;
+	global $conf, $rangLast, $idLast, $menu_handler;
 	
 	if ($conf->use_javascript_ajax)
 	{
 		if($rang == $rangLast)
 		{
 			print '<script type="text/javascript">imgDel('.$idLast.');</script>';
+			//print '<a href="'.DOL_URL_ROOT.'/admin/menus/index.php?menu_handler=eldy&action=delete&menuId='.$idLast.'">aa</a>';
 		}
 		elseif($rang > $rangLast)
 		{
@@ -307,9 +385,9 @@ function affiche($tab,$rang)
 	print '<li id=li'.$tab[0].'>';
 	print '<strong>';
 	print '<a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'">'.$tab[2].'</a></strong>';
-	print '<div class="menuEdit"><a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'"><img src="../../theme/auguria/img/edit.png" class="menuEdit" id="edit'.$tab[0].'" /></a></div>';
-	print '<div class="menuNew"><a href="edit.php?menu_handler='.$menu_handler.'&action=create&menuId='.$tab[0].'"><img src="../../theme/auguria/img/filenew.png" class="menuNew" id="new'.$tab[0].'" /></a></div>';
-	print '<div class="menuDel"><a href="index.php?menu_handler='.$menu_handler.'&action=delete&menuId='.$tab[0].'"><img src="../../theme/auguria/img/stcomm-1.png" class="menuDel" id="del'.$tab[0].'" /></a></div>';
+	print '<div class="menuEdit"><a href="edit.php?menu_handler='.$menu_handler.'&action=edit&menuId='.$tab[0].'">'.img_edit('default',0,'class="menuEdit" id="edit'.$tab[0].'"').'</a></div>';
+	print '<div class="menuNew"><a href="edit.php?menu_handler='.$menu_handler.'&action=create&menuId='.$tab[0].'">'.img_edit_add('default',0,'class="menuNew" id="new'.$tab[0].'"').'</a></div>';
+	print '<div class="menuDel"><a href="index.php?menu_handler='.$menu_handler.'&action=delete&menuId='.$tab[0].'">'.img_delete('default',0,'class="menuDel" id="del'.$tab[0].'"').'</a></div>';
 	print '<div class="menuFleche"><a href="index.php?menu_handler='.$menu_handler.'&action=up&menuId='.$tab[0].'">'.img_picto("Monter","1uparrow").'</a><a href="index.php?action=down&menuId='.$tab[0].'">'.img_picto("Descendre","1downarrow").'</a></div>';
 	print '</li>';
 	echo "\n";	
@@ -345,67 +423,5 @@ function recur($tab,$pere,$rang) {
 	}
 }
 
-/*-------------------- MAIN -----------------------
-  tableau des �l�ments de l'arbre:
-    c'est un tableau � 2 dimensions.
-    Une ligne repr�sente un �l�ment : data[$x]
-    chaque ligne est d�compos�e en 3 donn�es:
-      - l'index de l'�l�ment
-      - l'index de l'�l�ment parent
-      - la cha�ne � afficher
-    ie: data[]= array (index, index parent, chaine )    
-*/
-  //il faut d'abord d�clarer un �l�ment racine de l'arbre
-   
-$data[] = array(0,-1,"racine");
-
-  //puis tous les �l�ments enfants
-  
-
-$sql = "SELECT m.rowid, m.fk_menu, m.titre, m.langs";
-$sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
-$sql.= " WHERE menu_handler='".$menu_handler."'";
-$sql.= " ORDER BY m.order, m.rowid";
-$res  = $db->query($sql);
-
-if ($res)
-{
-	$num = $db->num_rows();
-
-	$i = 1;
-	while ($menu = $db->fetch_array ($res))
-	{
-		$langs->load($menu['langs']);
-		$titre = $langs->trans($menu['titre']);
-		$data[] = array($menu['rowid'],$menu['fk_menu'],$titre);
-		$i++;		
-	}
-}
-
-  //appelle de la fonction r�cursive (ammorce)
-  //avec recherche depuis la racine.
-  	print '<ul class="arbre">';
-  		recur($data,0,0);
-  		print '<script type="text/javascript">imgDel('.$idLast.')</script>';
-  	print '</ul>';
-
-
-	print '</td>';
-
-	print '</tr>';
-	
-	print '</table>';
-
-
-print '</div>';
-	
-print '<div class="tabsAction">';
-print '<a class="butAction" href="'.DOL_URL_ROOT.'/admin/menus/edit.php?menuId=0&amp;action=create">'.$langs->trans("NewMenu").'</a>';
-print '</div>';
-
-
-$db->close();
-
-llxFooter('$Date$ - $Revision$');
 ?>
 
diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example
index 53d5ac2c54b..b1869b792f4 100644
--- a/htdocs/conf/conf.php.example
+++ b/htdocs/conf/conf.php.example
@@ -131,7 +131,7 @@ $character_set_client="ISO-8859-1";
 # $dolibarr_main_authentication="dolibarr";
 # $dolibarr_main_authentication="ldap";
 #
-$dolibarr_main_authentication="dolibarr"
+$dolibarr_main_authentication="dolibarr";
 
 
 # Parameters used to setup LDAP authentication.
diff --git a/htdocs/includes/boxes/box_actions.php b/htdocs/includes/boxes/box_actions.php
index 2b28ed43495..fd88b65d424 100644
--- a/htdocs/includes/boxes/box_actions.php
+++ b/htdocs/includes/boxes/box_actions.php
@@ -52,7 +52,7 @@ class box_actions extends ModeleBoxes {
         global $langs;
         $langs->load("boxes");
 
-        $this->boxlabel="Actions commerciales";
+        $this->boxlabel=$langs->trans("BoxLastActions");
     }
    
     /**
diff --git a/htdocs/includes/menus/barre_top/auguria_backoffice.php b/htdocs/includes/menus/barre_top/auguria_backoffice.php
index 556ea6ae561..ff719fe7b8e 100644
--- a/htdocs/includes/menus/barre_top/auguria_backoffice.php
+++ b/htdocs/includes/menus/barre_top/auguria_backoffice.php
@@ -69,7 +69,7 @@ class MenuTop {
 
         if (! session_id()) {
             session_name("DOLSESSID_".$dolibarr_main_db_name);
-            session_start();    // En mode authentification PEAR, la session a d�j� �t� ouverte
+            session_start();
         }
         
         $user->getrights("");
@@ -86,7 +86,7 @@ class MenuTop {
         }
 
         
-        $menuArbo = new menudb($this->db,'auguria','top');
+        $menuArbo = new MenuDb($this->db,'auguria','top');
  		$tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
         
         print '<ul>';
@@ -104,8 +104,6 @@ class MenuTop {
         	}
       	
         }
-        
-        
 
         print '</ul>';
 
diff --git a/htdocs/includes/menus/barre_top/auguria_frontoffice.php b/htdocs/includes/menus/barre_top/auguria_frontoffice.php
index dfe533455e2..6e7f728c45a 100644
--- a/htdocs/includes/menus/barre_top/auguria_frontoffice.php
+++ b/htdocs/includes/menus/barre_top/auguria_frontoffice.php
@@ -69,7 +69,7 @@ class MenuTop {
 
         if (! session_id()) {
             session_name("DOLSESSID_".$dolibarr_main_db_name);
-            session_start();    // En mode authentification PEAR, la session a d�j� �t� ouverte
+            session_start();
         }
         
         $user->getrights("");
@@ -104,9 +104,7 @@ class MenuTop {
         	}
       	
         }
-        
-        
-
+ 
         print '</ul>';
 
     }
diff --git a/htdocs/includes/menus/barre_top/eldy_backoffice.php b/htdocs/includes/menus/barre_top/eldy_backoffice.php
index 55b8211fc34..474a577c764 100644
--- a/htdocs/includes/menus/barre_top/eldy_backoffice.php
+++ b/htdocs/includes/menus/barre_top/eldy_backoffice.php
@@ -423,6 +423,26 @@ class MenuTop {
 
             print '<td class="tmenu"><a '.$class.' href="'.DOL_URL_ROOT.'/mantis/mantis.php?mainmenu=mantis"'.($this->atarget?" target=$this->atarget":"").'>'.$langs->trans("BugTracker").'</a></td>';
         }
+
+		
+		// Affichage des menus personnalises
+		require_once(DOL_DOCUMENT_ROOT."/admin/menus/module_menudb.php");
+
+        $menuArbo = new MenuDb($this->db,'eldy','top');
+ 		$tabMenu = $menuArbo->menutopCharger(0,$_SESSION['mainmenu']);
+        for($i=0;$i<count($tabMenu);$i++)
+        {
+        	if ($tabMenu[$i]['right'] == true)
+        	{
+        		print '<td class="tmenu"><a class="tmenu" href="'.DOL_URL_ROOT.$tabMenu[$i]['url'].'"'.($this->atarget?" target=$this->atarget":"").'>'.$tabMenu[$i]['titre'].'</a></td>';
+        	}
+        	else
+        	{
+        		print '<td class="tmenu"><font class="tmenudisabled">'.$tabMenu[$i]['titre'].'</font></td>';
+        	}
+      	
+        }
+		
         
         print '</tr></table>';
 
diff --git a/htdocs/includes/modules/modAgenda.class.php b/htdocs/includes/modules/modAgenda.class.php
index 460dd04e9d2..ec9c409dd81 100644
--- a/htdocs/includes/modules/modAgenda.class.php
+++ b/htdocs/includes/modules/modAgenda.class.php
@@ -82,6 +82,7 @@ class modAgenda extends DolibarrModules
         // Boites
         //-------
         $this->boxes = array();
+        $this->boxes[0][1] = "box_actions.php";
     
         // Permissions
         //------------
diff --git a/htdocs/includes/modules/modCommercial.class.php b/htdocs/includes/modules/modCommercial.class.php
index 68df048e255..3930344ee74 100644
--- a/htdocs/includes/modules/modCommercial.class.php
+++ b/htdocs/includes/modules/modCommercial.class.php
@@ -80,9 +80,6 @@ class modCommercial extends DolibarrModules
         $this->boxes[1][0] = "Derniers prospects enregistr�s";
         $this->boxes[1][1] = "box_prospect.php";
         
-        $this->boxes[2][0] = "Derni�res actions";
-        $this->boxes[2][1] = "box_actions.php";
-        
         // Permissions
         $this->rights = array();
         $this->rights_class = 'commercial';
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index a318778b902..99fc8a869b6 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -44,6 +44,8 @@ ComptaSetup=Accounting module setup
 UserSetup=Users' management setup
 MenuSetup=Menus management setup
 MenuLimits=Limits and accuracy
+MenuIdParent=Parent menu id
+DetailMenuIdParent=Id of parent menu (0 for a top menu)
 NotConfigured=Not configured
 Setup=Setup
 Activation=Activation
@@ -70,7 +72,9 @@ Boxes=Boxes
 PositionByDefault=Default order
 Position=Order
 MenusDesc=Menus managers define content of the 2 menu bars (horizontal bar and vertical bar). 
-MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid having dolibarr instable and menu entries definitely not reachable.
+MenusEditorDesc=The menu editor allow you to define personalized entries in menus. Use it carefully to avoid having dolibarr instable and menu entries definitely not reachable.<br>Some modules add some entries in menus (in menu <b>all</b> in most cases). If you removed some of this entries by error, you can restore them by disabling and reenabling the module.
+MenuForUsers=Menu for users
+LangFile=File .langs
 System=System
 SystemInfo=System information
 SystemTools=System tools
@@ -804,14 +808,14 @@ MenuHandler=Menu handler
 DetailId=Id menu
 DetailMenuHandler=Menu handler (or "all" for all menu handlers)
 DetailType=Type of menu (top or left)
-DetailTitre=Menu label
+DetailTitre=Menu label or label code for translation
 DetailMainmenu=Group for which it belongs (obsolete)
-DetailUrl=URL where menu send you
+DetailUrl=URL where menu send you (Absolute URL link or external link with http://)
 DetailLeftmenu=Displya condition or not (obsolete)
 DetailRight=Condition to display unauthorized grey menus
-DetailLangs=Lang file name for label translation
+DetailLangs=Lang file name for label code translation
 DetailUser=Intern / Extern / All
-DetailTarget=Target
+DetailTarget=Target for links (_new top open a new window)
 DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu)
 ModifMenu=Menu change
 DeleteMenu=Delete menu entry
diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang
index 0323db55b73..d0c284b44e6 100644
--- a/htdocs/langs/en_US/boxes.lang
+++ b/htdocs/langs/en_US/boxes.lang
@@ -12,6 +12,7 @@ BoxLastCustomers=Last customers
 BoxLastCustomerOrders=Last customer orders
 BoxLastSuppliers=Last suppliers
 BoxLastBooks=Last books
+BoxLastActions=Last actions
 BoxCurrentAccounts=Current accounts balance
 BoxSalesTurnover=Sales turnover
 BoxTotalUnpayedCustomerBills=Total unpayed customer's invoices
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index 366573a461c..9404b222ddb 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -1,19 +1,21 @@
-# Dolibarr language file - en_US - errors
-ErrorDuplicateTrigger=A trigger file with class nam '<b>%s</b>' is present sevaral times. Remove duplicate trigger file in directory '<b>%s</b>'.
-ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
-ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type.
-ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only.
-ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different.
-ErrorBadThirdPartyName=Bad value for third party name
-ErrorBadCustomerCodeSyntax=Bad syntax for customer code
-ErrorCustomerCodeRequired=Customer code required
-ErrorCustomerCodeAlreadyUsed=Customer code already used
-ErrorPrefixRequired=Prefix required
-ErrorBadSupplierCodeSyntax=Bad syntax for supplier code
-ErrorSupplierCodeRequired=Supplier code required
+# Dolibarr language file - en_US - errors
+ErrorDuplicateTrigger=A trigger file with class nam '<b>%s</b>' is present sevaral times. Remove duplicate trigger file in directory '<b>%s</b>'.
+ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
+ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type.
+ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only.
+ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different.
+ErrorBadThirdPartyName=Bad value for third party name
+ErrorBadCustomerCodeSyntax=Bad syntax for customer code
+ErrorCustomerCodeRequired=Customer code required
+ErrorCustomerCodeAlreadyUsed=Customer code already used
+ErrorPrefixRequired=Prefix required
+ErrorBadSupplierCodeSyntax=Bad syntax for supplier code
+ErrorSupplierCodeRequired=Supplier code required
 ErrorSupplierCodeAlreadyUsed=Supplier code already used
 ErrorBadParameters=Bad parameters
-UserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities.
+UserCannotBeDelete=User can not be deleted. May be it is associated on Dolibarr entities.
 ErrorFieldsRequired=Some required fields were not filled.
 ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter <b>safe_mode</b> is enabled on this PHP, check that Dolibarr php files owns to web server user (or group).
-ErrorNoMailDefinedForThisUser=No mail defined for this user
+ErrorNoMailDefinedForThisUser=No mail defined for this user
+ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display.
+ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'.
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index f0a8ec2fca6..a6647b47e1f 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -43,6 +43,8 @@ UseAvToScanUploadedFiles=Utilisation d'un anti-virus pour scanner les fichiers u
 ComptaSetup=Configuration du module Comptabilit�
 UserSetup=Configuration gestion des utilisateurs
 MenuSetup=Administration des menus par base de donn�es
+MenuIdParent=Id du menu parent
+DetailMenuIdParent=Id du menu parent (0 pour un menu du haut)
 MenuLimits=Limites et pr�cision
 NotConfigured=Non configur�
 Setup=Configuration
@@ -70,7 +72,9 @@ Boxes=Bo
 PositionByDefault=Position par d�faut
 Position=Ordre
 MenusDesc=Les gestionnaires de menu d�finissent le contenu des 2 barres de menus (la barre horizontale et la barre verticale). Il est possible de mettre un gestionnaire diff�rent selon que l'utilisateur soit interne ou externe.
-MenusEditorDesc=L'�diteur de menu permet de d�finir des entr�es personalis�es dans les menus. Il doit �tre utilis� avec prudence sous peine de mettre Dolibarr en situation instable n�c�ssitant une r�installation pour retrouver un menu coh�rent.
+MenusEditorDesc=L'�diteur de menu permet de d�finir des entr�es personalis�es dans les menus. Il doit �tre utilis� avec prudence sous peine de mettre Dolibarr en situation instable n�c�ssitant une r�installation pour retrouver un menu coh�rent.<br>Certains modules ajoutent des entr�es personnalis�es aux menus (dans le menu <b>all</b> en g�n�ral). Si vous d�truisez ces entr�es par erreur, vous pourrez les r�cup�rer en d�sactivant puis r�activant le module.
+MenuForUsers=Menu pour les utilisateurs
+LangFile=Fichier .langs
 System=Syst�me
 SystemInfo=Infos Syst�me
 SystemTools=Outils Syst�me
@@ -809,14 +813,14 @@ MenuHandler=Gestionnaire de menu
 DetailId=Identifiant du menu
 DetailMenuHandler=Nom du gestionnaire menu (ou "all" pour tous)
 DetailType=Type de menu (top ou left)
-DetailTitre=Libell� du menu
+DetailTitre=Libell� du menu ou code libell� � traduire
 DetailMainmenu=Groupe auquel il appartient (obsolete)
-DetailUrl=URL de la page vers laquelle le menu pointe
+DetailUrl=URL vers laquelle le menu pointe (Lien URL absolu ou lien externe avec http://)
 DetailLeftmenu=Condition d'affichage ou non (obsolete)
 DetailRight=Condition d'affichage plein ou gris�
-DetailLangs=Fichier langs pour la traduction du titre
+DetailLangs=Fichier langs pour la traduction du code libell�
 DetailUser=Interne / Externe / Tous
-DetailTarget=Cible
+DetailTarget=Cible liens menu (_new pour ouvrir une nouvelle fenetre)
 DetailLevel=Niveau (-1:menu top, 0:entete menu, >0 menu et sous menu)
 ModifMenu=Modification du menu
 DeleteMenu=Effacer entr�e de menu
diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang
index 2801b8a0501..2b3285b147a 100644
--- a/htdocs/langs/fr_FR/boxes.lang
+++ b/htdocs/langs/fr_FR/boxes.lang
@@ -12,6 +12,7 @@ BoxLastCustomers=Derniers clients
 BoxLastCustomerOrders=Derni�res commandes
 BoxLastSuppliers=Derniers fournisseurs
 BoxLastBooks=Derniers livres
+BoxLastActions=Derni�res actions
 BoxCurrentAccounts=Soldes Comptes courants
 BoxSalesTurnover=Chiffre d'affaire
 BoxTotalUnpayedCustomerBills=Total des factures clients impay�es
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index 20264046c94..0bb0abd63ea 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -1,19 +1,21 @@
-# Dolibarr language file - fr_FR - errors
-ErrorDuplicateTrigger=Un fichier trigger de classe '<b>%s</b>' est present plusieurs fois. Supprimer le doublon du r�pertoire '<b>%s</b>'.
-ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
-ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est d�j� d�fini comme contact pour ce type.
+# Dolibarr language file - fr_FR - errors
+ErrorDuplicateTrigger=Un fichier trigger de classe '<b>%s</b>' est present plusieurs fois. Supprimer le doublon du r�pertoire '<b>%s</b>'.
+ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
+ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est d�j� d�fini comme contact pour ce type.
 ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que les mode de r�glement de type <b>esp�ce</b>.
 ErrorFromToAccountsMustDiffers=Le compte source et destination doivent etre diff�rents.
-ErrorBadThirdPartyName=Nom de tiers incorrect
-ErrorBadCustomerCodeSyntax=La syntaxe du code client est incorrect
-ErrorCustomerCodeRequired=Code client obligatoire
-ErrorCustomerCodeAlreadyUsed=Code client deja utilise
-ErrorPrefixRequired=Prefix obligatoire
-ErrorBadSupplierCodeSyntax=La syntaxe du code fournisseur est incorrect
-ErrorSupplierCodeRequired=Code fournisseur obligatoire
+ErrorBadThirdPartyName=Nom de tiers incorrect
+ErrorBadCustomerCodeSyntax=La syntaxe du code client est incorrect
+ErrorCustomerCodeRequired=Code client obligatoire
+ErrorCustomerCodeAlreadyUsed=Code client deja utilise
+ErrorPrefixRequired=Prefix obligatoire
+ErrorBadSupplierCodeSyntax=La syntaxe du code fournisseur est incorrect
+ErrorSupplierCodeRequired=Code fournisseur obligatoire
 ErrorSupplierCodeAlreadyUsed=Code fournisseur deja utilise
 ErrorBadParameters=Parametres incorrects
-UserCannotBeDelete=L'utilisateur ne peut pas etre supprim�e. Peut-�tre est-il associ� � des �l�ments de Dolibarr.
+UserCannotBeDelete=L'utilisateur ne peut pas etre supprim�e. Peut-�tre est-il associ� � des �l�ments de Dolibarr.
 ErrorFieldsRequired=Des champs obligatoires n'ont pas �t� renseign�s
 ErrorFailedToCreateDir=Echec a la creation d'un repertoire. Verifiez que le user du serveur Web a bien les droits d'ecriture dans les repertoires documents de Dolibarr. Si le parametre <b>safe_mode</b> a �t� activ� sur ce PHP, v�rifier que les fichiers php dolibarr appartiennent � l'utilisateur du serveur Web.
-ErrorNoMailDefinedForThisUser=EMail non defini pour cet utilisateur
\ No newline at end of file
+ErrorNoMailDefinedForThisUser=EMail non defini pour cet utilisateur
+ErrorFeatureNeedJavascript=Cette fonctionnalit� a besoin de javascript activ� pour fonctionner. Modifier dans configuration - affichage.
+ErrorTopMenuMustHaveAParentWithId0=Un menu de type 'Top' ne peut avoir de menu p�re. Mettre 0 dans l'id p�re ou choisir un menu de type 'Left'.
\ No newline at end of file
diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php
index feed3dcba38..9e7ef92586a 100644
--- a/htdocs/lib/functions.inc.php
+++ b/htdocs/lib/functions.inc.php
@@ -1029,12 +1029,13 @@ function img_edit_remove($alt = "default")
         \param      float       Si il faut y mettre le style "float: right"
         \return     string      Retourne tag img
 */
-function img_edit($alt = "default",$float=0)
+function img_edit($alt = "default", $float=0, $other='')
 {
     global $conf,$langs;
     if ($alt=="default") $alt=$langs->trans("Modify");
     $img='<img src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/edit.png" border="0" alt="'.$alt.'" title="'.$alt.'"';
     if ($float) $img.=' style="float: right"';
+	if ($other) $img.=' '.$other;
     $img.='>';
     return $img;
 }
diff --git a/htdocs/theme/auguria/auguria.css.php b/htdocs/theme/auguria/auguria.css.php
index 64d34d37e3a..06aab29f225 100644
--- a/htdocs/theme/auguria/auguria.css.php
+++ b/htdocs/theme/auguria/auguria.css.php
@@ -30,7 +30,7 @@ require("../../conf/conf.php");
 header('Content-type: text/css');
 // Important: Avoid page request by browser and dynamic build at
 // each Dolibarr page access.
-if (! isset($conf->global->MAIN_FEATURES_LEVEL) || $conf->global->MAIN_FEATURES_LEVEL < 2)
+if (empty($conf->global->MAIN_FEATURES_LEVEL) || $conf->global->MAIN_FEATURES_LEVEL < 2)
 {
 	header('Cache-Control: max-age=3600, public, must-revalidate');
 }
@@ -167,16 +167,19 @@ div.tmenu
     border-left: 0px;
     padding: 0px 0px 0px 0px;
     margin: 0px 0px 2px 0px;
+    font-size: 12px;
+    height: 19px;
     background-image : url(<?php echo $dolibarr_main_url_root.'/theme/auguria/img/nav.jpg' ?>) ;
     height: 22px;
 }
 div.tmenu  .tmenudisabled
 {
 	color: #757575;
-	font-size: 13px;
+	font-size: 12px;
 	padding-left:10px;
 	padding-right:10px;
 	padding-top:3px;
+	cursor: not-allowed;
 }
 
 table.tmenu
@@ -240,8 +243,9 @@ font.tmenudisabled
   color: #93a5aa;
   padding: 0px 5px 0px 5px;
   margin: 0px 0px 2px 0px;
-  font-weight:bold;
-  font-size:12px;
+  font-weight: normal;
+  font-size: 12px;
+  cursor: not-allowed;  
 }
 
 a.tmenu:active
@@ -906,6 +910,10 @@ font-size: 12px;
 .warning { color: #887711; }
 .error   { color: #550000; font-weight: bold; }
 
+td.warning {	/* Utilise par Smarty */
+  background: #FF99A9;
+}
+
 div.ok {
   color: #114466;
 }
@@ -921,6 +929,13 @@ div.error {
   border: 1px solid #8C9CAB;
 }
 
+div.info {	/* Info admin */
+  color: #888888;
+  padding: 0.2em 0.2em 0.2em 0.2em;
+  margin: 0.5em 0em 0.5em 0em;
+  border: 1px solid #ACACAB;
+}
+
 
 /*
  *   Liens Payes/Non payes
diff --git a/htdocs/theme/eldy/eldy.css.php b/htdocs/theme/eldy/eldy.css.php
index 53dda0fefad..49c0e6b59df 100644
--- a/htdocs/theme/eldy/eldy.css.php
+++ b/htdocs/theme/eldy/eldy.css.php
@@ -183,7 +183,7 @@ div.tmenu
     border-bottom: 1px solid #8B9999;
     padding: 0px 0px 0px 0px;
     margin: 0px 0px 2px 0px;
-    font-weight: bold;
+    font-weight: normal;
     font-size: 12px;
     height: 19px;
     background: #b3c5cc;
@@ -194,10 +194,11 @@ div.tmenu
 div.tmenu  .tmenudisabled
 {
 	color: #757575;
-	font-size: 13px;
+	font-size: 12px;
 	padding-left:10px;
 	padding-right:10px;
 	padding-top:3px;
+	cursor: not-allowed;
 }
 
 table.tmenu
@@ -262,7 +263,7 @@ font.tmenudisabled
   padding: 0px 5px 0px 5px;
   margin: 0px 0px 2px 0px;
   font-weight: normal;
-  font-size:12px;
+  font-size: 12px;
   cursor: not-allowed;
 }
 
-- 
GitLab