diff --git a/htdocs/admin/index.php b/htdocs/admin/index.php
index 9e0acb0ff62..0bf4c6bd235 100644
--- a/htdocs/admin/index.php
+++ b/htdocs/admin/index.php
@@ -43,7 +43,7 @@ $wikihelp='EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones'
llxHeader('', $langs->trans("Setup"), $wikihelp);
-print load_fiche_titre($langs->trans("SetupArea"), '', 'title_setup.png');
+print load_fiche_titre($langs->trans("SetupArea"), '', 'tools_title');
if (! empty($conf->global->MAIN_MOTD_SETUPPAGE))
diff --git a/htdocs/core/lib/fichinter.lib.php b/htdocs/core/lib/fichinter.lib.php
index 8f8dea33b97..c17080d53f5 100644
--- a/htdocs/core/lib/fichinter.lib.php
+++ b/htdocs/core/lib/fichinter.lib.php
@@ -66,19 +66,20 @@ function fichinter_prepare_head($object)
if ($conf->resource->enabled)
{
require_once DOL_DOCUMENT_ROOT.'/resource/class/dolresource.class.php';
- $nbResource = 0;
- $objectres=new Dolresource($db);
- if (is_array($objectres->available_resources))
- {
- foreach ($objectres->available_resources as $modresources => $resources)
- {
- $resources=(array) $resources; // To be sure $resources is an array
- foreach($resources as $resource_obj)
- {
- $linked_resources = $object->getElementResources('fichinter', $object->id, $resource_obj);
- }
- }
- }
+ $objectres = new Dolresource($db);
+ $linked_resources = $objectres->getElementResources('fichinter', $object->id);
+ $nbResource = (is_array($linked_resources)?count($linked_resources):0);
+ // if (is_array($objectres->available_resources))
+ // {
+ // foreach ($objectres->available_resources as $modresources => $resources)
+ // {
+ // $resources=(array) $resources; // To be sure $resources is an array
+ // foreach($resources as $resource_obj)
+ // {
+ // $linked_resources = $object->getElementResources('fichinter', $object->id, $resource_obj);
+ // }
+ // }
+ // }
$head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=fichinter&element_id='.$object->id;
$head[$h][1] = $langs->trans("Resources");
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index d234195d8cd..61f07dc3e31 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -3015,7 +3015,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
//if (in_array($picto, array('switch_off', 'switch_on', 'off', 'on')))
if (empty($srconly) && in_array($pictowithoutext, array(
'bank', 'close_title', 'delete', 'edit', 'ellipsis-h', 'filter', 'grip', 'grip_title', 'list', 'listlight', 'note', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize',
- 'note', 'setup', 'sign-out', 'split', 'switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow', '1leftarrow', '1rightarrow',
+ 'note', 'setup', 'tools_title', 'sign-out', 'split', 'switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow', '1leftarrow', '1rightarrow',
'jabber','skype','twitter','facebook','linkedin',
'chevron-left','chevron-right','chevron-down','chevron-top'
)
@@ -3029,6 +3029,10 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
$fakey = 'fa-cog';
$fasize = '1.4em';
}
+ elseif ($pictowithoutext == 'tools_title') {
+ $fakey = 'fa-tools';
+ $fasize = '2.4em';
+ }
elseif ($pictowithoutext == 'switch_off') {
$fakey = 'fa-toggle-off';
$facolor = '#999';
diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php
index 5bcd40d424e..67f7ce14ef4 100644
--- a/htdocs/core/login/functions_ldap.php
+++ b/htdocs/core/login/functions_ldap.php
@@ -166,9 +166,13 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest)
if ($ldapdebug) print "DEBUG: pwdLastSet = ".dol_print_date($ldap->pwdlastset, 'day')."
\n";
if ($ldapdebug) print "DEBUG: badPasswordTime = ".dol_print_date($ldap->badpwdtime, 'day')."
\n";
- // On recherche le user dolibarr en fonction de son SID ldap
- $sid = $ldap->getObjectSid($login);
- if ($ldapdebug) print "DEBUG: sid = ".$sid."
\n";
+ // On recherche le user dolibarr en fonction de son SID ldap (only for Active Directory)
+ $sid = null;
+ if ($conf->global->LDAP_SERVER_TYPE == "activedirectory")
+ {
+ $sid = $ldap->getObjectSid($login);
+ if ($ldapdebug) print "DEBUG: sid = ".$sid."
\n";
+ }
$usertmp=new User($db);
$resultFetchUser=$usertmp->fetch('', $login, $sid);
diff --git a/htdocs/index.php b/htdocs/index.php
index d50b5248fab..45c7e1509e2 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -514,47 +514,55 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
'project' =>
array(
'groupName' => 'Projects',
+ 'globalStatsKey' => 'projects',
'stats' => array('project', 'project_task'),
),
'propal' =>
array(
'groupName' => 'Proposals',
+ 'globalStatsKey' => 'proposals',
'stats' =>
array('propal_opened', 'propal_signed'),
),
'commande' =>
array(
'groupName' => 'Orders',
+ 'globalStatsKey' => 'orders',
'stats' =>
array('commande'),
),
'facture' =>
array(
'groupName' => 'Invoices',
+ 'globalStatsKey' => 'invoices',
'stats' =>
array('facture'),
),
'contrat' =>
array(
'groupName' => 'Contracts',
+ 'globalStatsKey' => 'Contracts',
'stats' =>
array('contrat_inactive', 'contrat_active'),
),
'supplier_proposal' =>
array(
'groupName' => 'SupplierProposals',
+ 'globalStatsKey' => 'askprice',
'stats' =>
array('supplier_proposal_opened', 'supplier_proposal_signed'),
),
'order_supplier' =>
array(
'groupName' => 'SuppliersOrders',
+ 'globalStatsKey' => 'supplier_orders',
'stats' =>
array('order_supplier'),
),
'invoice_supplier' =>
array(
'groupName' => 'BillsSuppliers',
+ 'globalStatsKey' => 'supplier_invoices',
'stats' =>
array('invoice_supplier'),
),
@@ -567,18 +575,21 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
'Adherent' =>
array(
'groupName' => 'Members',
+ 'globalStatsKey' => 'members',
'stats' =>
array('Adherent'),
),
'ExpenseReport' =>
array(
'groupName' => 'ExpenseReport',
+ 'globalStatsKey' => 'expensereports',
'stats' =>
array('ExpenseReport'),
),
'Holiday' =>
array(
'groupName' => 'Holidays',
+ 'globalStatsKey' => 'holidays',
'stats' =>
array('Holiday'),
),
@@ -651,7 +662,7 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
// Show dashboard
$nbworkboardempty = 0;
- $isIntopOpenedDashBoard = array();
+ $isIntopOpenedDashBoard = $globalStatInTopOpenedDashBoard = array();
if (!empty($valid_dashboardlines)) {
$openedDashBoard = '';
@@ -672,12 +683,47 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
if (!empty($boards)) {
$groupName = $langs->trans($groupElement['groupName']);
$groupKeyLowerCase = strtolower($groupKey);
+ $nbTotalForGroup = 0;
+
+ // global stats
+ $globalStatsKey = false;
+ if (!empty($groupElement['globalStatsKey']) && empty($groupElement['globalStats'])){ // can be filled by hook
+ $globalStatsKey = $groupElement['globalStatsKey'];
+ $groupElement['globalStats'] = array();
+
+ if(in_array($globalStatsKey, $keys))
+ {
+ // get key index of stats used in $includes, $classes, $keys, $icons, $titres, $links
+ $keyIndex = array_search($globalStatsKey, $keys);
+
+ $classe=$classes[$keyIndex];
+ if (isset($boardloaded[$classe]) && is_object($boardloaded[$classe]))
+ {
+ $groupElement['globalStats']['total'] = $boardloaded[$classe]->nb[$globalStatsKey]?$boardloaded[$classe]->nb[$globalStatsKey]:0;
+ $nbTotal = doubleval($groupElement['globalStats']['total']);
+ if($nbTotal>=10000){ $nbTotal = round($nbTotal/1000, 2) .'k'; }
+ $groupElement['globalStats']['text'] = $langs->trans('Total').' : '.$langs->trans($titres[$keyIndex]).' ('.$groupElement['globalStats']['total'].')';
+ $groupElement['globalStats']['total'] = $nbTotal;
+ $groupElement['globalStats']['link'] = $links[$keyIndex];
+ }
+ }
+ }
+
$openedDashBoard .= '