31define(
'CSRFCHECK_WITH_TOKEN', 1);
33require
'main.inc.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
37$_GET[
'mainmenu'] =
GETPOST(
'mainmenu',
'aZ09') ?
GETPOST(
'mainmenu',
'aZ09') :
'home';
38$action =
GETPOST(
'action',
'aZ09');
40$hookmanager->initHooks(array(
'index'));
48$nbmodulesnotautoenabled = count($conf->modules);
49$listofmodulesautoenabled = array(
'agenda',
'fckeditor',
'export',
'import');
50foreach ($listofmodulesautoenabled as $moduleautoenable) {
51 if (in_array($moduleautoenable, $conf->modules)) {
52 $nbmodulesnotautoenabled--;
58 header(
"Location: ".DOL_URL_ROOT.
"/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete");
61if ($nbmodulesnotautoenabled <=
getDolGlobalInt(
'MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) {
62 header(
"Location: ".DOL_URL_ROOT.
"/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete");
66 require_once DOL_DOCUMENT_ROOT.
'/core/class/infobox.class.php';
69 $boxorder =
GETPOST(
'boxorder',
'aZ09');
70 $boxorder .=
GETPOST(
'boxcombo',
'aZ09');
83if (!isset($form) || !is_object($form)) {
84 $form =
new Form($db);
88$title = $langs->trans(
"HomeArea").
' - Dolibarr '.DOL_VERSION;
90 $title = $langs->trans(
"HomeArea").
' - ' .
getDolGlobalString(
'MAIN_APPLICATION_TITLE');
99print
load_fiche_titre(
' ', $resultboxes[
'selectboxlist'],
'', 0,
'',
'titleforhome');
102 $conf->global->MAIN_MOTD = preg_replace(
'/<br(\s[\sa-zA-Z_="]*)?\/?>/i',
'<br>',
getDolGlobalString(
'MAIN_MOTD'));
108 print
"\n<!-- Start of welcome text -->\n";
109 print
'<table class="centpercent notopnoleftnoright"><tr><td>';
111 print
'</td></tr></table><br>';
112 print
"\n<!-- End of welcome text -->\n";
138 $lockfile = DOL_DATA_ROOT.
'/install.lock';
139 if (!empty($lockfile) && !file_exists($lockfile) && is_dir(DOL_DOCUMENT_ROOT.
"/install")) {
140 $langs->load(
"errors");
142 $message .=
info_admin($langs->transnoentities(
"WarningLockFileDoesNotExists", DOL_DATA_ROOT).
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
146 if (is_writable($conffile)) {
147 $langs->load(
"errors");
150 $message .=
info_admin($langs->transnoentities(
"WarningConfFileMustBeReadOnly").
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
154 $parameters = array();
155 $reshook = $hookmanager->executeHooks(
'infoadmin', $parameters, $object, $action);
157 $message .= $hookmanager->resPrint;
171$boxstatItems = array();
172$boxstatFromHook =
'';
175$langs->loadLangs(array(
'commercial',
'bills',
'orders',
'contracts'));
182 $dashboardlines = array();
185 require_once DOL_DOCUMENT_ROOT.
'/core/class/workboardresponse.class.php';
188 if (isModEnabled(
'agenda') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_AGENDA') && $user->hasRight(
'agenda',
'myactions',
'read')) {
189 include_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
191 $dashboardlines[$board->element] = $board->load_board($user);
195 if (isModEnabled(
'project') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_PROJECT') && $user->hasRight(
'projet',
'lire')) {
196 include_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
198 $dashboardlines[$board->element] = $board->load_board($user);
203 include_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
204 $board =
new Task($db);
205 $dashboardlines[$board->element] = $board->load_board($user);
209 if (isModEnabled(
'propal') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CUSTOMER') && $user->hasRight(
'propal',
'read')) {
210 include_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
212 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
214 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
218 if (isModEnabled(
'supplier_proposal') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'supplier_proposal',
'lire')) {
219 $langs->load(
"supplier_proposal");
220 include_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
222 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
224 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
228 if (isModEnabled(
'order') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CUSTOMER') && $user->hasRight(
'commande',
'lire')) {
229 include_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
232 $dashboardlines[$board->element.
'_toship'] = $board->load_board($user,
'toship');
235 $dashboardlines[$board->element.
'_tobill'] = $board->load_board($user,
'tobill');
238 $dashboardlines[$board->element.
'_shippedtobill'] = $board->load_board($user,
'shippedtobill');
242 if (isModEnabled(
'supplier_order') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'fournisseur',
'commande',
'lire')) {
243 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
245 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
246 $dashboardlines[$board->element.
'_awaiting'] = $board->load_board($user,
'awaiting');
250 if (isModEnabled(
'contract') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CONTRACT') && $user->hasRight(
'contrat',
'lire')) {
251 include_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
253 $dashboardlines[$board->element.
'_inactive'] = $board->load_board($user,
"inactive");
255 $dashboardlines[$board->element.
'_active'] = $board->load_board($user,
"active");
259 if (isModEnabled(
'ticket') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_TICKET') && $user->hasRight(
'ticket',
'read')) {
260 include_once DOL_DOCUMENT_ROOT.
'/ticket/class/ticket.class.php';
262 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
268 if (isModEnabled(
'invoice') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CUSTOMER') && $user->hasRight(
'facture',
'lire')) {
269 include_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
271 $dashboardlines[$board->element] = $board->load_board($user);
275 if (isModEnabled(
'supplier_invoice') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'fournisseur',
'facture',
'lire')) {
276 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
278 $dashboardlines[$board->element] = $board->load_board($user);
282 if (isModEnabled(
'bank') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_BANK') && $user->hasRight(
'banque',
'lire') && !$user->socid) {
283 include_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
285 $nb = $board->countAccountToReconcile();
287 $dashboardlines[$board->element] = $board->load_board($user);
293 if (isModEnabled(
'bank') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_BANK') && $user->hasRight(
'banque',
'lire') && !$user->socid) {
295 include_once DOL_DOCUMENT_ROOT .
'/compta/paiement/cheque/class/remisecheque.class.php';
297 $dashboardlines[$board->element] = $board->load_board($user);
299 if (isModEnabled(
'prelevement')) {
300 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
302 $dashboardlines[$board->element .
'_direct_debit'] = $board->load_board($user,
'direct_debit');
304 if (isModEnabled(
'paymentbybanktransfer')) {
305 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
307 $dashboardlines[$board->element .
'_credit_transfer'] = $board->load_board($user,
'credit_transfer');
312 if (isModEnabled(
'member') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_ADHERENT') && $user->hasRight(
'adherent',
'lire') && !$user->socid) {
313 include_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
315 $dashboardlines[$board->element.
'_shift'] = $board->load_board($user,
'shift');
316 $dashboardlines[$board->element.
'_expired'] = $board->load_board($user,
'expired');
320 if (isModEnabled(
'expensereport') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_EXPENSEREPORT') && $user->hasRight(
'expensereport',
'approve')) {
321 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
323 $dashboardlines[$board->element.
'_toapprove'] = $board->load_board($user,
'toapprove');
327 if (isModEnabled(
'expensereport') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_EXPENSEREPORT') && $user->hasRight(
'expensereport',
'to_paid')) {
328 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
330 $dashboardlines[$board->element.
'_topay'] = $board->load_board($user,
'topay');
334 if (isModEnabled(
'holiday') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_HOLIDAY') && $user->hasRight(
'holiday',
'approve')) {
335 include_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
337 $dashboardlines[$board->element] = $board->load_board($user);
341 $parameters = array();
343 $reshook = $hookmanager->executeHooks(
344 'addOpenElementsDashboardLine',
350 $dashboardlines = array_merge($dashboardlines, $hookmanager->resArray);
354 $dashboardgroup = array(
357 'groupName' =>
'Agenda',
358 'stats' => array(
'action'),
362 'groupName' =>
'Projects',
363 'globalStatsKey' =>
'projects',
364 'stats' => array(
'project',
'project_task'),
368 'groupName' =>
'Proposals',
369 'globalStatsKey' =>
'proposals',
371 array(
'propal_opened',
'propal_signed'),
375 'groupName' =>
'Orders',
376 'globalStatsKey' =>
'orders',
378 array(
'commande_toship',
'commande_tobill',
'commande_shippedtobill'),
382 'groupName' =>
'Invoices',
383 'globalStatsKey' =>
'invoices',
387 'supplier_proposal' =>
389 'lang' =>
'supplier_proposal',
390 'groupName' =>
'SupplierProposals',
391 'globalStatsKey' =>
'askprice',
393 array(
'supplier_proposal_opened',
'supplier_proposal_signed'),
397 'groupName' =>
'SuppliersOrders',
398 'globalStatsKey' =>
'supplier_orders',
400 array(
'order_supplier_opened',
'order_supplier_awaiting'),
402 'invoice_supplier' =>
404 'groupName' =>
'BillsSuppliers',
405 'globalStatsKey' =>
'supplier_invoices',
407 array(
'invoice_supplier'),
411 'groupName' =>
'Contracts',
412 'globalStatsKey' =>
'Contracts',
414 array(
'contrat_inactive',
'contrat_active'),
418 'groupName' =>
'Tickets',
419 'globalStatsKey' =>
'ticket',
421 array(
'ticket_opened'),
425 'groupName' =>
'BankAccount',
427 array(
'bank_account',
'chequereceipt',
'widthdraw_direct_debit',
'widthdraw_credit_transfer'),
431 'groupName' =>
'Members',
432 'globalStatsKey' =>
'members',
434 array(
'member_shift',
'member_expired'),
438 'groupName' =>
'ExpenseReport',
439 'globalStatsKey' =>
'expensereports',
441 array(
'expensereport_toapprove',
'expensereport_topay'),
445 'groupName' =>
'Holidays',
446 'globalStatsKey' =>
'holidays',
454 'dashboardgroup' => $dashboardgroup
456 $reshook = $hookmanager->executeHooks(
'addOpenElementsDashboardGroup', $parameters, $object, $action);
458 $dashboardgroup = array_merge($dashboardgroup, $hookmanager->resArray);
463 $totallate = $totaltodo = 0;
467 $valid_dashboardlines = array();
468 foreach ($dashboardlines as $workboardid => $tmp) {
470 $tmp->id = $workboardid;
471 $valid_dashboardlines[$workboardid] = $tmp;
476 foreach ($valid_dashboardlines as $board) {
477 if (is_numeric($board->nbtodo) && is_numeric($board->nbtodolate) && $board->nbtodolate > 0) {
478 $totaltodo += $board->nbtodo;
479 $totallate += $board->nbtodolate;
483 $openedDashBoardSize =
'info-box-sm';
484 foreach ($dashboardgroup as $dashbordelement) {
485 if (is_array($dashbordelement[
'stats']) && count($dashbordelement[
'stats']) > 2) {
486 $openedDashBoardSize =
'';
491 $totalLateNumber = $totallate;
492 $totallatePercentage = ((!empty($totaltodo)) ? round($totallate / $totaltodo * 100, 2) : 0);
494 $totallate = $totallatePercentage;
498 $boxwork .=
'<div class="box">';
499 $boxwork .=
'<table summary="'.dol_escape_htmltag($langs->trans(
"WorkingBoard")).
'" class="noborder boxtable boxtablenobottom boxworkingboard centpercent">'.
"\n";
500 $boxwork .=
'<tr class="liste_titre">';
501 $boxwork .=
'<th class="liste_titre"><div class="inline-block valignmiddle">'.$langs->trans(
"DolibarrWorkBoard").
'</div>';
503 if ($totallate > 0) {
504 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
506 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
509 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
511 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
513 $options =
'height="24px" style="float: right"';
514 $boxwork .=
showWeather($totallate, $text, $options,
'inline-block valignmiddle');
517 $boxwork .=
'</tr>'.
"\n";
520 $nbworkboardempty = 0;
521 $isIntopOpenedDashBoard = $globalStatInTopOpenedDashBoard = array();
522 if (!empty($valid_dashboardlines)) {
523 $openedDashBoard =
'';
525 $boxwork .=
'<tr class="nobottom nohover"><td class="tdboxstats nohover flexcontainer centpercent"><div style="display: flex: flex-wrap: wrap">';
527 foreach ($dashboardgroup as $groupKey => $groupElement) {
532 foreach ($groupElement[
'stats'] as $infoKey) {
533 if (!empty($valid_dashboardlines[$infoKey])) {
534 $boards[] = $valid_dashboardlines[$infoKey];
535 $isIntopOpenedDashBoard[] = $infoKey;
540 if (!empty($boards)) {
541 if (!empty($groupElement[
'lang'])) {
542 $langs->load($groupElement[
'lang']);
545 $groupName = $langs->trans($groupElement[
'groupName']);
546 $groupKeyLowerCase = strtolower($groupKey);
549 $globalStatsKey =
false;
550 if (!empty($groupElement[
'globalStatsKey']) && empty($groupElement[
'globalStats'])) {
551 $globalStatsKey = $groupElement[
'globalStatsKey'];
552 $groupElement[
'globalStats'] = array();
555 $openedDashBoard .=
'<div class="box-flex-item"><div class="box-flex-item-with-margin">'.
"\n";
556 $openedDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
'">'.
"\n";
557 $openedDashBoard .=
' <span class="info-box-icon bg-infobox-'.$groupKeyLowerCase.
'">'.
"\n";
558 $openedDashBoard .=
' <i class="fa fa-dol-'.$groupKeyLowerCase.
'"></i>'.
"\n";
561 if (!empty($groupElement[
'globalStats'])) {
562 $globalStatInTopOpenedDashBoard[] = $globalStatsKey;
563 $openedDashBoard .=
'<span class="info-box-icon-text" title="'.$groupElement[
'globalStats'][
'text'].
'">'.$groupElement[
'globalStats'][
'nbTotal'].
'</span>';
566 $openedDashBoard .=
'</span>'.
"\n";
567 $openedDashBoard .=
'<div class="info-box-content">'.
"\n";
569 $openedDashBoard .=
'<div class="info-box-title" title="'.strip_tags($groupName).
'">'.$groupName.
'</div>'.
"\n";
570 $openedDashBoard .=
'<div class="info-box-lines">'.
"\n";
572 foreach ($boards as $board) {
573 $openedDashBoard .=
'<div class="info-box-line spanoverflow nowrap">';
575 if (!empty($board->labelShort)) {
576 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text" title="'.$board->label.
'">'.$board->labelShort.
'</div>';
578 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text">'.$board->label.
'</div>';
581 $textLateTitle = $langs->trans(
"NActionsLate", $board->nbtodolate);
582 $textLateTitle .=
' ('.$langs->trans(
"Late").
' = '.$langs->trans(
"DateReference").
' > '.$langs->trans(
"DateToday").
' '.(ceil(empty($board->warning_delay) ? 0 : $board->warning_delay) >= 0 ?
'+' :
'').ceil(empty($board->warning_delay) ? 0 : $board->warning_delay).
' '.$langs->trans(
"days").
')';
584 if ($board->id ==
'bank_account') {
585 $textLateTitle .=
'<br><span class="opacitymedium">'.$langs->trans(
"IfYouDontReconcileDisableProperty", $langs->transnoentitiesnoconv(
"Conciliable")).
'</span>';
589 if ($board->nbtodolate > 0) {
590 $textLate .=
'<span title="'.dol_escape_htmltag($textLateTitle).
'" class="classfortooltip badge badge-warning">';
591 $textLate .=
'<i class="fa fa-exclamation-triangle"></i> '.$board->nbtodolate;
592 $textLate .=
'</span>';
596 if ($board->nbtodo > 0) {
597 $nbtodClass =
'badge badge-info';
599 $nbtodClass =
'opacitymedium';
603 $labeltoshow = $board->label.
' ('.$board->nbtodo.
')';
604 if ($board->total > 0) {
605 $labeltoshow .=
' - '.price($board->total, 0, $langs, 1, -1, -1, $conf->currency);
607 $openedDashBoard .=
'<a href="'.$board->url.
'" class="info-box-text info-box-text-a">';
608 $openedDashBoard .= $infoName;
609 $openedDashBoard .=
'<div class="inline-block nowraponall">';
610 $openedDashBoard .=
'<span class="classfortooltip'.($nbtodClass ?
' '.$nbtodClass :
'').
'" title="'.$labeltoshow.
'">';
611 $openedDashBoard .= $board->nbtodo;
613 $openedDashBoard .=
' : '.price($board->total, 0, $langs, 1, -1, -1, $conf->currency);
615 $openedDashBoard .=
'</span>';
618 if ($board->url_late) {
619 $openedDashBoard .=
'</div></a>';
620 $openedDashBoard .=
' <div class="inline-block"><a href="'.$board->url_late.
'" class="info-box-text info-box-text-a paddingleft">';
622 $openedDashBoard .=
' ';
624 $openedDashBoard .= $textLate;
626 $openedDashBoard .=
'</a>'.
"\n";
627 $openedDashBoard .=
'</div>';
628 $openedDashBoard .=
'</div>'.
"\n";
633 $openedDashBoard .=
' </div><!-- /.info-box-lines --></div><!-- /.info-box-content -->'.
"\n";
634 $openedDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
635 $openedDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
636 $openedDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
637 $openedDashBoard .=
"\n";
641 if ($showweather && !empty($isIntopOpenedDashBoard)) {
642 $appendClass = (
getDolGlobalInt(
'MAIN_DISABLE_METEO') == 2 ?
' hideonsmartphone' :
'');
646 if ($totallate > 0) {
647 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
649 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
652 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
654 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
656 $weatherDashBoard =
'<div class="box-flex-item '.$appendClass.
'"><div class="box-flex-item-with-margin">'.
"\n";
657 $weatherDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
' info-box-weather info-box-weather-level'.$weather->level.
'">'.
"\n";
658 $weatherDashBoard .=
' <span class="info-box-icon">';
659 $weatherDashBoard .=
img_weather(
'', $weather->level,
'', 0,
'valignmiddle width50');
660 $weatherDashBoard .=
' </span>'.
"\n";
661 $weatherDashBoard .=
' <div class="info-box-content">'.
"\n";
662 $weatherDashBoard .=
' <div class="info-box-title">'.$langs->trans(
'GlobalOpenedElemView').
'</div>'.
"\n";
664 if ($totallatePercentage > 0 &&
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE')) {
665 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
667 price($totallatePercentage).
'%'
669 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
674 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
678 if ($totallatePercentage > 0) {
679 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
681 price($totallatePercentage).
'%'
686 $weatherDashBoard .=
' </div><!-- /.info-box-content -->'.
"\n";
687 $weatherDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
688 $weatherDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
689 $weatherDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
690 $weatherDashBoard .=
"\n";
692 $openedDashBoard = $weatherDashBoard.$openedDashBoard;
695 if (!empty($isIntopOpenedDashBoard)) {
696 for ($i = 1; $i <= 10; $i++) {
697 $openedDashBoard .=
'<div class="box-flex-item filler"></div>';
701 $nbworkboardcount = 0;
702 foreach ($valid_dashboardlines as $infoKey => $board) {
703 if (in_array($infoKey, $isIntopOpenedDashBoard)) {
708 if (empty($board->nbtodo)) {
714 $textlate = $langs->trans(
"NActionsLate", $board->nbtodolate);
715 $textlate .=
' ('.$langs->trans(
"Late").
' = '.$langs->trans(
"DateReference").
' > '.$langs->trans(
"DateToday").
' '.(ceil($board->warning_delay) >= 0 ?
'+' :
'').ceil($board->warning_delay).
' '.$langs->trans(
"days").
')';
718 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats130 boxstatsborder">';
719 $boxwork .=
'<div class="boxstatscontent">';
720 $boxwork .=
'<span class="boxstatstext" title="'.dol_escape_htmltag($board->label).
'">'.$board->img.
' <span>'.$board->label.
'</span></span><br>';
721 $boxwork .=
'<a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.$board->nbtodo.
'</span></a>';
723 $boxwork .=
' / <a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.
price($board->total).
'</span></a>';
725 $boxwork .=
'</div>';
726 if ($board->nbtodolate > 0) {
727 $boxwork .=
'<div class="dashboardlinelatecoin nowrap">';
728 $boxwork .=
'<a title="'.dol_escape_htmltag($textlate).
'" class="valignmiddle dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'" href="'.((!$board->url_late) ? $board->url : $board->url_late).
'">';
733 'class="inline-block hideonsmartphone valigntextbottom"'
735 $boxwork .=
'<span class="dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'">';
736 $boxwork .= $board->nbtodolate;
737 $boxwork .=
'</span>';
739 $boxwork .=
'</div>';
741 $boxwork .=
'</div></div>';
745 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
746 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
747 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
748 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
750 $boxwork .=
'</div>';
751 $boxwork .=
'</td></tr>';
753 $boxwork .=
'<tr class="nohover">';
754 $boxwork .=
'<td class="nohover valignmiddle opacitymedium">';
755 $boxwork .= $langs->trans(
"NoOpenedElementToProcess");
760 $boxwork .=
'</td></tr>';
762 $boxwork .=
'</table>';
763 $boxwork .=
'</div>';
765 if (!empty($isIntopOpenedDashBoard)) {
766 print
'<div class="fichecenter">';
767 print
'<div class="opened-dash-board-wrap"><div class="box-flex-container">'.$openedDashBoard.
'</div></div>';
773print
'<div class="clearboth"></div>';
775print
'<div class="fichecenter fichecenterbis">';
782$boxlist =
'<div class="twocolumns">';
784$boxlist .=
'<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
785if (!empty($nbworkboardcount)) {
786 $boxlist .= $boxwork;
789$boxlist .= $resultboxes[
'boxlista'];
793$boxlist .=
'<div class="secondcolumn fichehalfright boxhalfright" id="boxhalfright">';
795$boxlist .= $resultboxes[
'boxlistb'];
829 return img_weather($text, $weather->picto, $options, 0, $morecss);
842 $weather->picto =
'';
847 $used_conf = (
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'MAIN_METEO_PERCENTAGE_LEVEL' :
'MAIN_METEO_LEVEL');
852 $level1 = $offset + $factor;
854 $level2 = $offset + 2 * $factor;
856 $level3 = $offset + 3 * $factor;
859 if ($totallate <= $level0) {
860 $weather->picto =
'weather-clear.png';
862 } elseif ($totallate <= $level1) {
863 $weather->picto =
'weather-few-clouds.png';
865 } elseif ($totallate <= $level2) {
866 $weather->picto =
'weather-clouds.png';
868 } elseif ($totallate <= $level3) {
869 $weather->picto =
'weather-many-clouds.png';
872 $weather->picto =
'weather-storm.png';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage bank accounts.
Class to manage agenda events (actions)
Class to manage members of a foundation.
Class to manage withdrawal receipts.
Class to manage predefined suppliers products.
Class to manage customers orders.
Class to manage contracts.
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class of the module paid holiday.
static saveboxorder($dbs, $zone, $boxorder, $userid=0)
Save order of boxes for area and user.
Class to manage projects.
Class to manage proposals.
Class to manage cheque delivery receipts.
Class to manage price ask supplier.
img_weather($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $morecss='')
Show weather picto.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_string_onlythesehtmltags($stringtoclean, $cleanalsosomestyles=1, $removeclassattribute=1, $cleanalsojavascript=0, $allowiframe=0, $allowed_tags=array(), $allowlink=0)
Clean a string to keep only desirable HTML tags.
complete_substitutions_array(&$substitutionarray, $outputlangs, $object=null, $parameters=null, $callfunc="completesubstitutionarray")
Complete the $substitutionarray with more entries coming from external module that had set the "subst...
make_substitutions($text, $substitutionarray, $outputlangs=null, $converttextinhtmlifnecessary=0)
Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=>newva...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null, $include=null)
Return array of possible common substitutions.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
showWeather($totallate, $text, $options, $morecss='')
Show weather logo.
getWeatherStatus($totallate)
get weather status for conf 'MAIN_METEO_LEVELx'
Class to generate the form for creating a new ticket.