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 ' '; - 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 ' '; - 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 ' '; + 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"> </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&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&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