31define(
'CSRFCHECK_WITH_TOKEN', 1);
33require
'main.inc.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
46$_GET[
'mainmenu'] =
GETPOST(
'mainmenu',
'aZ09') ?
GETPOST(
'mainmenu',
'aZ09') :
'home';
47$action =
GETPOST(
'action',
'aZ09');
49$hookmanager->initHooks(array(
'index'));
51require_once DOL_DOCUMENT_ROOT.
'/core/redirect_if_setup_not_complete.inc.php';
59 require_once DOL_DOCUMENT_ROOT.
'/core/class/infobox.class.php';
62 $boxorder =
GETPOST(
'boxorder',
'aZ09');
63 $boxorder .=
GETPOST(
'boxcombo',
'aZ09');
76if (!isset($form) || !is_object($form)) {
77 $form =
new Form($db);
80$appli = constant(
'DOL_APPLICATION_TITLE');
83 $appli = (preg_match(
'/^\+/', $applicustom) ? $appli :
'').$applicustom;
85 $appli .=
" ".DOL_VERSION;
89$title = $langs->trans(
"HomeArea").
' - '.$appli;
98 $conf->global->MAIN_MOTD = preg_replace(
'/<br(\s[\sa-zA-Z_="]*)?\/?>/i',
'<br>',
getDolGlobalString(
'MAIN_MOTD'));
100 $substitutionarray = getCommonSubstitutionArray($langs);
104 print
"\n<!-- Start of welcome text -->\n";
105 print
'<table class="centpercent notopnoleftnoright"><tr><td>';
107 print
'</td></tr></table><br>';
108 print
"\n<!-- End of welcome text -->\n";
133 $lockfile = DOL_DATA_ROOT.
'/install.lock';
134 if (!empty($lockfile) && !file_exists($lockfile) && is_dir(DOL_DOCUMENT_ROOT.
"/install")) {
135 $langs->load(
"errors");
137 $message .=
info_admin($langs->transnoentities(
"WarningLockFileDoesNotExists", DOL_DATA_ROOT).
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
144 $newPerm = $currentPerm & ~0222;
150 $langs->load(
"errors");
151 $message .=
info_admin($langs->transnoentities(
"WarningConfFileMustBeReadOnly").
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
156 $parameters = array();
157 $reshook = $hookmanager->executeHooks(
'infoadmin', $parameters, $object, $action);
159 $message .= $hookmanager->resPrint;
162 print
'<!-- show security warning -->';
174print
load_fiche_titre(
' ', $resultboxes[
'selectboxlist'],
'', 0,
'',
'titleforhome');
177$langs->loadLangs(array(
'commercial',
'bills',
'orders',
'contracts'));
184 $dashboardlines = array();
187 require_once DOL_DOCUMENT_ROOT.
'/core/class/workboardresponse.class.php';
191 include_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
193 $dashboardlines[$board->element] = $board->load_board($user);
198 include_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
200 $dashboardlines[$board->element] = $board->load_board($user);
205 include_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
206 $board =
new Task($db);
207 $dashboardlines[$board->element] = $board->load_board($user);
212 include_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
214 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
216 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
221 $langs->load(
"supplier_proposal");
222 include_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
224 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
226 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
231 include_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
234 $dashboardlines[$board->element.
'_toship'] = $board->load_board($user,
'toship');
237 $dashboardlines[$board->element.
'_tobill'] = $board->load_board($user,
'tobill');
240 $dashboardlines[$board->element.
'_shippedtobill'] = $board->load_board($user,
'shippedtobill');
245 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
247 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
248 $dashboardlines[$board->element.
'_awaiting'] = $board->load_board($user,
'awaiting');
253 include_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
255 $dashboardlines[$board->element.
'_inactive'] = $board->load_board($user,
"inactive");
257 $dashboardlines[$board->element.
'_active'] = $board->load_board($user,
"active");
262 include_once DOL_DOCUMENT_ROOT.
'/ticket/class/ticket.class.php';
264 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
271 include_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
273 $dashboardlines[$board->element] = $board->load_board($user);
277 if (
isModEnabled(
'supplier_invoice') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'fournisseur',
'facture',
'lire')) {
278 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
280 $dashboardlines[$board->element] = $board->load_board($user);
285 include_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
287 $nb = $board->countAccountToReconcile();
289 $dashboardlines[$board->element] = $board->load_board($user);
297 include_once DOL_DOCUMENT_ROOT .
'/compta/paiement/cheque/class/remisecheque.class.php';
299 $dashboardlines[$board->element] = $board->load_board($user);
302 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
304 $dashboardlines[$board->element .
'_direct_debit'] = $board->load_board($user,
'direct_debit');
307 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
309 $dashboardlines[$board->element .
'_credit_transfer'] = $board->load_board($user,
'credit_transfer');
315 include_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
317 $dashboardlines[$board->element.
'_shift'] = $board->load_board($user,
'shift');
318 $dashboardlines[$board->element.
'_expired'] = $board->load_board($user,
'expired');
323 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
325 $dashboardlines[$board->element.
'_toapprove'] = $board->load_board($user,
'toapprove');
330 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
332 $dashboardlines[$board->element.
'_topay'] = $board->load_board($user,
'topay');
337 include_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
339 $dashboardlines[$board->element] = $board->load_board($user);
343 include_once DOL_DOCUMENT_ROOT.
'/mrp/class/mo.class.php';
344 $board =
new Mo($db);
345 $dashboardlines[$board->element] = $board->load_board($user);
349 $parameters = array();
351 $reshook = $hookmanager->executeHooks(
352 'addOpenElementsDashboardLine',
358 $dashboardlines = array_merge($dashboardlines, $hookmanager->resArray);
361 $dashboardgroup = array(
364 'groupName' =>
'Agenda',
365 'stats' => array(
'action'),
369 'groupName' =>
'Projects',
370 'globalStatsKey' =>
'projects',
371 'stats' => array(
'project',
'project_task'),
375 'groupName' =>
'Proposals',
376 'globalStatsKey' =>
'proposals',
378 array(
'propal_opened',
'propal_signed'),
382 'groupName' =>
'Orders',
383 'globalStatsKey' =>
'orders',
385 array(
'commande_toship',
'commande_tobill',
'commande_shippedtobill'),
389 'groupName' =>
'Invoices',
390 'globalStatsKey' =>
'invoices',
394 'supplier_proposal' =>
396 'lang' =>
'supplier_proposal',
397 'groupName' =>
'SupplierProposals',
398 'globalStatsKey' =>
'askprice',
400 array(
'supplier_proposal_opened',
'supplier_proposal_signed'),
404 'groupName' =>
'SuppliersOrders',
405 'globalStatsKey' =>
'supplier_orders',
407 array(
'order_supplier_opened',
'order_supplier_awaiting'),
409 'invoice_supplier' =>
411 'groupName' =>
'BillsSuppliers',
412 'globalStatsKey' =>
'supplier_invoices',
414 array(
'invoice_supplier'),
418 'groupName' =>
'Contracts',
419 'globalStatsKey' =>
'Contracts',
421 array(
'contrat_inactive',
'contrat_active'),
425 'groupName' =>
'Tickets',
426 'globalStatsKey' =>
'ticket',
428 array(
'ticket_opened'),
432 'groupName' =>
'BankAccount',
434 array(
'bank_account',
'chequereceipt',
'widthdraw_direct_debit',
'widthdraw_credit_transfer'),
438 'groupName' =>
'Members',
439 'globalStatsKey' =>
'members',
441 array(
'member_shift',
'member_expired'),
445 'groupName' =>
'ExpenseReport',
446 'globalStatsKey' =>
'expensereports',
448 array(
'expensereport_toapprove',
'expensereport_topay'),
452 'groupName' =>
'Holidays',
453 'globalStatsKey' =>
'holidays',
460 'globalStatsKey' =>
'mrp',
467 'dashboardgroup' => $dashboardgroup
469 $reshook = $hookmanager->executeHooks(
'addOpenElementsDashboardGroup', $parameters, $object, $action);
471 $dashboardgroup = array_merge($dashboardgroup, $hookmanager->resArray);
476 $totallate = $totaltodo = 0;
480 $valid_dashboardlines = array();
481 foreach ($dashboardlines as $workboardid => $tmp) {
483 $tmp->id = $workboardid;
484 $valid_dashboardlines[$workboardid] = $tmp;
488 foreach ($valid_dashboardlines as $board) {
489 if (is_numeric($board->nbtodo) && is_numeric($board->nbtodolate) && $board->nbtodolate > 0) {
490 $totaltodo += $board->nbtodo;
491 $totallate += $board->nbtodolate;
495 $openedDashBoardSize =
'info-box-sm';
496 foreach ($dashboardgroup as $dashbordelement) {
497 if (is_array($dashbordelement[
'stats']) && count($dashbordelement[
'stats']) > 2) {
498 $openedDashBoardSize =
'';
503 $totalLateNumber = $totallate;
504 $totallatePercentage = ((!empty($totaltodo)) ? round($totallate / $totaltodo * 100, 2) : 0);
506 $totallate = $totallatePercentage;
511 $boxwork .=
'<div class="box">';
512 $boxwork .=
'<table summary="'.dol_escape_htmltag($langs->trans(
"WorkingBoard")).
'" class="noborder boxtable boxtablenobottom boxworkingboard centpercent">'.
"\n";
513 $boxwork .=
'<tr class="liste_titre">';
514 $boxwork .=
'<th class="liste_titre"><div class="inline-block valignmiddle">'.$langs->trans(
"DolibarrWorkBoard").
'</div>';
516 if ($totallate > 0) {
517 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
519 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
522 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
524 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
526 $options =
'height="24px" style="float: right"';
527 $boxwork .=
showWeather($totallate, $text, $options,
'inline-block valignmiddle');
530 $boxwork .=
'</tr>'.
"\n";
533 $nbworkboardempty = 0;
534 $isIntopOpenedDashBoard = $globalStatInTopOpenedDashBoard = array();
535 $openedDashBoard =
'';
536 if (!empty($valid_dashboardlines)) {
537 $boxwork .=
'<tr class="nobottom nohover"><td class="tdboxstats nohover flexcontainer centpercent"><div style="display: flex: flex-wrap: wrap">';
538 foreach ($dashboardgroup as $groupKey => $groupElement) {
543 foreach ($groupElement[
'stats'] as $infoKey) {
544 if (!empty($valid_dashboardlines[$infoKey])) {
545 $boards[] = $valid_dashboardlines[$infoKey];
546 $isIntopOpenedDashBoard[] = $infoKey;
552 if (!empty($boards)) {
553 if (!empty($groupElement[
'lang'])) {
554 $langs->load($groupElement[
'lang']);
557 $groupName = $langs->trans($groupElement[
'groupName']);
558 $groupKeyLowerCase = strtolower($groupKey);
561 $globalStatsKey =
false;
562 if (!empty($groupElement[
'globalStatsKey']) && empty($groupElement[
'globalStats'])) {
563 $globalStatsKey = $groupElement[
'globalStatsKey'];
564 $groupElement[
'globalStats'] = array();
569 'action' =>
dol_buildpath(
'/comm/action/card.php?action=create', 1),
570 'project' =>
dol_buildpath(
'/projet/card.php?action=create', 1),
571 'propal' =>
dol_buildpath(
'/comm/propal/card.php?action=create', 1),
572 'commande' =>
dol_buildpath(
'/commande/card.php?action=create', 1),
573 'facture' =>
dol_buildpath(
'/compta/facture/card.php?action=create', 1),
574 'supplier_proposal' =>
dol_buildpath(
'/supplier_proposal/card.php?action=create', 1),
575 'order_supplier' =>
dol_buildpath(
'/fourn/commande/card.php?action=create', 1),
576 'invoice_supplier' =>
dol_buildpath(
'/fourn/facture/card.php?action=create', 1),
577 'contrat' =>
dol_buildpath(
'/contrat/card.php?action=create', 1),
578 'ticket' =>
dol_buildpath(
'/ticket/card.php?action=create', 1),
579 'bank_account' =>
dol_buildpath(
'/compta/bank/card.php?action=create', 1),
580 'member' =>
dol_buildpath(
'/adherents/card.php?action=create', 1),
581 'expensereport' =>
dol_buildpath(
'/expensereport/card.php?action=create', 1),
582 'holiday' =>
dol_buildpath(
'/holiday/card.php?action=create', 1),
583 'cubes' =>
dol_buildpath(
'/mrp/mo_card.php?action=create', 1),
586 $infoboxMoreCss =
'';
587 if (array_key_exists($groupKey, $arrayLinks)) {
588 $infoboxMoreCss =
'infobox-haslink';
591 $openedDashBoard .=
'<div class="box-flex-item"><div class="box-flex-item-with-margin">'.
"\n";
592 $openedDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
' '.$infoboxMoreCss.
'">'.
"\n";
593 $openedDashBoard .=
' <span class="info-box-icon bg-infobox-'.$groupKeyLowerCase.
'">'.
"\n";
594 $openedDashBoard .=
' <i class="fa fa-dol-'.$groupKeyLowerCase.
'"></i>'.
"\n";
597 if (!empty($groupElement[
'globalStats'])) {
598 $globalStatInTopOpenedDashBoard[] = $globalStatsKey;
599 $openedDashBoard .=
'<span class="info-box-icon-text" title="'.$groupElement[
'globalStats'][
'text'].
'">'.$groupElement[
'globalStats'][
'nbTotal'].
'</span>';
602 if (array_key_exists($groupKey, $arrayLinks)) {
603 $openedDashBoard .=
' <a href="'.$arrayLinks[$groupKey].
'" class="info-box-createlink"><span class="fas fa-plus-circle"></span></a>'.
"\n";
606 $openedDashBoard .=
'</span>'.
"\n";
607 $openedDashBoard .=
'<div class="info-box-content">'.
"\n";
609 $openedDashBoard .=
'<div class="info-box-title" title="'.dolPrintHTMLForAttribute($groupName).
'">'.$groupName.
'</div>'.
"\n";
610 $openedDashBoard .=
'<div class="info-box-lines">'.
"\n";
612 foreach ($boards as $board) {
613 $openedDashBoard .=
'<div class="info-box-line spanoverflow nowrap">';
615 if (!empty($board->labelShort)) {
616 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text" title="'.$board->label.
'">'.$board->labelShort.
'</div>';
618 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text">'.$board->label.
'</div>';
621 $textLateTitle = $langs->trans(
"NActionsLate", $board->nbtodolate);
624 if ($board->id ==
'mo') {
625 $dateOrder = $langs->trans(
"DateToday") .
" > " . $langs->trans(
"DateReference");
627 $dateOrder = $langs->trans(
"DateReference") .
" > " . $langs->trans(
"DateToday");
629 $warningDelay = ceil(empty($board->warning_delay) ? 0 : $board->warning_delay);
631 if ($warningDelay >= 0) {
635 $textLateTitle .=
" (" . $langs->trans(
"Late") .
" = $dateOrder $sign$warningDelay " . $langs->trans(
"days") .
")";
637 if ($board->id ==
'bank_account') {
638 $textLateTitle .=
'<br><span class="opacitymedium">'.$langs->trans(
"IfYouDontReconcileDisableProperty", $langs->transnoentitiesnoconv(
"Conciliable")).
'</span>';
642 if ($board->nbtodolate > 0) {
643 $textLate .=
'<span title="'.dol_escape_htmltag($textLateTitle).
'" class="classfortooltip badge badge-warning">';
644 $textLate .=
'<i class="fa fa-exclamation-triangle hideonsmartphone"></i> '.$board->nbtodolate;
645 $textLate .=
'</span>';
649 if ($board->nbtodo > 0) {
650 $nbtodClass =
'badge badge-info';
652 $nbtodClass =
'opacitymedium';
656 $labeltoshow = $board->label.
' ('.$board->nbtodo.
')';
657 if ($board->total > 0) {
658 $labeltoshow .=
' - '.price($board->total, 0, $langs, 1, -1, -1,
getDolCurrency());
660 $openedDashBoard .=
'<a href="'.$board->url.
'" class="info-box-text info-box-text-a">';
661 $openedDashBoard .= $infoName;
662 $openedDashBoard .=
'</a>';
663 $openedDashBoard .=
'<div class="inline-block nowraponall">';
664 $openedDashBoard .=
'<a href="'.$board->url.
'" class="info-box-text info-box-text-a">';
665 $openedDashBoard .=
'<span class="classfortooltip'.($nbtodClass ?
' '.$nbtodClass :
'').
'" title="'.$labeltoshow.
'">';
666 $openedDashBoard .= $board->nbtodo;
668 $openedDashBoard .=
' : '.price($board->total, 0, $langs, 1, -1, -1,
getDolCurrency());
670 $openedDashBoard .=
'</span>';
671 $openedDashBoard .=
'</a>';
674 if ($board->url_late) {
675 $openedDashBoard .=
'</div>';
676 $openedDashBoard .=
' <div class="inline-block"><a href="'.$board->url_late.
'" class="info-box-text info-box-text-a paddingleft">';
678 $openedDashBoard .=
' <span class="info-box-text info-box-text-a displaycontents">';
680 $openedDashBoard .= $textLate;
681 if ($board->url_late) {
682 $openedDashBoard .=
'</a>';
684 $openedDashBoard .=
'</span>';
687 $openedDashBoard .=
'</div>'.
"\n";
689 $openedDashBoard .=
'</div>'.
"\n";
694 $openedDashBoard .=
' </div><!-- /.info-box-lines --></div><!-- /.info-box-content -->'.
"\n";
695 $openedDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
696 $openedDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
697 $openedDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
698 $openedDashBoard .=
"\n";
702 if ($showweather && !empty($isIntopOpenedDashBoard)) {
703 $appendClass = (
getDolGlobalInt(
'MAIN_DISABLE_METEO') == 2 ?
' hideonsmartphone' :
'');
707 if ($totallate > 0) {
708 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
710 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
713 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
715 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
717 $weatherDashBoard =
'<div class="box-flex-item '.$appendClass.
'"><div class="box-flex-item-with-margin">'.
"\n";
718 $weatherDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
' info-box-weather info-box-weather-level'.$weather->level.
'">'.
"\n";
719 $weatherDashBoard .=
' <span class="info-box-icon">';
720 $weatherDashBoard .=
img_weather(
'', $weather->level,
'', 0,
'valignmiddle width50');
721 $weatherDashBoard .=
' </span>'.
"\n";
722 $weatherDashBoard .=
' <div class="info-box-content">'.
"\n";
723 $weatherDashBoard .=
' <div class="info-box-title">'.$langs->trans(
'GlobalOpenedElemView').
'</div>'.
"\n";
725 if ($totallatePercentage > 0 &&
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE')) {
726 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
728 price($totallatePercentage).
'%'
730 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
735 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
737 (
string) $totalLateNumber
739 if ($totallatePercentage > 0) {
740 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
742 price($totallatePercentage).
'%'
747 $weatherDashBoard .=
' </div><!-- /.info-box-content -->'.
"\n";
748 $weatherDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
749 $weatherDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
750 $weatherDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
751 $weatherDashBoard .=
"\n";
753 $openedDashBoard = $weatherDashBoard.$openedDashBoard;
756 if (!empty($isIntopOpenedDashBoard)) {
757 for ($i = 1; $i <= 10; $i++) {
758 $openedDashBoard .=
'<div class="box-flex-item filler"></div>';
762 $nbworkboardcount = 0;
763 foreach ($valid_dashboardlines as $infoKey => $board) {
764 if (in_array($infoKey, $isIntopOpenedDashBoard)) {
769 if (empty($board->nbtodo)) {
775 $textlate = $langs->trans(
"NActionsLate", $board->nbtodolate);
776 $textlate .=
' ('.$langs->trans(
"Late").
' = '.$langs->trans(
"DateReference").
' > '.$langs->trans(
"DateToday").
' '.(ceil($board->warning_delay) >= 0 ?
'+' :
'').ceil($board->warning_delay).
' '.$langs->trans(
"days").
')';
779 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats130 boxstatsborder">';
780 $boxwork .=
'<div class="boxstatscontent">';
781 $boxwork .=
'<span class="boxstatstext" title="'.dol_escape_htmltag($board->label).
'">'.$board->img.
' <span>'.$board->label.
'</span></span><br>';
782 $boxwork .=
'<a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.$board->nbtodo.
'</span></a>';
784 $boxwork .=
' / <a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.
price($board->total).
'</span></a>';
786 $boxwork .=
'</div>';
787 if ($board->nbtodolate > 0) {
788 $boxwork .=
'<div class="dashboardlinelatecoin nowrap">';
789 $boxwork .=
'<a title="'.dol_escape_htmltag($textlate).
'" class="valignmiddle dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'" href="'.((!$board->url_late) ? $board->url : $board->url_late).
'">';
794 'class="inline-block hideonsmartphone valigntextbottom"'
796 $boxwork .=
'<span class="dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'">';
797 $boxwork .= $board->nbtodolate;
798 $boxwork .=
'</span>';
800 $boxwork .=
'</div>';
802 $boxwork .=
'</div></div>';
806 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
807 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
808 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
809 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
811 $boxwork .=
'</div>';
812 $boxwork .=
'</td></tr>';
814 $boxwork .=
'<tr class="nohover">';
815 $boxwork .=
'<td class="nohover valignmiddle opacitymedium">';
816 $boxwork .= $langs->trans(
"NoOpenedElementToProcess");
821 $boxwork .=
'</td></tr>';
823 $boxwork .=
'</table>';
824 $boxwork .=
'</div>';
826 if (!empty($isIntopOpenedDashBoard)) {
827 print
'<div class="fichecenter">';
828 print
'<div class="opened-dash-board-wrap"><div class="box-flex-container">'.$openedDashBoard.
'</div></div>';
834print
'<div class="clearboth"></div>';
836print
'<div class="fichecenter fichecenterbis">';
843$boxlist =
'<div class="twocolumns">';
845$boxlist .=
'<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
846if (!empty($nbworkboardcount)) {
847 $boxlist .= $boxwork;
850$boxlist .= $resultboxes[
'boxlista'];
854$boxlist .=
'<div class="secondcolumn fichehalfright boxhalfright" id="boxhalfright">';
856$boxlist .= $resultboxes[
'boxlistb'];
890 return img_weather($text, $weather->picto, $options, 0, $morecss);
903 $weather->picto =
'';
908 $used_conf = (
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'MAIN_METEO_PERCENTAGE_LEVEL' :
'MAIN_METEO_LEVEL');
913 $level1 = $offset + $factor;
915 $level2 = $offset + 2 * $factor;
917 $level3 = $offset + 3 * $factor;
920 if ($totallate <= $level0) {
921 $weather->picto =
'weather-clear.png';
923 } elseif ($totallate <= $level1) {
924 $weather->picto =
'weather-few-clouds.png';
926 } elseif ($totallate <= $level2) {
927 $weather->picto =
'weather-clouds.png';
929 } elseif ($totallate <= $level3) {
930 $weather->picto =
'weather-many-clouds.png';
933 $weather->picto =
'weather-storm.png';
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
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 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.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
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.
dolChmod($filepath, $newmask='')
Change mod of a file.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
getDolCurrency()
Return the main currency ('EUR', 'USD', ...)
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.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
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...
dol_string_onlythesehtmltags($stringtoclean, $cleanalsosomestyles=1, $removeclassattribute=1, $cleanalsojavascript=0, $allowiframe=0, $allowed_tags=array(), $allowlink=0, $allowscript=0, $allowstyle=0, $allowphp=0)
Clean a string to keep only desirable HTML tags.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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.