From 9b548e41259741921d327fb2f5dc548d856f914a Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Thu, 15 Dec 2022 16:08:44 +0100 Subject: [PATCH 01/18] FIX : "read" right of hrm evaluations must allow to see only user evaluations and those of subordinates, readall is another right + several fixes --- htdocs/core/modules/modHRM.class.php | 8 ++++++++ htdocs/hrm/class/evaluation.class.php | 6 ++++-- htdocs/hrm/evaluation_card.php | 2 +- htdocs/hrm/evaluation_list.php | 8 +++++++- htdocs/langs/en_US/admin.lang | 13 +++++++------ htdocs/langs/fr_FR/admin.lang | 11 ++++++----- 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/htdocs/core/modules/modHRM.class.php b/htdocs/core/modules/modHRM.class.php index 7df3bcc6dcf..b35c8736fd8 100644 --- a/htdocs/core/modules/modHRM.class.php +++ b/htdocs/core/modules/modHRM.class.php @@ -265,6 +265,14 @@ class modHRM extends DolibarrModules $this->rights[$r][4] = 'write_personal_information'; $this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->hrm->write_personal_information->write) $r++; + + // Evaluation + $this->rights[$r][0] = 4033; // Permission id (must not be already used) + $this->rights[$r][1] = 'Read all evaluations'; // Permission label + $this->rights[$r][3] = 0; // Permission by default for new user (0/1) + $this->rights[$r][4] = 'evaluation'; + $this->rights[$r][5] = 'readall'; // In php code, permission will be checked by test if ($user->rights->hrm->evaluation->read) + $r++; } /** diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 77403631725..5dfab9b9b10 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -118,7 +118,7 @@ class Evaluation extends CommonObject 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>'1', 'position'=>1000, 'notnull'=>-1, 'visible'=>-2,), 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'default'=>0, 'visible'=>5, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Validated', '6' => 'Closed'),), 'date_eval' => array('type'=>'date', 'label'=>'DateEval', 'enabled'=>'1', 'position'=>502, 'notnull'=>1, 'visible'=>1,), - 'fk_user' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'User', 'enabled'=>'1', 'position'=>504, 'notnull'=>1, 'visible'=>1,), + 'fk_user' => array('type'=>'integer:User:user/class/user.class.php:0', 'label'=>'User', 'enabled'=>'1', 'position'=>504, 'notnull'=>1, 'visible'=>1,), 'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'Job', 'enabled'=>'1', 'position'=>505, 'notnull'=>1, 'visible'=>1,), ); public $rowid; @@ -182,7 +182,7 @@ class Evaluation extends CommonObject */ public function __construct(DoliDB $db) { - global $conf, $langs; + global $conf, $langs, $user; $this->db = $db; @@ -193,6 +193,8 @@ class Evaluation extends CommonObject $this->fields['entity']['enabled'] = 0; } + if(empty($user->rights->hrm->evaluation->readall)) $this->fields['fk_user']['type'].= ':rowid IN('.implode(", ", $user->getAllChildIds(1)).')'; + $this->date_eval = dol_now(); // Unset fields that are disabled diff --git a/htdocs/hrm/evaluation_card.php b/htdocs/hrm/evaluation_card.php index 9c73d8c99b6..80110a3e8a0 100644 --- a/htdocs/hrm/evaluation_card.php +++ b/htdocs/hrm/evaluation_card.php @@ -82,7 +82,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be includ $permissiontoread = $user->rights->hrm->evaluation->read; $permissiontoadd = $user->rights->hrm->evaluation->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php -$permissiontovalidate = $user->rights->hrm->evaluation_advance->validate; +$permissiontovalidate = (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->rights->hrm->evaluation_advance->validate) || (empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $permissiontoadd); $permissiontoClose = $user->rights->hrm->evaluation->write; $permissiontodelete = $user->rights->hrm->evaluation->delete/* || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT)*/; $permissiondellink = $user->rights->hrm->evaluation->write; // Used by the include of actions_dellink.inc.php diff --git a/htdocs/hrm/evaluation_list.php b/htdocs/hrm/evaluation_list.php index cc584b2e8d4..fb940b9dbb9 100644 --- a/htdocs/hrm/evaluation_list.php +++ b/htdocs/hrm/evaluation_list.php @@ -131,6 +131,7 @@ $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); $permissiontoread = $user->rights->hrm->evaluation->read; +$permissiontoreadall = $user->rights->hrm->evaluation->readall; $permissiontoadd = $user->rights->hrm->evaluation->write; $permissiontodelete = $user->rights->hrm->evaluation->delete; @@ -146,7 +147,7 @@ if ($user->socid > 0) accessforbidden(); //$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); //restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft); //if (empty($conf->hrm->enabled)) accessforbidden(); -//if (!$permissiontoread) accessforbidden(); +if (!$permissiontoread) accessforbidden(); @@ -273,6 +274,11 @@ foreach ($search as $key => $val) { if ($search_all) { $sql .= natural_search(array_keys($fieldstosearchall), $search_all); } + +if(empty($permissiontoreadall)) { + $sql.= " AND t.fk_user IN(".implode(", ", $user->getAllChildIds(1)).") "; +} + //$sql.= dolSqlDateFilter("t.field", $search_xxxday, $search_xxxmonth, $search_xxxyear); // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 7dd27ff29ab..f53323759d8 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -969,13 +969,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -2280,4 +2281,4 @@ INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one NoName=No name -CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: \ No newline at end of file +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index ed427b72ff1..91b925bd4f7 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -971,13 +971,14 @@ Permission3301=Générer de nouveaux modules Permission4001=Lire compétence/emploi/poste Permission4002=Créer/modifier une compétence/un emploi/un poste Permission4003=Supprimer compétence/emploi/poste -Permission4020=Lire les évaluations -Permission4021=Créer/modifier votre évaluation -Permission4022=Valider l'évaluation -Permission4023=Supprimer l'évaluation -Permission4030=Voir menu de comparaison +Permission4021=Lire les évaluations (les vôtres et celles de vos subordonnés) +Permission4022=Créer/modifier les évaluations +Permission4023=Valider l'évaluation +Permission4025=Supprimer l'évaluation +Permission4028=Voir menu de comparaison Permission4031=Lire les informations personnelles Permission4032=Ecrire les informations personnelles +Permission4033=Lire toutes les évaluations (même celles des utilisateurs non subordonnés) Permission10001=Lire le contenu du site Permission10002=Créer/modifier le contenu du site Web (contenu HTML et JavaScript) Permission10003=Créer/modifier le contenu du site Web (code php dynamique). Dangereux, doit être réservé à un nombre restreint de développeurs. From c9bf5f85ea26fbfc0d78ada13041ac2eae7a529f Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 15 Dec 2022 15:24:52 +0000 Subject: [PATCH 02/18] Fixing style errors. --- htdocs/hrm/class/evaluation.class.php | 2 +- htdocs/hrm/evaluation_list.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 5dfab9b9b10..6e8c4072a69 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -193,7 +193,7 @@ class Evaluation extends CommonObject $this->fields['entity']['enabled'] = 0; } - if(empty($user->rights->hrm->evaluation->readall)) $this->fields['fk_user']['type'].= ':rowid IN('.implode(", ", $user->getAllChildIds(1)).')'; + if (empty($user->rights->hrm->evaluation->readall)) $this->fields['fk_user']['type'].= ':rowid IN('.implode(", ", $user->getAllChildIds(1)).')'; $this->date_eval = dol_now(); diff --git a/htdocs/hrm/evaluation_list.php b/htdocs/hrm/evaluation_list.php index fb940b9dbb9..b2eeaf2c886 100644 --- a/htdocs/hrm/evaluation_list.php +++ b/htdocs/hrm/evaluation_list.php @@ -275,7 +275,7 @@ if ($search_all) { $sql .= natural_search(array_keys($fieldstosearchall), $search_all); } -if(empty($permissiontoreadall)) { +if (empty($permissiontoreadall)) { $sql.= " AND t.fk_user IN(".implode(", ", $user->getAllChildIds(1)).") "; } From 6a71e47d57204adb60299ad76ed2c72a32985700 Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Thu, 15 Dec 2022 17:06:08 +0100 Subject: [PATCH 03/18] FIX : travis --- htdocs/hrm/class/evaluation.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 5dfab9b9b10..9453211bfe6 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -193,7 +193,7 @@ class Evaluation extends CommonObject $this->fields['entity']['enabled'] = 0; } - if(empty($user->rights->hrm->evaluation->readall)) $this->fields['fk_user']['type'].= ':rowid IN('.implode(", ", $user->getAllChildIds(1)).')'; + if(empty($user->rights->hrm->evaluation->readall)) $this->fields['fk_user']['type'].= ':rowid IN('.$this->db->sanitize(implode(", ", $user->getAllChildIds(1))).')'; $this->date_eval = dol_now(); From 4b833d1c751e101449fc2e1184ad26e5e86840c8 Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Thu, 15 Dec 2022 17:45:30 +0100 Subject: [PATCH 04/18] FIX : travis --- htdocs/hrm/evaluation_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/evaluation_list.php b/htdocs/hrm/evaluation_list.php index b2eeaf2c886..84080f930fa 100644 --- a/htdocs/hrm/evaluation_list.php +++ b/htdocs/hrm/evaluation_list.php @@ -276,7 +276,7 @@ if ($search_all) { } if (empty($permissiontoreadall)) { - $sql.= " AND t.fk_user IN(".implode(", ", $user->getAllChildIds(1)).") "; + $sql.= " AND t.fk_user IN(".$db->sanitize(implode(", ", $user->getAllChildIds(1))).") "; } //$sql.= dolSqlDateFilter("t.field", $search_xxxday, $search_xxxmonth, $search_xxxyear); From 748d8cdc542dcc6dc3134fd5c35cf681292668d0 Mon Sep 17 00:00:00 2001 From: daraelmin Date: Sat, 17 Dec 2022 17:10:46 +0100 Subject: [PATCH 05/18] Fix Darkmode bgcolor for warning --- htdocs/theme/eldy/global.inc.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 6102e8584e8..73e5ed5d666 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -53,6 +53,7 @@ --productlinestockod: #002200; --productlinestocktoolow: #884400; --infoboxmoduleenabledbgcolor : linear-gradient(0.4turn, #fff, #fff, #fff, #e4efe8); + --tablevalidbgcolor: rgb(252, 248, 227); } global->THEME_DARKMODEENABLED)) { --amountpaymentcomplete:rgb(101,184,77); --amountremaintopaybackcolor:rbg(245,130,46); --infoboxmoduleenabledbgcolor : linear-gradient(0.4turn, #000, #000, #000, #274231); + --tablevalidbgcolor: rgb(80, 64, 33); } body, button { @@ -5001,7 +5003,7 @@ table.valid { padding-right: 4px; padding-bottom: 4px; margin: 0px 0px; - background: #fcf8e3; + background: var(--tablevalidbgcolor); } .validtitre { From e444cbfbd42d47c72f5ad49f14ad05434bf51ef0 Mon Sep 17 00:00:00 2001 From: daraelmin Date: Sat, 17 Dec 2022 17:20:34 +0100 Subject: [PATCH 06/18] Fix Darkmode color of menu without link --- htdocs/theme/eldy/global.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 6102e8584e8..e1d43513ff3 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3164,7 +3164,7 @@ a.vmenu:link, a.vmenu:visited { a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-family: ; text-align: ; - color: #202020; + color: var(--colortextbackvmenu); margin: 1px 1px 1px 6px; } span.vsmenudisabled, font.vsmenudisabled { From b3aef891e2788c62155fb0a54449bed5aa724f85 Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Tue, 20 Dec 2022 10:24:43 +0100 Subject: [PATCH 07/18] FIX trigger LINEORDER_DELETE, extrafields should be removed after delete trigger. --- htdocs/commande/class/commande.class.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 73988594e6f..f90fac176dc 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -4331,16 +4331,6 @@ class OrderLine extends CommonOrderLine dol_syslog("OrderLine::delete", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - // Remove extrafields - if (!$error) { - $this->id = $this->rowid; - $result = $this->deleteExtraFields(); - if ($result < 0) { - $error++; - dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); - } - } - if (!$error && !$notrigger) { // Call trigger $result = $this->call_trigger('LINEORDER_DELETE', $user); @@ -4350,6 +4340,15 @@ class OrderLine extends CommonOrderLine // End call triggers } + // Remove extrafields + if (!$error) { + $result = $this->deleteExtraFields(); + if ($result < 0) { + $error++; + dol_syslog(get_class($this)."::delete error -4 ".$this->error, LOG_ERR); + } + } + if (!$error) { $this->db->commit(); return 1; From a48b738c18b47bea3c5a7888b6847f276288a754 Mon Sep 17 00:00:00 2001 From: daraelmin Date: Wed, 21 Dec 2022 17:58:40 +0100 Subject: [PATCH 08/18] Fix White bg-color badge in darkmode --- htdocs/theme/eldy/badges.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/badges.inc.php b/htdocs/theme/eldy/badges.inc.php index 1e6dfb54dbc..aae4e50fb29 100644 --- a/htdocs/theme/eldy/badges.inc.php +++ b/htdocs/theme/eldy/badges.inc.php @@ -246,7 +246,7 @@ function _createStatusBadgeCss($statusName, $statusVarNamePrefix = '', $commentL if (in_array((string) $statusName, $TBadgeBorderOnly)) { $thisBadgeTextColor = '#212529'; - $thisBadgeBackgroundColor = "#fff"; + $thisBadgeBackgroundColor = ""; } if (in_array((string) $statusName, array('0', '5', '9'))) { From d608e3b26b97b1210281a97c3550fae1a1897eb0 Mon Sep 17 00:00:00 2001 From: daraelmin Date: Wed, 21 Dec 2022 21:55:43 +0100 Subject: [PATCH 09/18] Use transparent color for negative color in chart part --- htdocs/core/class/dolgraph.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index 57f0bca4e36..6ef5b69ba3e 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -1211,7 +1211,7 @@ class DolGraph $tmp = str_replace('#', '', $this->datacolor[$i]); if (strpos($tmp, '-') !== false) { $foundnegativecolor++; - $color = '#FFFFFF'; // If $val is '-123' + $color = 'rgba(0,0,0,.0)'; // If $val is '-123' } else { $color = "#" . $tmp; // If $val is '123' or '#123' } From e1093b541e1d490532e6110b00c96bfccb1b87e2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 03:54:53 +0100 Subject: [PATCH 10/18] Fix look and feel --- htdocs/accountancy/customer/lines.php | 4 ++++ htdocs/accountancy/customer/list.php | 4 ++++ htdocs/accountancy/expensereport/lines.php | 7 +++++++ htdocs/accountancy/expensereport/list.php | 3 +++ htdocs/accountancy/supplier/lines.php | 4 ++++ htdocs/accountancy/supplier/list.php | 3 +++ 6 files changed, 25 insertions(+) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index e4f7d556c16..b8df8890a01 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -529,6 +529,10 @@ if ($result) { print ''; $i++; } + if ($num_lines == 0) { + print ''.$langs->trans("NoRecordFound").''; + } + print ''; print ""; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 57a9dd99e5e..021c1ec7821 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -749,6 +749,10 @@ if ($result) { print ''; $i++; } + if ($num_lines == 0) { + print ''.$langs->trans("NoRecordFound").''; + } + print ''; print ""; diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index aef45ae3ce1..1d0653fc5ac 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -427,6 +427,13 @@ if ($result) { print ""; $i++; } + if ($num_lines == 0) { + $colspan=10; + if (!empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) { + $colspan++; + } + print ''.$langs->trans("NoRecordFound").''; + } print ""; print ""; diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index b90a8a2c573..9cfbd940875 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -513,6 +513,9 @@ if ($result) { print ""; $i++; } + if ($num_lines == 0) { + print ''.$langs->trans("NoRecordFound").''; + } print ''; print ""; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 25368f30c61..ea9841d2fbb 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -558,6 +558,10 @@ if ($result) { print ''; $i++; } + if ($num_lines == 0) { + print ''.$langs->trans("NoRecordFound").''; + } + print ''; print ""; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index b78227a67f6..3b8e93cb54b 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -777,6 +777,9 @@ if ($result) { print ''; $i++; } + if ($num_lines == 0) { + print ''.$langs->trans("NoRecordFound").''; + } print ''; print ""; From d7d07cb2040dfa7fbb1e31a11f573e4310c8e42c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 12:27:32 +0100 Subject: [PATCH 11/18] Fix warning --- htdocs/compta/resultat/clientfourn.php | 2 +- htdocs/main.inc.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 71cd33a93cd..54f242edb7c 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -367,7 +367,7 @@ if ($modecompta == 'BOOKKEEPING') { $cpts = $AccCat->getCptsCat(0, $tmppredefinedgroupwhere); foreach ($cpts as $j => $cpt) { - $return = $AccCat->getSumDebitCredit($cpt['account_number'], $date_start, $date_end, $cpt['dc']); + $return = $AccCat->getSumDebitCredit($cpt['account_number'], $date_start, $date_end, (empty($cpt['dc']) ? 0 : $cpt['dc'])); if ($return < 0) { setEventMessages(null, $AccCat->errors, 'errors'); $resultN = 0; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index b383a6eb7c2..417295cb116 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -998,7 +998,7 @@ if (!defined('NOLOGIN')) { $hookmanager->initHooks(array('main')); // Code for search criteria persistence. - if (!empty($_GET['save_lastsearch_values'])) { // We must use $_GET here + if (!empty($_GET['save_lastsearch_values']) && !empty($_SERVER["HTTP_REFERER"])) { // We must use $_GET here $relativepathstring = preg_replace('/\?.*$/', '', $_SERVER["HTTP_REFERER"]); $relativepathstring = preg_replace('/^https?:\/\/[^\/]*/', '', $relativepathstring); // Get full path except host server // Clean $relativepathstring From d1837608415f261396c68df8065499ecdfbc3bf7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 13:21:46 +0100 Subject: [PATCH 12/18] Clean code --- htdocs/admin/system/perf.php | 9 +++++++-- htdocs/admin/system/security.php | 10 ++++++++-- htdocs/langs/en_US/admin.lang | 4 ++-- htdocs/user/hierarchy.php | 3 +++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/htdocs/admin/system/perf.php b/htdocs/admin/system/perf.php index 6d7ef8f1863..d9affa9684f 100644 --- a/htdocs/admin/system/perf.php +++ b/htdocs/admin/system/perf.php @@ -50,8 +50,13 @@ llxHeader(); print load_fiche_titre($langs->trans("PerfDolibarr"), '', 'title_setup'); -print ''.$langs->trans("YouMayFindPerfAdviceHere", 'https://wiki.dolibarr.org/index.php/FAQ_Increase_Performance').' ('.$langs->trans("Reload").')
'; - +print ''.$langs->trans("YouMayFindPerfAdviceHere", 'https://wiki.dolibarr.org/index.php/FAQ_Increase_Performance').''; +print '     '; +print ''; +print img_picto($langs->trans("Reload"), 'refresh').' '; +print $langs->trans("Reload"); +print ''; +print '
'; print '
'; print '
'; diff --git a/htdocs/admin/system/security.php b/htdocs/admin/system/security.php index cab41cc6263..c23bdb3051f 100644 --- a/htdocs/admin/system/security.php +++ b/htdocs/admin/system/security.php @@ -41,7 +41,7 @@ if (GETPOST('action', 'aZ09') == 'donothing') { exit; } -$execmethod = empty($conf->global->MAIN_EXEC_USE_POPEN) ? 1 : $conf->global->MAIN_EXEC_USE_POPEN; +$execmethod = getDolGlobalInt('MAIN_EXEC_USE_POPEN', 1); /* @@ -52,7 +52,13 @@ llxHeader(); print load_fiche_titre($langs->trans("Security"), '', 'title_setup'); -print ''.$langs->trans("YouMayFindSecurityAdviceHere", 'hhttps://wiki.dolibarr.org/index.php/Security_information').' ('.$langs->trans("Reload").')
'; +print ''.$langs->trans("YouMayFindSecurityAdviceHere", 'hhttps://wiki.dolibarr.org/index.php/Security_information').''; +print '     '; +print ''; +print img_picto($langs->trans("Reload"), 'refresh').' '; +print $langs->trans("Reload"); +print ''; +print '
'; print '
'; print load_fiche_titre($langs->trans("PHPSetup"), '', 'folder'); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 62176a37c41..ead160f3a09 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -2224,12 +2224,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Recommended NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php index 44ab46193d9..ce18b9d5011 100644 --- a/htdocs/user/hierarchy.php +++ b/htdocs/user/hierarchy.php @@ -42,6 +42,9 @@ if ($user->socid > 0) { $optioncss = GETPOST('optioncss', 'alpha'); $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'userlist'; // To manage different context of search $mode = GETPOST("mode", 'alpha'); +if (empty($mode)) { + $mode = 'hierarchy'; +} $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); From 709d6a8f78893d9b32de88616a0ca9b5f2fda8bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 14:17:31 +0100 Subject: [PATCH 13/18] Doc --- htdocs/ticket/class/ticket.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 2aacffefcd1..58ba2e18660 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -236,7 +236,7 @@ class Ticket extends CommonObject const STATUS_READ = 1; const STATUS_ASSIGNED = 2; const STATUS_IN_PROGRESS = 3; - const STATUS_NEED_MORE_INFO = 5; + const STATUS_NEED_MORE_INFO = 5; // waiting requester feedback const STATUS_WAITING = 7; // on hold const STATUS_CLOSED = 8; // Closed - Solved const STATUS_CANCELED = 9; // Closed - Not solved From 9a162100c044fbaa072d110970a3a48ab7856647 Mon Sep 17 00:00:00 2001 From: kkhelifa Date: Tue, 20 Dec 2022 11:54:02 +0100 Subject: [PATCH 14/18] NEW : set ticket status to answered if the client has answered from the public interface --- htdocs/ticket/class/ticket.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 58ba2e18660..6763ce02e84 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2667,7 +2667,10 @@ class Ticket extends CommonObject } // Set status to "answered" if not set yet, but only if internal user and not private message - if ($object->status < 3 && !$user->socid && !$private) { + // Or set status to "answered" if the client has answered and if the ticket has started + if (($object->status < self::STATUS_IN_PROGRESS && !$user->socid && !$private) || + ($object->status > self::STATUS_IN_PROGRESS && $public_area) + ) { $object->setStatut(3); } return 1; From b0bf5d8298c427680c4da09faa8ff639daf01eab Mon Sep 17 00:00:00 2001 From: Manny Isles Date: Mon, 19 Dec 2022 15:37:35 +0800 Subject: [PATCH 15/18] I think it should be $obj->rowid I think it should be $obj->rowid because when its `$obj->id` then it goes nowhere. --- htdocs/accountancy/admin/subaccount.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/subaccount.php b/htdocs/accountancy/admin/subaccount.php index c9f78596bcd..4f2274269d8 100644 --- a/htdocs/accountancy/admin/subaccount.php +++ b/htdocs/accountancy/admin/subaccount.php @@ -408,7 +408,7 @@ if ($resql) { $s .= ''.$langs->trans("Supplier").''; } elseif ($obj->type == 3) { // User - $s .= ''.$langs->trans("Employee").''; + $s .= ''.$langs->trans("Employee").''; } print $s; print ''; From 5686ffd9fad283b41c28a7618caeabffea8055ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 14:45:22 +0100 Subject: [PATCH 16/18] Update evaluation.class.php --- htdocs/hrm/class/evaluation.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index c4b8bd46178..8ffa387baa7 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -189,11 +189,13 @@ class Evaluation extends CommonObject if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) { $this->fields['rowid']['visible'] = 0; } - if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) { + if (isModEnabled('multicompany') && isset($this->fields['entity'])) { $this->fields['entity']['enabled'] = 0; } - if (empty($user->rights->hrm->evaluation->readall)) $this->fields['fk_user']['type'].= ':rowid IN('.$this->db->sanitize(implode(", ", $user->getAllChildIds(1))).')'; + if (empty($user->rights->hrm->evaluation->readall)) { + $this->fields['fk_user']['type'].= ':rowid IN('.$this->db->sanitize(implode(", ", $user->getAllChildIds(1))).')'; + } $this->date_eval = dol_now(); From bb1659fb70ac5452c1d9404728a46f742a6f2c0b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 14:45:56 +0100 Subject: [PATCH 17/18] Update evaluation.class.php --- htdocs/hrm/class/evaluation.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 8ffa387baa7..0125e7f882c 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -189,7 +189,7 @@ class Evaluation extends CommonObject if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) { $this->fields['rowid']['visible'] = 0; } - if (isModEnabled('multicompany') && isset($this->fields['entity'])) { + if (!isModEnabled('multicompany') && isset($this->fields['entity'])) { $this->fields['entity']['enabled'] = 0; } From 68ebd850f419a01115b2308154ec0f3eedaeadfc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 22 Dec 2022 16:21:25 +0100 Subject: [PATCH 18/18] Debug v17 --- htdocs/adherents/subscription/list.php | 12 ++++++------ htdocs/bookmarks/list.php | 2 +- htdocs/comm/mailing/list.php | 2 +- htdocs/compta/clients.php | 2 +- htdocs/compta/deplacement/index.php | 2 +- htdocs/compta/deplacement/list.php | 2 +- htdocs/core/boxes/box_members_by_type.php | 4 +++- htdocs/eventorganization/conferenceorbooth_list.php | 4 ++-- htdocs/expensereport/index.php | 2 +- htdocs/expensereport/list.php | 2 +- htdocs/fichinter/list.php | 2 +- htdocs/langs/en_US/eventorganization.lang | 5 +++-- htdocs/langs/en_US/expensereports.lang | 2 +- htdocs/product/stock/list.php | 2 +- htdocs/ticket/card.php | 3 --- htdocs/user/group/list.php | 4 ++-- 16 files changed, 26 insertions(+), 26 deletions(-) diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 1523bd4ee90..ffdd1d580a3 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -242,16 +242,16 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $ exit; } -$help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros'; -llxHeader('', $langs->trans("ListOfSubscriptions"), $help_url); - -$i = 0; - -$title = $langs->trans("ListOfSubscriptions"); +$title = $langs->trans("Subscriptions"); if (!empty($date_select)) { $title .= ' ('.$langs->trans("Year").' '.$date_select.')'; } +$help_url = 'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros'; +llxHeader('', $title, $help_url); + +$i = 0; + $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); diff --git a/htdocs/bookmarks/list.php b/htdocs/bookmarks/list.php index 56aae3a15f7..9434cf031a2 100644 --- a/htdocs/bookmarks/list.php +++ b/htdocs/bookmarks/list.php @@ -99,7 +99,7 @@ if ($action == 'delete') { $form = new Form($db); -$title = $langs->trans("ListOfBookmarks"); +$title = $langs->trans("Bookmarks"); llxHeader('', $title); diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index 13a7e63d364..735bef1e688 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -187,7 +187,7 @@ $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); - $title = $langs->trans("ListOfEMailings"); + $title = $langs->trans("EMailings"); if ($filteremail) { $title .= ' ('.$langs->trans("SentTo", $filteremail).')'; } diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index cd472c270e3..8db4516d3dd 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -133,7 +133,7 @@ if ($resql) { $langs->load('commercial'); - print_barre_liste($langs->trans("ListOfCustomers"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num); + print_barre_liste($langs->trans("Customers"), $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, '', $num); print '
'; diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index a4a782de603..6f4613097d9 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -68,7 +68,7 @@ $childids[] = $user->id; //$help_url='EN:Module_Donations|FR:Module_Dons|ES:Módulo_Donaciones'; $help_url = ''; -llxHeader('', $langs->trans("ListOfFees"), $help_url); +llxHeader('', $langs->trans("TripsAndExpenses"), $help_url); diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index cae06774332..c1c5e5cb851 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -131,7 +131,7 @@ $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); - print_barre_liste($langs->trans("ListOfFees"), $page, $_SERVER["PHP_SELF"], "&socid=$socid", $sortfield, $sortorder, '', $num); + print_barre_liste($langs->trans("TripsAndExpenses"), $page, $_SERVER["PHP_SELF"], "&socid=$socid", $sortfield, $sortorder, '', $num); $i = 0; print ''."\n"; diff --git a/htdocs/core/boxes/box_members_by_type.php b/htdocs/core/boxes/box_members_by_type.php index 9fcfb7e325a..b3f3504cee8 100644 --- a/htdocs/core/boxes/box_members_by_type.php +++ b/htdocs/core/boxes/box_members_by_type.php @@ -99,7 +99,8 @@ class box_members_by_type extends ModeleBoxes $MembersResiliated = array(); $SumToValidate = 0; - $SumValidated = 0; + $SumPending = 0; + $SumExpired = 0; $SumUpToDate = 0; $SumResiliated = 0; $SumExcluded = 0; @@ -233,6 +234,7 @@ class box_members_by_type extends ModeleBoxes 'text' => $labelstatus ); $line++; + foreach ($AdherentType as $key => $adhtype) { $SumToValidate += isset($MembersToValidate[$key]) ? $MembersToValidate[$key] : 0; $SumPending += isset($MembersPending[$key]) ? $MembersPending[$key] : 0; diff --git a/htdocs/eventorganization/conferenceorbooth_list.php b/htdocs/eventorganization/conferenceorbooth_list.php index f69d86c62e7..dd7bfd93a47 100644 --- a/htdocs/eventorganization/conferenceorbooth_list.php +++ b/htdocs/eventorganization/conferenceorbooth_list.php @@ -257,7 +257,7 @@ if ($projectid > 0 || $projectref) { } $help_url = "EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; - $title = $langs->trans("Project") . ' - ' . $langs->trans("ListOfConferencesOrBooths") . ' - ' . $project->ref . ' ' . $project->name; + $title = $langs->trans("Project") . ' - ' . $langs->trans("EventOrganizationConfOrBoothes") . ' - ' . $project->ref . ' ' . $project->name; if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/', $conf->global->MAIN_HTML_TITLE) && $project->name) { $title = $project->ref . ' ' . $project->name . ' - ' . $langs->trans("ListOfConferencesOrBooths"); } @@ -675,7 +675,7 @@ print ''; print ''; print ''; -$title = $langs->trans("ListOfConferencesOrBooths"); +$title = $langs->trans("EventOrganizationConfOrBoothes"); $newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/eventorganization/conferenceorbooth_card.php?action=create'.(!empty($project->id)?'&withproject=1&fk_project='.$project->id:'').(!empty($project->socid)?'&fk_soc='.$project->socid:'').'&backtopage='.urlencode($_SERVER['PHP_SELF']).(!empty($project->id)?'?projectid='.$project->id:''), '', $permissiontoadd); diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php index fced8a58e14..c8048e78621 100644 --- a/htdocs/expensereport/index.php +++ b/htdocs/expensereport/index.php @@ -78,7 +78,7 @@ $childids[] = $user->id; $help_url = "EN:Module_Expense_Reports|FR:Module_Notes_de_frais"; -llxHeader('', $langs->trans("ListOfFees"), $help_url); +llxHeader('', $langs->trans("TripsAndExpenses"), $help_url); $label = $somme = $nb = array(); diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index bded18fa597..ad16d5fb09f 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -254,7 +254,7 @@ $formexpensereport = new FormExpenseReport($db); $fuser = new User($db); -$title = $langs->trans("ListOfTrips"); +$title = $langs->trans("TripsAndExpenses"); llxHeader('', $title); $max_year = 5; diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 9e8f7896860..5a44e9069cd 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -213,7 +213,7 @@ if (isModEnabled('contrat')) { $now = dol_now(); $help_url = ''; -$title = $langs->trans("ListOfInterventions"); +$title = $langs->trans("Interventions"); $morejs = array(); $morecss = array(); diff --git a/htdocs/langs/en_US/eventorganization.lang b/htdocs/langs/en_US/eventorganization.lang index f9531260c97..17cdda6525e 100644 --- a/htdocs/langs/en_US/eventorganization.lang +++ b/htdocs/langs/en_US/eventorganization.lang @@ -54,6 +54,7 @@ EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, # Object # EventOrganizationConfOrBooth= Conference Or Booth +EventOrganizationConfOrBoothes=Conferences or Boothes ManageOrganizeEvent = Manage the organization of an event ConferenceOrBooth = Conference Or Booth ConferenceOrBoothTab = Conference Or Booth @@ -114,8 +115,8 @@ EvntOrgRegistrationHelpMessage = Here, you can vote for a conference or suggest EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference to animate during the event. EvntOrgRegistrationBoothHelpMessage = Here, you can apply to have a booth during the event. ListOfSuggestedConferences = List of suggested conferences -ListOfSuggestedBooths = List of suggested booths -ListOfConferencesOrBooths=List of conferences or booths of event project +ListOfSuggestedBooths=Suggested booths +ListOfConferencesOrBooths=Conferences or booths of event project SuggestConference = Suggest a new conference SuggestBooth = Suggest a booth ViewAndVote = View and vote for suggested events diff --git a/htdocs/langs/en_US/expensereports.lang b/htdocs/langs/en_US/expensereports.lang index f3b5f07f241..5a5e06cf9c7 100644 --- a/htdocs/langs/en_US/expensereports.lang +++ b/htdocs/langs/en_US/expensereports.lang @@ -108,7 +108,7 @@ TripId=Id expense report TripNDF=Informations expense report TripSociete=Information company Trips=Expense reports -TripsAndExpenses=Expenses reports +TripsAndExpenses=Expense reports TripsAndExpensesStatistics=Expense reports statistics TypeFees=Types of fees UploadANewFileNow=Upload a new document now diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index bd8b5a2932a..f5398e84939 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -194,7 +194,7 @@ $warehouse = new Entrepot($db); $now = dol_now(); $help_url = 'EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; -$title = $langs->trans("ListOfWarehouses"); +$title = $langs->trans("Warehouses"); $totalarray = array(); $totalarray['nbfield'] = 0; diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index fdc3ac6e340..f00d4223878 100755 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -827,9 +827,6 @@ if ($action == 'create' || $action == 'presend') { // Confirmation abandon if ($action == 'abandon') { print $form->formconfirm($url_page_current."?track_id=".$object->track_id, $langs->trans("AbandonTicket"), $langs->trans("ConfirmAbandonTicket"), "confirm_abandon", '', '', 1); - if ($ret == 'html') { - print '
'; - } } // Confirmation delete if ($action == 'delete') { diff --git a/htdocs/user/group/list.php b/htdocs/user/group/list.php index 4c91bd041dd..31d5aa93d02 100644 --- a/htdocs/user/group/list.php +++ b/htdocs/user/group/list.php @@ -121,7 +121,7 @@ if (empty($reshook)) { /* * View */ -$title = $langs->trans("ListOfGroups"); +$title = $langs->trans("UserGroups"); $help_url=""; llxHeader('', $title, $help_url); @@ -156,7 +156,7 @@ if ($resql) { $param .= '&optioncss='.$optioncss; } - $text = $langs->trans("ListOfGroups"); + $text = $langs->trans("UserGroups"); $newcardbutton = ''; if ($caneditperms) {