30 define(
'CSRFCHECK_WITH_TOKEN', 1);
32 require
'main.inc.php';
33 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
36 $_GET[
'mainmenu'] =
GETPOST(
'mainmenu',
'aZ09') ?
GETPOST(
'mainmenu',
'aZ09') :
'home';
37 $action =
GETPOST(
'action',
'aZ09');
39 $hookmanager->initHooks(array(
'index'));
46 $nbmodulesnotautoenabled = count($conf->modules);
47 if (in_array(
'fckeditor', $conf->modules)) {
48 $nbmodulesnotautoenabled--;
50 if (in_array(
'export', $conf->modules)) {
51 $nbmodulesnotautoenabled--;
53 if (in_array(
'import', $conf->modules)) {
54 $nbmodulesnotautoenabled--;
59 header(
"Location: ".DOL_URL_ROOT.
"/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete");
62 if ($nbmodulesnotautoenabled <=
getDolGlobalString(
'MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) {
63 header(
"Location: ".DOL_URL_ROOT.
"/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete");
67 require_once DOL_DOCUMENT_ROOT.
'/core/class/infobox.class.php';
70 $boxorder =
GETPOST(
'boxorder',
'aZ09');
71 $boxorder .=
GETPOST(
'boxcombo',
'aZ09');
84 if (!isset($form) || !is_object($form)) {
85 $form =
new Form($db);
89 $title = $langs->trans(
"HomeArea").
' - Dolibarr '.DOL_VERSION;
91 $title = $langs->trans(
"HomeArea").
' - ' .
getDolGlobalString(
'MAIN_APPLICATION_TITLE');
100 print
load_fiche_titre(
' ', $resultboxes[
'selectboxlist'],
'', 0,
'',
'titleforhome');
103 $conf->global->MAIN_MOTD = preg_replace(
'/<br(\s[\sa-zA-Z_="]*)?\/?>/i',
'<br>',
getDolGlobalString(
'MAIN_MOTD'));
109 print
"\n<!-- Start of welcome text -->\n";
110 print
'<table class="centpercent notopnoleftnoright"><tr><td>';
112 print
'</td></tr></table><br>';
113 print
"\n<!-- End of welcome text -->\n";
126 $lockfile = DOL_DATA_ROOT.
'/install.lock';
127 if (!empty($lockfile) && !file_exists($lockfile) && is_dir(DOL_DOCUMENT_ROOT.
"/install")) {
128 $langs->load(
"errors");
130 $message .=
info_admin($langs->transnoentities(
"WarningLockFileDoesNotExists", DOL_DATA_ROOT).
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
134 if (is_writable($conffile)) {
135 $langs->load(
"errors");
138 $message .=
info_admin($langs->transnoentities(
"WarningConfFileMustBeReadOnly").
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
142 $parameters = array();
143 $reshook = $hookmanager->executeHooks(
'infoadmin', $parameters,
$object, $action);
145 $message .= $hookmanager->resPrint;
159 $boxstatItems = array();
160 $boxstatFromHook =
'';
163 $langs->loadLangs(array(
'commercial',
'bills',
'orders',
'contracts'));
170 $dashboardlines = array();
173 require_once DOL_DOCUMENT_ROOT.
'/core/class/workboardresponse.class.php';
177 include_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
179 $dashboardlines[$board->element] = $board->load_board($user);
184 include_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
186 $dashboardlines[$board->element] = $board->load_board($user);
191 include_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
192 $board =
new Task($db);
193 $dashboardlines[$board->element] = $board->load_board($user);
198 include_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
200 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
202 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
207 $langs->load(
"supplier_proposal");
208 include_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
210 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
212 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
217 include_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
220 $dashboardlines[$board->element.
'_toship'] = $board->load_board($user,
'toship');
223 $dashboardlines[$board->element.
'_tobill'] = $board->load_board($user,
'tobill');
226 $dashboardlines[$board->element.
'_shippedtobill'] = $board->load_board($user,
'shippedtobill');
231 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
233 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
234 $dashboardlines[$board->element.
'_awaiting'] = $board->load_board($user,
'awaiting');
239 include_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
241 $dashboardlines[$board->element.
'_inactive'] = $board->load_board($user,
"inactive");
243 $dashboardlines[$board->element.
'_active'] = $board->load_board($user,
"active");
248 include_once DOL_DOCUMENT_ROOT.
'/ticket/class/ticket.class.php';
250 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
257 include_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
259 $dashboardlines[$board->element] = $board->load_board($user);
263 if (
isModEnabled(
'supplier_invoice') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'fournisseur',
'facture',
'lire')) {
264 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
266 $dashboardlines[$board->element] = $board->load_board($user);
271 include_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
273 $nb = $board->countAccountToReconcile();
275 $dashboardlines[$board->element] = $board->load_board($user);
283 include_once DOL_DOCUMENT_ROOT .
'/compta/paiement/cheque/class/remisecheque.class.php';
285 $dashboardlines[$board->element] = $board->load_board($user);
288 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
290 $dashboardlines[$board->element .
'_direct_debit'] = $board->load_board($user,
'direct_debit');
293 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
295 $dashboardlines[$board->element .
'_credit_transfer'] = $board->load_board($user,
'credit_transfer');
301 include_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
303 $dashboardlines[$board->element.
'_shift'] = $board->load_board($user,
'shift');
304 $dashboardlines[$board->element.
'_expired'] = $board->load_board($user,
'expired');
309 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
311 $dashboardlines[$board->element.
'_toapprove'] = $board->load_board($user,
'toapprove');
316 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
318 $dashboardlines[$board->element.
'_topay'] = $board->load_board($user,
'topay');
323 include_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
325 $dashboardlines[$board->element] = $board->load_board($user);
329 $parameters = array();
331 $reshook = $hookmanager->executeHooks(
332 'addOpenElementsDashboardLine',
338 $dashboardlines = array_merge($dashboardlines, $hookmanager->resArray);
342 $dashboardgroup = array(
345 'groupName' =>
'Agenda',
346 'stats' => array(
'action'),
350 'groupName' =>
'Projects',
351 'globalStatsKey' =>
'projects',
352 'stats' => array(
'project',
'project_task'),
356 'groupName' =>
'Proposals',
357 'globalStatsKey' =>
'proposals',
359 array(
'propal_opened',
'propal_signed'),
363 'groupName' =>
'Orders',
364 'globalStatsKey' =>
'orders',
366 array(
'commande_toship',
'commande_tobill',
'commande_shippedtobill'),
370 'groupName' =>
'Invoices',
371 'globalStatsKey' =>
'invoices',
375 'supplier_proposal' =>
377 'lang' =>
'supplier_proposal',
378 'groupName' =>
'SupplierProposals',
379 'globalStatsKey' =>
'askprice',
381 array(
'supplier_proposal_opened',
'supplier_proposal_signed'),
385 'groupName' =>
'SuppliersOrders',
386 'globalStatsKey' =>
'supplier_orders',
388 array(
'order_supplier_opened',
'order_supplier_awaiting'),
390 'invoice_supplier' =>
392 'groupName' =>
'BillsSuppliers',
393 'globalStatsKey' =>
'supplier_invoices',
395 array(
'invoice_supplier'),
399 'groupName' =>
'Contracts',
400 'globalStatsKey' =>
'Contracts',
402 array(
'contrat_inactive',
'contrat_active'),
406 'groupName' =>
'Tickets',
407 'globalStatsKey' =>
'ticket',
409 array(
'ticket_opened'),
413 'groupName' =>
'BankAccount',
415 array(
'bank_account',
'chequereceipt',
'widthdraw_direct_debit',
'widthdraw_credit_transfer'),
419 'groupName' =>
'Members',
420 'globalStatsKey' =>
'members',
422 array(
'member_shift',
'member_expired'),
426 'groupName' =>
'ExpenseReport',
427 'globalStatsKey' =>
'expensereports',
429 array(
'expensereport_toapprove',
'expensereport_topay'),
433 'groupName' =>
'Holidays',
434 'globalStatsKey' =>
'holidays',
442 'dashboardgroup' => $dashboardgroup
444 $reshook = $hookmanager->executeHooks(
'addOpenElementsDashboardGroup', $parameters,
$object, $action);
446 $dashboardgroup = array_merge($dashboardgroup, $hookmanager->resArray);
451 $totallate = $totaltodo = 0;
455 $valid_dashboardlines = array();
456 foreach ($dashboardlines as $workboardid => $tmp) {
458 $tmp->id = $workboardid;
459 $valid_dashboardlines[$workboardid] = $tmp;
464 foreach ($valid_dashboardlines as $board) {
465 if (is_numeric($board->nbtodo) && is_numeric($board->nbtodolate) && $board->nbtodolate > 0) {
466 $totaltodo += $board->nbtodo;
467 $totallate += $board->nbtodolate;
471 $openedDashBoardSize =
'info-box-sm';
472 foreach ($dashboardgroup as $dashbordelement) {
473 if (is_array($dashbordelement[
'stats']) && count($dashbordelement[
'stats']) > 2) {
474 $openedDashBoardSize =
'';
479 $totalLateNumber = $totallate;
480 $totallatePercentage = ((!empty($totaltodo)) ? round($totallate / $totaltodo * 100, 2) : 0);
482 $totallate = $totallatePercentage;
486 $boxwork .=
'<div class="box">';
487 $boxwork .=
'<table summary="'.dol_escape_htmltag($langs->trans(
"WorkingBoard")).
'" class="noborder boxtable boxtablenobottom boxworkingboard centpercent">'.
"\n";
488 $boxwork .=
'<tr class="liste_titre">';
489 $boxwork .=
'<th class="liste_titre"><div class="inline-block valignmiddle">'.$langs->trans(
"DolibarrWorkBoard").
'</div>';
491 if ($totallate > 0) {
492 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
494 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
497 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
499 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
501 $options =
'height="24px" style="float: right"';
502 $boxwork .=
showWeather($totallate, $text, $options,
'inline-block valignmiddle');
505 $boxwork .=
'</tr>'.
"\n";
508 $nbworkboardempty = 0;
509 $isIntopOpenedDashBoard = $globalStatInTopOpenedDashBoard = array();
510 if (!empty($valid_dashboardlines)) {
511 $openedDashBoard =
'';
513 $boxwork .=
'<tr class="nobottom nohover"><td class="tdboxstats nohover flexcontainer centpercent"><div style="display: flex: flex-wrap: wrap">';
515 foreach ($dashboardgroup as $groupKey => $groupElement) {
520 foreach ($groupElement[
'stats'] as $infoKey) {
521 if (!empty($valid_dashboardlines[$infoKey])) {
522 $boards[] = $valid_dashboardlines[$infoKey];
523 $isIntopOpenedDashBoard[] = $infoKey;
528 if (!empty($boards)) {
529 if (!empty($groupElement[
'lang'])) {
530 $langs->load($groupElement[
'lang']);
533 $groupName = $langs->trans($groupElement[
'groupName']);
534 $groupKeyLowerCase = strtolower($groupKey);
537 $globalStatsKey =
false;
538 if (!empty($groupElement[
'globalStatsKey']) && empty($groupElement[
'globalStats'])) {
539 $globalStatsKey = $groupElement[
'globalStatsKey'];
540 $groupElement[
'globalStats'] = array();
543 $openedDashBoard .=
'<div class="box-flex-item"><div class="box-flex-item-with-margin">'.
"\n";
544 $openedDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
'">'.
"\n";
545 $openedDashBoard .=
' <span class="info-box-icon bg-infobox-'.$groupKeyLowerCase.
'">'.
"\n";
546 $openedDashBoard .=
' <i class="fa fa-dol-'.$groupKeyLowerCase.
'"></i>'.
"\n";
549 if (!empty($groupElement[
'globalStats'])) {
550 $globalStatInTopOpenedDashBoard[] = $globalStatsKey;
551 $openedDashBoard .=
'<span class="info-box-icon-text" title="'.$groupElement[
'globalStats'][
'text'].
'">'.$groupElement[
'globalStats'][
'nbTotal'].
'</span>';
554 $openedDashBoard .=
'</span>'.
"\n";
555 $openedDashBoard .=
'<div class="info-box-content">'.
"\n";
557 $openedDashBoard .=
'<div class="info-box-title" title="'.strip_tags($groupName).
'">'.$groupName.
'</div>'.
"\n";
558 $openedDashBoard .=
'<div class="info-box-lines">'.
"\n";
560 foreach ($boards as $board) {
561 $openedDashBoard .=
'<div class="info-box-line spanoverflow nowrap">';
563 if (!empty($board->labelShort)) {
564 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text" title="'.$board->label.
'">'.$board->labelShort.
'</div>';
566 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text">'.$board->label.
'</div>';
569 $textLateTitle = $langs->trans(
"NActionsLate", $board->nbtodolate);
570 $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").
')';
572 if ($board->id ==
'bank_account') {
573 $textLateTitle .=
'<br><span class="opacitymedium">'.$langs->trans(
"IfYouDontReconcileDisableProperty", $langs->transnoentitiesnoconv(
"Conciliable")).
'</span>';
577 if ($board->nbtodolate > 0) {
578 $textLate .=
'<span title="'.dol_escape_htmltag($textLateTitle).
'" class="classfortooltip badge badge-warning">';
579 $textLate .=
'<i class="fa fa-exclamation-triangle"></i> '.$board->nbtodolate;
580 $textLate .=
'</span>';
584 if ($board->nbtodo > 0) {
585 $nbtodClass =
'badge badge-info';
587 $nbtodClass =
'opacitymedium';
591 $labeltoshow = $board->label.
' ('.$board->nbtodo.
')';
592 if ($board->total > 0) {
593 $labeltoshow .=
' - '.price($board->total, 0, $langs, 1, -1, -1, $conf->currency);
595 $openedDashBoard .=
'<a href="'.$board->url.
'" class="info-box-text info-box-text-a">';
596 $openedDashBoard .= $infoName;
597 $openedDashBoard .=
'<div class="inline-block nowraponall">';
598 $openedDashBoard .=
'<span class="classfortooltip'.($nbtodClass ?
' '.$nbtodClass :
'').
'" title="'.$labeltoshow.
'">';
599 $openedDashBoard .= $board->nbtodo;
601 $openedDashBoard .=
' : '.price($board->total, 0, $langs, 1, -1, -1, $conf->currency);
603 $openedDashBoard .=
'</span>';
606 if ($board->url_late) {
607 $openedDashBoard .=
'</div></a>';
608 $openedDashBoard .=
' <div class="inline-block"><a href="'.$board->url_late.
'" class="info-box-text info-box-text-a paddingleft">';
610 $openedDashBoard .=
' ';
612 $openedDashBoard .= $textLate;
614 $openedDashBoard .=
'</a>'.
"\n";
615 $openedDashBoard .=
'</div>';
616 $openedDashBoard .=
'</div>'.
"\n";
621 $openedDashBoard .=
' </div><!-- /.info-box-lines --></div><!-- /.info-box-content -->'.
"\n";
622 $openedDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
623 $openedDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
624 $openedDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
625 $openedDashBoard .=
"\n";
629 if ($showweather && !empty($isIntopOpenedDashBoard)) {
630 $appendClass = (
getDolGlobalInt(
'MAIN_DISABLE_METEO') == 2 ?
' hideonsmartphone' :
'');
634 if ($totallate > 0) {
635 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
637 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
640 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
642 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
644 $weatherDashBoard =
'<div class="box-flex-item '.$appendClass.
'"><div class="box-flex-item-with-margin">'.
"\n";
645 $weatherDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
' info-box-weather info-box-weather-level'.$weather->level.
'">'.
"\n";
646 $weatherDashBoard .=
' <span class="info-box-icon">';
647 $weatherDashBoard .=
img_weather(
'', $weather->level,
'', 0,
'valignmiddle width50');
648 $weatherDashBoard .=
' </span>'.
"\n";
649 $weatherDashBoard .=
' <div class="info-box-content">'.
"\n";
650 $weatherDashBoard .=
' <div class="info-box-title">'.$langs->trans(
'GlobalOpenedElemView').
'</div>'.
"\n";
652 if ($totallatePercentage > 0 &&
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE')) {
653 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
655 price($totallatePercentage).
'%'
657 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
662 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
666 if ($totallatePercentage > 0) {
667 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
669 price($totallatePercentage).
'%'
674 $weatherDashBoard .=
' </div><!-- /.info-box-content -->'.
"\n";
675 $weatherDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
676 $weatherDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
677 $weatherDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
678 $weatherDashBoard .=
"\n";
680 $openedDashBoard = $weatherDashBoard.$openedDashBoard;
683 if (!empty($isIntopOpenedDashBoard)) {
684 for ($i = 1; $i <= 10; $i++) {
685 $openedDashBoard .=
'<div class="box-flex-item filler"></div>';
689 $nbworkboardcount = 0;
690 foreach ($valid_dashboardlines as $infoKey => $board) {
691 if (in_array($infoKey, $isIntopOpenedDashBoard)) {
696 if (empty($board->nbtodo)) {
702 $textlate = $langs->trans(
"NActionsLate", $board->nbtodolate);
703 $textlate .=
' ('.$langs->trans(
"Late").
' = '.$langs->trans(
"DateReference").
' > '.$langs->trans(
"DateToday").
' '.(ceil($board->warning_delay) >= 0 ?
'+' :
'').ceil($board->warning_delay).
' '.$langs->trans(
"days").
')';
706 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats130 boxstatsborder">';
707 $boxwork .=
'<div class="boxstatscontent">';
708 $boxwork .=
'<span class="boxstatstext" title="'.dol_escape_htmltag($board->label).
'">'.$board->img.
' <span>'.$board->label.
'</span></span><br>';
709 $boxwork .=
'<a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.$board->nbtodo.
'</span></a>';
711 $boxwork .=
' / <a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.
price($board->total).
'</span></a>';
713 $boxwork .=
'</div>';
714 if ($board->nbtodolate > 0) {
715 $boxwork .=
'<div class="dashboardlinelatecoin nowrap">';
716 $boxwork .=
'<a title="'.dol_escape_htmltag($textlate).
'" class="valignmiddle dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'" href="'.((!$board->url_late) ? $board->url : $board->url_late).
'">';
721 'class="inline-block hideonsmartphone valigntextbottom"'
723 $boxwork .=
'<span class="dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'">';
724 $boxwork .= $board->nbtodolate;
725 $boxwork .=
'</span>';
727 $boxwork .=
'</div>';
729 $boxwork .=
'</div></div>';
733 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
734 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
735 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
736 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
738 $boxwork .=
'</div>';
739 $boxwork .=
'</td></tr>';
741 $boxwork .=
'<tr class="nohover">';
742 $boxwork .=
'<td class="nohover valignmiddle opacitymedium">';
743 $boxwork .= $langs->trans(
"NoOpenedElementToProcess");
748 $boxwork .=
'</td></tr>';
750 $boxwork .=
'</table>';
751 $boxwork .=
'</div>';
753 if (!empty($isIntopOpenedDashBoard)) {
754 print
'<div class="fichecenter">';
755 print
'<div class="opened-dash-board-wrap"><div class="box-flex-container">'.$openedDashBoard.
'</div></div>';
761 print
'<div class="clearboth"></div>';
763 print
'<div class="fichecenter fichecenterbis">';
770 $boxlist =
'<div class="twocolumns">';
772 $boxlist .=
'<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
773 if (!empty($nbworkboardcount)) {
774 $boxlist .= $boxwork;
777 $boxlist .= $resultboxes[
'boxlista'];
779 $boxlist .=
'</div>';
781 $boxlist .=
'<div class="secondcolumn fichehalfright boxhalfright" id="boxhalfright">';
783 $boxlist .= $resultboxes[
'boxlistb'];
785 $boxlist .=
'</div>';
788 $boxlist .=
'</div>';
817 return img_weather($text, $weather->picto, $options, 0, $morecss);
830 $weather->picto =
'';
835 $used_conf = (
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'MAIN_METEO_PERCENTAGE_LEVEL' :
'MAIN_METEO_LEVEL');
840 $level1 = $offset + $factor;
842 $level2 = $offset + 2 * $factor;
844 $level3 = $offset + 3 * $factor;
847 if ($totallate <= $level0) {
848 $weather->picto =
'weather-clear.png';
850 } elseif ($totallate <= $level1) {
851 $weather->picto =
'weather-few-clouds.png';
853 } elseif ($totallate <= $level2) {
854 $weather->picto =
'weather-clouds.png';
856 } elseif ($totallate <= $level3) {
857 $weather->picto =
'weather-many-clouds.png';
860 $weather->picto =
'weather-storm.png';
if($user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='')
Show information in HTML for admin users or standard users.
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.
isModEnabled($module)
Is Dolibarr module enabled.
showWeather($totallate, $text, $options, $morecss='')
Show weather logo.
getWeatherStatus($totallate)
get weather status for conf 'MAIN_METEO_LEVELx'
if(!defined( 'CSRFCHECK_WITH_TOKEN'))
Class to generate the form for creating a new ticket.
if(!defined('NOTOKENRENEWAL')) if(!defined('NOLOGIN')) if(!defined('NOCSRFCHECK')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) if(!defined('NOIPCHECK')) if(!defined('NOBROWSERNOTIF')) llxHeader()
Header empty.