31define(
'CSRFCHECK_WITH_TOKEN', 1);
33require
'main.inc.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
45$_GET[
'mainmenu'] =
GETPOST(
'mainmenu',
'aZ09') ?
GETPOST(
'mainmenu',
'aZ09') :
'home';
46$action =
GETPOST(
'action',
'aZ09');
48$hookmanager->initHooks(array(
'index'));
56$nbmodulesnotautoenabled = count(
$conf->modules);
57$listofmodulesautoenabled = array(
'agenda',
'fckeditor',
'export',
'import');
58foreach ($listofmodulesautoenabled as $moduleautoenable) {
59 if (in_array($moduleautoenable,
$conf->modules)) {
60 $nbmodulesnotautoenabled--;
66 header(
"Location: ".DOL_URL_ROOT.
"/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete");
69if ($nbmodulesnotautoenabled <=
getDolGlobalInt(
'MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING', 1)) {
70 header(
"Location: ".DOL_URL_ROOT.
"/admin/index.php?mainmenu=home&leftmenu=setup&mesg=setupnotcomplete");
74 require_once DOL_DOCUMENT_ROOT.
'/core/class/infobox.class.php';
77 $boxorder =
GETPOST(
'boxorder',
'aZ09');
78 $boxorder .=
GETPOST(
'boxcombo',
'aZ09');
91if (!isset($form) || !is_object($form)) {
92 $form =
new Form($db);
95$appli = constant(
'DOL_APPLICATION_TITLE');
98 $appli = (preg_match(
'/^\+/', $applicustom) ? $appli :
'').$applicustom;
100 $appli .=
" ".DOL_VERSION;
104$title = $langs->trans(
"HomeArea").
' - '.$appli;
113 $conf->global->MAIN_MOTD = preg_replace(
'/<br(\s[\sa-zA-Z_="]*)?\/?>/i',
'<br>',
getDolGlobalString(
'MAIN_MOTD'));
119 print
"\n<!-- Start of welcome text -->\n";
120 print
'<table class="centpercent notopnoleftnoright"><tr><td>';
122 print
'</td></tr></table><br>';
123 print
"\n<!-- End of welcome text -->\n";
149 $lockfile = DOL_DATA_ROOT.
'/install.lock';
150 if (!empty($lockfile) && !file_exists($lockfile) && is_dir(DOL_DOCUMENT_ROOT.
"/install")) {
151 $langs->load(
"errors");
153 $message .=
info_admin($langs->transnoentities(
"WarningLockFileDoesNotExists", DOL_DATA_ROOT).
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
157 if (is_writable($conffile)) {
158 $langs->load(
"errors");
161 $message .=
info_admin($langs->transnoentities(
"WarningConfFileMustBeReadOnly").
' '.$langs->transnoentities(
"WarningUntilDirRemoved", DOL_DOCUMENT_ROOT.
"/install"), 0, 0,
'1',
'clearboth');
165 $parameters = array();
166 $reshook = $hookmanager->executeHooks(
'infoadmin', $parameters, $object, $action);
168 $message .= $hookmanager->resPrint;
171 print
'<!-- show security warning -->';
183print
load_fiche_titre(
' ', $resultboxes[
'selectboxlist'],
'', 0,
'',
'titleforhome');
186$langs->loadLangs(array(
'commercial',
'bills',
'orders',
'contracts'));
193 $dashboardlines = array();
196 require_once DOL_DOCUMENT_ROOT.
'/core/class/workboardresponse.class.php';
199 if (isModEnabled(
'agenda') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_AGENDA') && $user->hasRight(
'agenda',
'myactions',
'read')) {
200 include_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
202 $dashboardlines[$board->element] = $board->load_board($user);
206 if (isModEnabled(
'project') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_PROJECT') && $user->hasRight(
'projet',
'lire')) {
207 include_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
209 $dashboardlines[$board->element] = $board->load_board($user);
214 include_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
215 $board =
new Task($db);
216 $dashboardlines[$board->element] = $board->load_board($user);
220 if (isModEnabled(
'propal') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CUSTOMER') && $user->hasRight(
'propal',
'read')) {
221 include_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
223 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
225 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
229 if (isModEnabled(
'supplier_proposal') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'supplier_proposal',
'lire')) {
230 $langs->load(
"supplier_proposal");
231 include_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
233 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
235 $dashboardlines[$board->element.
'_signed'] = $board->load_board($user,
"signed");
239 if (isModEnabled(
'order') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CUSTOMER') && $user->hasRight(
'commande',
'lire')) {
240 include_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
243 $dashboardlines[$board->element.
'_toship'] = $board->load_board($user,
'toship');
246 $dashboardlines[$board->element.
'_tobill'] = $board->load_board($user,
'tobill');
249 $dashboardlines[$board->element.
'_shippedtobill'] = $board->load_board($user,
'shippedtobill');
253 if (isModEnabled(
'supplier_order') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'fournisseur',
'commande',
'lire')) {
254 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
256 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
257 $dashboardlines[$board->element.
'_awaiting'] = $board->load_board($user,
'awaiting');
261 if (isModEnabled(
'contract') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CONTRACT') && $user->hasRight(
'contrat',
'lire')) {
262 include_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
264 $dashboardlines[$board->element.
'_inactive'] = $board->load_board($user,
"inactive");
266 $dashboardlines[$board->element.
'_active'] = $board->load_board($user,
"active");
270 if (isModEnabled(
'ticket') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_TICKET') && $user->hasRight(
'ticket',
'read')) {
271 include_once DOL_DOCUMENT_ROOT.
'/ticket/class/ticket.class.php';
273 $dashboardlines[$board->element.
'_opened'] = $board->load_board($user,
"opened");
279 if (isModEnabled(
'invoice') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_CUSTOMER') && $user->hasRight(
'facture',
'lire')) {
280 include_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
282 $dashboardlines[$board->element] = $board->load_board($user);
286 if (isModEnabled(
'supplier_invoice') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_SUPPLIER') && $user->hasRight(
'fournisseur',
'facture',
'lire')) {
287 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
289 $dashboardlines[$board->element] = $board->load_board($user);
293 if (isModEnabled(
'bank') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_BANK') && $user->hasRight(
'banque',
'lire') && !$user->socid) {
294 include_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
296 $nb = $board->countAccountToReconcile();
298 $dashboardlines[$board->element] = $board->load_board($user);
304 if (isModEnabled(
'bank') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_BANK') && $user->hasRight(
'banque',
'lire') && !$user->socid) {
306 include_once DOL_DOCUMENT_ROOT .
'/compta/paiement/cheque/class/remisecheque.class.php';
308 $dashboardlines[$board->element] = $board->load_board($user);
310 if (isModEnabled(
'prelevement')) {
311 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
313 $dashboardlines[$board->element .
'_direct_debit'] = $board->load_board($user,
'direct_debit');
315 if (isModEnabled(
'paymentbybanktransfer')) {
316 include_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
318 $dashboardlines[$board->element .
'_credit_transfer'] = $board->load_board($user,
'credit_transfer');
323 if (isModEnabled(
'member') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_ADHERENT') && $user->hasRight(
'adherent',
'lire') && !$user->socid) {
324 include_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
326 $dashboardlines[$board->element.
'_shift'] = $board->load_board($user,
'shift');
327 $dashboardlines[$board->element.
'_expired'] = $board->load_board($user,
'expired');
331 if (isModEnabled(
'expensereport') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_EXPENSEREPORT') && $user->hasRight(
'expensereport',
'approve')) {
332 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
334 $dashboardlines[$board->element.
'_toapprove'] = $board->load_board($user,
'toapprove');
338 if (isModEnabled(
'expensereport') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_EXPENSEREPORT') && $user->hasRight(
'expensereport',
'to_paid')) {
339 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
341 $dashboardlines[$board->element.
'_topay'] = $board->load_board($user,
'topay');
345 if (isModEnabled(
'holiday') && !
getDolGlobalString(
'MAIN_DISABLE_BLOCK_HOLIDAY') && $user->hasRight(
'holiday',
'approve')) {
346 include_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
348 $dashboardlines[$board->element] = $board->load_board($user);
352 $parameters = array();
354 $reshook = $hookmanager->executeHooks(
355 'addOpenElementsDashboardLine',
361 $dashboardlines = array_merge($dashboardlines, $hookmanager->resArray);
365 $dashboardgroup = array(
368 'groupName' =>
'Agenda',
369 'stats' => array(
'action'),
373 'groupName' =>
'Projects',
374 'globalStatsKey' =>
'projects',
375 'stats' => array(
'project',
'project_task'),
379 'groupName' =>
'Proposals',
380 'globalStatsKey' =>
'proposals',
382 array(
'propal_opened',
'propal_signed'),
386 'groupName' =>
'Orders',
387 'globalStatsKey' =>
'orders',
389 array(
'commande_toship',
'commande_tobill',
'commande_shippedtobill'),
393 'groupName' =>
'Invoices',
394 'globalStatsKey' =>
'invoices',
398 'supplier_proposal' =>
400 'lang' =>
'supplier_proposal',
401 'groupName' =>
'SupplierProposals',
402 'globalStatsKey' =>
'askprice',
404 array(
'supplier_proposal_opened',
'supplier_proposal_signed'),
408 'groupName' =>
'SuppliersOrders',
409 'globalStatsKey' =>
'supplier_orders',
411 array(
'order_supplier_opened',
'order_supplier_awaiting'),
413 'invoice_supplier' =>
415 'groupName' =>
'BillsSuppliers',
416 'globalStatsKey' =>
'supplier_invoices',
418 array(
'invoice_supplier'),
422 'groupName' =>
'Contracts',
423 'globalStatsKey' =>
'Contracts',
425 array(
'contrat_inactive',
'contrat_active'),
429 'groupName' =>
'Tickets',
430 'globalStatsKey' =>
'ticket',
432 array(
'ticket_opened'),
436 'groupName' =>
'BankAccount',
438 array(
'bank_account',
'chequereceipt',
'widthdraw_direct_debit',
'widthdraw_credit_transfer'),
442 'groupName' =>
'Members',
443 'globalStatsKey' =>
'members',
445 array(
'member_shift',
'member_expired'),
449 'groupName' =>
'ExpenseReport',
450 'globalStatsKey' =>
'expensereports',
452 array(
'expensereport_toapprove',
'expensereport_topay'),
456 'groupName' =>
'Holidays',
457 'globalStatsKey' =>
'holidays',
465 'dashboardgroup' => $dashboardgroup
467 $reshook = $hookmanager->executeHooks(
'addOpenElementsDashboardGroup', $parameters, $object, $action);
469 $dashboardgroup = array_merge($dashboardgroup, $hookmanager->resArray);
474 $totallate = $totaltodo = 0;
478 $valid_dashboardlines = array();
479 foreach ($dashboardlines as $workboardid => $tmp) {
481 $tmp->id = $workboardid;
482 $valid_dashboardlines[$workboardid] = $tmp;
487 foreach ($valid_dashboardlines as $board) {
488 if (is_numeric($board->nbtodo) && is_numeric($board->nbtodolate) && $board->nbtodolate > 0) {
489 $totaltodo += $board->nbtodo;
490 $totallate += $board->nbtodolate;
494 $openedDashBoardSize =
'info-box-sm';
495 foreach ($dashboardgroup as $dashbordelement) {
496 if (is_array($dashbordelement[
'stats']) && count($dashbordelement[
'stats']) > 2) {
497 $openedDashBoardSize =
'';
502 $totalLateNumber = $totallate;
503 $totallatePercentage = ((!empty($totaltodo)) ? round($totallate / $totaltodo * 100, 2) : 0);
505 $totallate = $totallatePercentage;
510 $boxwork .=
'<div class="box">';
511 $boxwork .=
'<table summary="'.dol_escape_htmltag($langs->trans(
"WorkingBoard")).
'" class="noborder boxtable boxtablenobottom boxworkingboard centpercent">'.
"\n";
512 $boxwork .=
'<tr class="liste_titre">';
513 $boxwork .=
'<th class="liste_titre"><div class="inline-block valignmiddle">'.$langs->trans(
"DolibarrWorkBoard").
'</div>';
515 if ($totallate > 0) {
516 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
518 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
521 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
523 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
525 $options =
'height="24px" style="float: right"';
526 $boxwork .=
showWeather($totallate, $text, $options,
'inline-block valignmiddle');
529 $boxwork .=
'</tr>'.
"\n";
532 $nbworkboardempty = 0;
533 $isIntopOpenedDashBoard = $globalStatInTopOpenedDashBoard = array();
534 $openedDashBoard =
'';
535 if (!empty($valid_dashboardlines)) {
536 $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;
551 if (!empty($boards)) {
552 if (!empty($groupElement[
'lang'])) {
553 $langs->load($groupElement[
'lang']);
556 $groupName = $langs->trans($groupElement[
'groupName']);
557 $groupKeyLowerCase = strtolower($groupKey);
560 $globalStatsKey =
false;
561 if (!empty($groupElement[
'globalStatsKey']) && empty($groupElement[
'globalStats'])) {
562 $globalStatsKey = $groupElement[
'globalStatsKey'];
563 $groupElement[
'globalStats'] = array();
566 $openedDashBoard .=
'<div class="box-flex-item"><div class="box-flex-item-with-margin">'.
"\n";
567 $openedDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
'">'.
"\n";
568 $openedDashBoard .=
' <span class="info-box-icon bg-infobox-'.$groupKeyLowerCase.
'">'.
"\n";
569 $openedDashBoard .=
' <i class="fa fa-dol-'.$groupKeyLowerCase.
'"></i>'.
"\n";
572 if (!empty($groupElement[
'globalStats'])) {
573 $globalStatInTopOpenedDashBoard[] = $globalStatsKey;
574 $openedDashBoard .=
'<span class="info-box-icon-text" title="'.$groupElement[
'globalStats'][
'text'].
'">'.$groupElement[
'globalStats'][
'nbTotal'].
'</span>';
577 $openedDashBoard .=
'</span>'.
"\n";
578 $openedDashBoard .=
'<div class="info-box-content">'.
"\n";
580 $openedDashBoard .=
'<div class="info-box-title" title="'.dolPrintHTMLForAttribute($groupName).
'">'.$groupName.
'</div>'.
"\n";
581 $openedDashBoard .=
'<div class="info-box-lines">'.
"\n";
583 foreach ($boards as $board) {
584 $openedDashBoard .=
'<div class="info-box-line spanoverflow nowrap">';
586 if (!empty($board->labelShort)) {
587 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text" title="'.$board->label.
'">'.$board->labelShort.
'</div>';
589 $infoName =
'<div class="marginrightonly inline-block valignmiddle info-box-line-text">'.$board->label.
'</div>';
592 $textLateTitle = $langs->trans(
"NActionsLate", $board->nbtodolate);
593 $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").
')';
595 if ($board->id ==
'bank_account') {
596 $textLateTitle .=
'<br><span class="opacitymedium">'.$langs->trans(
"IfYouDontReconcileDisableProperty", $langs->transnoentitiesnoconv(
"Conciliable")).
'</span>';
600 if ($board->nbtodolate > 0) {
601 $textLate .=
'<span title="'.dol_escape_htmltag($textLateTitle).
'" class="classfortooltip badge badge-warning">';
602 $textLate .=
'<i class="fa fa-exclamation-triangle hideonsmartphone"></i> '.$board->nbtodolate;
603 $textLate .=
'</span>';
607 if ($board->nbtodo > 0) {
608 $nbtodClass =
'badge badge-info';
610 $nbtodClass =
'opacitymedium';
614 $labeltoshow = $board->label.
' ('.$board->nbtodo.
')';
615 if ($board->total > 0) {
616 $labeltoshow .=
' - '.price($board->total, 0, $langs, 1, -1, -1,
$conf->currency);
618 $openedDashBoard .=
'<a href="'.$board->url.
'" class="info-box-text info-box-text-a">';
619 $openedDashBoard .= $infoName;
620 $openedDashBoard .=
'<div class="inline-block nowraponall">';
621 $openedDashBoard .=
'<span class="classfortooltip'.($nbtodClass ?
' '.$nbtodClass :
'').
'" title="'.$labeltoshow.
'">';
622 $openedDashBoard .= $board->nbtodo;
624 $openedDashBoard .=
' : '.price($board->total, 0, $langs, 1, -1, -1,
$conf->currency);
626 $openedDashBoard .=
'</span>';
629 if ($board->url_late) {
630 $openedDashBoard .=
'</div></a>';
631 $openedDashBoard .=
' <div class="inline-block"><a href="'.$board->url_late.
'" class="info-box-text info-box-text-a paddingleft">';
633 $openedDashBoard .=
' ';
635 $openedDashBoard .= $textLate;
637 $openedDashBoard .=
'</a>'.
"\n";
638 $openedDashBoard .=
'</div>';
639 $openedDashBoard .=
'</div>'.
"\n";
644 $openedDashBoard .=
' </div><!-- /.info-box-lines --></div><!-- /.info-box-content -->'.
"\n";
645 $openedDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
646 $openedDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
647 $openedDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
648 $openedDashBoard .=
"\n";
652 if ($showweather && !empty($isIntopOpenedDashBoard)) {
653 $appendClass = (
getDolGlobalInt(
'MAIN_DISABLE_METEO') == 2 ?
' hideonsmartphone' :
'');
657 if ($totallate > 0) {
658 $text = $langs->transnoentitiesnoconv(
"WarningYouHaveAtLeastOneTaskLate").
' ('.$langs->transnoentitiesnoconv(
660 $totallate.(getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'%' :
'')
663 $text = $langs->transnoentitiesnoconv(
"NoItemLate");
665 $text .=
'. '.$langs->transnoentitiesnoconv(
"LateDesc");
667 $weatherDashBoard =
'<div class="box-flex-item '.$appendClass.
'"><div class="box-flex-item-with-margin">'.
"\n";
668 $weatherDashBoard .=
' <div class="info-box '.$openedDashBoardSize.
' info-box-weather info-box-weather-level'.$weather->level.
'">'.
"\n";
669 $weatherDashBoard .=
' <span class="info-box-icon">';
670 $weatherDashBoard .=
img_weather(
'', $weather->level,
'', 0,
'valignmiddle width50');
671 $weatherDashBoard .=
' </span>'.
"\n";
672 $weatherDashBoard .=
' <div class="info-box-content">'.
"\n";
673 $weatherDashBoard .=
' <div class="info-box-title">'.$langs->trans(
'GlobalOpenedElemView').
'</div>'.
"\n";
675 if ($totallatePercentage > 0 &&
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE')) {
676 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
678 price($totallatePercentage).
'%'
680 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
685 $weatherDashBoard .=
' <span class="info-box-number">'.$langs->transnoentitiesnoconv(
689 if ($totallatePercentage > 0) {
690 $weatherDashBoard .=
' <span class="progress-description">'.$langs->trans(
692 price($totallatePercentage).
'%'
697 $weatherDashBoard .=
' </div><!-- /.info-box-content -->'.
"\n";
698 $weatherDashBoard .=
' </div><!-- /.info-box -->'.
"\n";
699 $weatherDashBoard .=
'</div><!-- /.box-flex-item-with-margin -->'.
"\n";
700 $weatherDashBoard .=
'</div><!-- /.box-flex-item -->'.
"\n";
701 $weatherDashBoard .=
"\n";
703 $openedDashBoard = $weatherDashBoard.$openedDashBoard;
706 if (!empty($isIntopOpenedDashBoard)) {
707 for ($i = 1; $i <= 10; $i++) {
708 $openedDashBoard .=
'<div class="box-flex-item filler"></div>';
712 $nbworkboardcount = 0;
713 foreach ($valid_dashboardlines as $infoKey => $board) {
714 if (in_array($infoKey, $isIntopOpenedDashBoard)) {
719 if (empty($board->nbtodo)) {
725 $textlate = $langs->trans(
"NActionsLate", $board->nbtodolate);
726 $textlate .=
' ('.$langs->trans(
"Late").
' = '.$langs->trans(
"DateReference").
' > '.$langs->trans(
"DateToday").
' '.(ceil($board->warning_delay) >= 0 ?
'+' :
'').ceil($board->warning_delay).
' '.$langs->trans(
"days").
')';
729 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats130 boxstatsborder">';
730 $boxwork .=
'<div class="boxstatscontent">';
731 $boxwork .=
'<span class="boxstatstext" title="'.dol_escape_htmltag($board->label).
'">'.$board->img.
' <span>'.$board->label.
'</span></span><br>';
732 $boxwork .=
'<a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.$board->nbtodo.
'</span></a>';
734 $boxwork .=
' / <a class="valignmiddle dashboardlineindicator" href="'.$board->url.
'"><span class="dashboardlineindicator'.(($board->nbtodo == 0) ?
' dashboardlineok' :
'').
'">'.
price($board->total).
'</span></a>';
736 $boxwork .=
'</div>';
737 if ($board->nbtodolate > 0) {
738 $boxwork .=
'<div class="dashboardlinelatecoin nowrap">';
739 $boxwork .=
'<a title="'.dol_escape_htmltag($textlate).
'" class="valignmiddle dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'" href="'.((!$board->url_late) ? $board->url : $board->url_late).
'">';
744 'class="inline-block hideonsmartphone valigntextbottom"'
746 $boxwork .=
'<span class="dashboardlineindicatorlate'.($board->nbtodolate > 0 ?
' dashboardlineko' :
' dashboardlineok').
'">';
747 $boxwork .= $board->nbtodolate;
748 $boxwork .=
'</span>';
750 $boxwork .=
'</div>';
752 $boxwork .=
'</div></div>';
756 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
757 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
758 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
759 $boxwork .=
'<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats150empty"></div></div>';
761 $boxwork .=
'</div>';
762 $boxwork .=
'</td></tr>';
764 $boxwork .=
'<tr class="nohover">';
765 $boxwork .=
'<td class="nohover valignmiddle opacitymedium">';
766 $boxwork .= $langs->trans(
"NoOpenedElementToProcess");
771 $boxwork .=
'</td></tr>';
773 $boxwork .=
'</table>';
774 $boxwork .=
'</div>';
776 if (!empty($isIntopOpenedDashBoard)) {
777 print
'<div class="fichecenter">';
778 print
'<div class="opened-dash-board-wrap"><div class="box-flex-container">'.$openedDashBoard.
'</div></div>';
784print
'<div class="clearboth"></div>';
786print
'<div class="fichecenter fichecenterbis">';
793$boxlist =
'<div class="twocolumns">';
795$boxlist .=
'<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
796if (!empty($nbworkboardcount)) {
797 $boxlist .= $boxwork;
800$boxlist .= $resultboxes[
'boxlista'];
804$boxlist .=
'<div class="secondcolumn fichehalfright boxhalfright" id="boxhalfright">';
806$boxlist .= $resultboxes[
'boxlistb'];
840 return img_weather($text, $weather->picto, $options, 0, $morecss);
853 $weather->picto =
'';
858 $used_conf = (
getDolGlobalString(
'MAIN_USE_METEO_WITH_PERCENTAGE') ?
'MAIN_METEO_PERCENTAGE_LEVEL' :
'MAIN_METEO_LEVEL');
863 $level1 = $offset + $factor;
865 $level2 = $offset + 2 * $factor;
867 $level3 = $offset + 3 * $factor;
870 if ($totallate <= $level0) {
871 $weather->picto =
'weather-clear.png';
873 } elseif ($totallate <= $level1) {
874 $weather->picto =
'weather-few-clouds.png';
876 } elseif ($totallate <= $level2) {
877 $weather->picto =
'weather-clouds.png';
879 } elseif ($totallate <= $level3) {
880 $weather->picto =
'weather-many-clouds.png';
883 $weather->picto =
'weather-storm.png';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $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.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with 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.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
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_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.
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.
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'
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Class to generate the form for creating a new ticket.