Merge pull request #11643 from atm-john/develop_new_dashboard
NEW dashboard for opened elements
This commit is contained in:
commit
c4361c7737
@ -2315,6 +2315,7 @@ class Adherent extends CommonObject
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay=$conf->adherent->subscription->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("MembersWithSubscriptionToReceive");
|
||||
$response->labelShort=$langs->trans("MembersWithSubscriptionToReceiveShort");
|
||||
$response->url=DOL_URL_ROOT.'/adherents/list.php?mainmenu=members&statut=1&filter=outofdate';
|
||||
$response->img=img_object('', "user");
|
||||
|
||||
|
||||
@ -1103,6 +1103,7 @@ class ActionComm extends CommonObject
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay = $conf->agenda->warning_delay/60/60/24;
|
||||
$response->label = $langs->trans("ActionsToDo");
|
||||
$response->labelShort = $langs->trans("ActionsToDoShort");
|
||||
$response->url = DOL_URL_ROOT.'/comm/action/list.php?actioncode=0&status=todo&mainmenu=agenda';
|
||||
if ($user->rights->agenda->allactions->read) $response->url.='&filtert=-1';
|
||||
$response->img = img_object('', "action", 'class="inline-block valigntextmiddle"');
|
||||
|
||||
@ -3268,21 +3268,24 @@ class Propal extends CommonObject
|
||||
|
||||
$delay_warning = 0;
|
||||
$statut = 0;
|
||||
$label = '';
|
||||
$label = $labelShort = '';
|
||||
if ($mode == 'opened') {
|
||||
$delay_warning=$conf->propal->cloture->warning_delay;
|
||||
$statut = self::STATUS_VALIDATED;
|
||||
$label = $langs->trans("PropalsToClose");
|
||||
$labelShort = $langs->trans("ToClose");
|
||||
}
|
||||
if ($mode == 'signed') {
|
||||
$delay_warning=$conf->propal->facturation->warning_delay;
|
||||
$statut = self::STATUS_SIGNED;
|
||||
$label = $langs->trans("PropalsToBill"); // We set here bill but may be billed or ordered
|
||||
$labelShort = $langs->trans("ToBill");
|
||||
}
|
||||
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay = $delay_warning/60/60/24;
|
||||
$response->label = $label;
|
||||
$response->labelShort = $labelShort;
|
||||
$response->url = DOL_URL_ROOT.'/comm/propal/list.php?viewstatut='.$statut.'&mainmenu=commercial&leftmenu=propals';
|
||||
$response->url_late = DOL_URL_ROOT.'/comm/propal/list.php?viewstatut='.$statut.'&mainmenu=commercial&leftmenu=propals&sortfield=p.datep&sortorder=asc';
|
||||
$response->img = img_object('', "propal");
|
||||
|
||||
@ -3412,6 +3412,7 @@ class Commande extends CommonOrder
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay=$conf->commande->client->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("OrdersToProcess");
|
||||
$response->labelShort = $langs->trans("ToProcess");
|
||||
$response->url=DOL_URL_ROOT.'/commande/list.php?viewstatut=-3&mainmenu=commercial&leftmenu=orders';
|
||||
$response->img=img_object('', "order");
|
||||
|
||||
|
||||
@ -3924,6 +3924,7 @@ class Facture extends CommonInvoice
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay=$conf->facture->client->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("CustomerBillsUnpaid");
|
||||
$response->labelShort=$langs->trans("Unpaid");
|
||||
$response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1&mainmenu=billing&leftmenu=customers_bills';
|
||||
$response->img=img_object('', "bill");
|
||||
|
||||
|
||||
@ -2186,23 +2186,27 @@ class Contrat extends CommonObject
|
||||
if ($mode == 'inactive') {
|
||||
$warning_delay = $conf->contrat->services->inactifs->warning_delay;
|
||||
$label = $langs->trans("BoardNotActivatedServices");
|
||||
$labelShort = $langs->trans("BoardNotActivatedServicesShort");
|
||||
$url = DOL_URL_ROOT.'/contrat/services_list.php?mainmenu=commercial&leftmenu=contracts&mode=0&sortfield=cd.date_fin_validite&sortorder=asc';
|
||||
}
|
||||
elseif ($mode == 'expired') {
|
||||
$warning_delay = $conf->contrat->services->expires->warning_delay;
|
||||
$url = DOL_URL_ROOT.'/contrat/services_list.php?mainmenu=commercial&leftmenu=contracts&mode=4&filter=expired&sortfield=cd.date_fin_validite&sortorder=asc';
|
||||
$label = $langs->trans("BoardExpiredServices");
|
||||
$labelShort = $langs->trans("BoardExpiredServicesShort");
|
||||
} else {
|
||||
$warning_delay = $conf->contrat->services->expires->warning_delay;
|
||||
$url = DOL_URL_ROOT.'/contrat/services_list.php?mainmenu=commercial&leftmenu=contracts&mode=4&sortfield=cd.date_fin_validite&sortorder=asc';
|
||||
//$url.= '&op2day='.$arraydatetouse['mday'].'&op2month='.$arraydatetouse['mon'].'&op2year='.$arraydatetouse['year'];
|
||||
//if ($warning_delay >= 0) $url.='&filter=expired';
|
||||
$label = $langs->trans("BoardRunningServices");
|
||||
$labelShort = $langs->trans("BoardRunningServicesShort");
|
||||
}
|
||||
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay = $warning_delay/60/60/24;
|
||||
$response->label = $label;
|
||||
$response->labelShort = $labelShort;
|
||||
$response->url = $url;
|
||||
$response->img = img_object('', "contract");
|
||||
|
||||
|
||||
@ -37,6 +37,18 @@ class WorkboardResponse
|
||||
*/
|
||||
public $label;
|
||||
|
||||
/**
|
||||
* Short Label of the warning
|
||||
* @var string
|
||||
*/
|
||||
public $labelShort;
|
||||
|
||||
/**
|
||||
* infoKey of the warning
|
||||
* @var string
|
||||
*/
|
||||
public $infoKey = 'todo';
|
||||
|
||||
/**
|
||||
* URL to list to do items
|
||||
* @var string
|
||||
|
||||
@ -2333,12 +2333,14 @@ class ExpenseReport extends CommonObject
|
||||
{
|
||||
$response->warning_delay=$conf->expensereport->approve->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("ExpenseReportsToApprove");
|
||||
$response->labelShort=$langs->trans("ToApprove");
|
||||
$response->url=DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm&statut=2';
|
||||
}
|
||||
else
|
||||
{
|
||||
$response->warning_delay=$conf->expensereport->payment->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("ExpenseReportsToPay");
|
||||
$response->labelShort=$langs->trans("ToPay");
|
||||
$response->url=DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm&statut=5';
|
||||
}
|
||||
$response->img=img_object('', "trip");
|
||||
|
||||
@ -2835,6 +2835,7 @@ class CommandeFournisseur extends CommonOrder
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay=$conf->commande->fournisseur->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("SuppliersOrdersToProcess");
|
||||
$response->labelShort=$langs->trans("ToProcess");
|
||||
$response->url=DOL_URL_ROOT.'/fourn/commande/list.php?statut=1,2,3&mainmenu=commercial&leftmenu=orders_suppliers';
|
||||
$response->img=img_object('', "order");
|
||||
|
||||
|
||||
@ -2203,6 +2203,7 @@ class FactureFournisseur extends CommonInvoice
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay=$conf->facture->fournisseur->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("SupplierBillsToPay");
|
||||
$response->labelShort=$langs->trans("ToPay");
|
||||
|
||||
$response->url=DOL_URL_ROOT.'/fourn/facture/list.php?search_status=1&mainmenu=billing&leftmenu=suppliers_bills';
|
||||
$response->img=img_object($langs->trans("Bills"), "bill");
|
||||
|
||||
@ -2228,6 +2228,7 @@ class Holiday extends CommonObject
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay=$conf->holiday->approve->warning_delay/60/60/24;
|
||||
$response->label=$langs->trans("HolidaysToApprove");
|
||||
$response->labelShort=$langs->trans("ToApprove");
|
||||
$response->url=DOL_URL_ROOT.'/holiday/list.php?search_statut=2&mainmenu=hrm&leftmenu=holiday';
|
||||
$response->img=img_object('', "holiday");
|
||||
|
||||
|
||||
407
htdocs/index.php
407
htdocs/index.php
@ -100,7 +100,7 @@ if (! empty($conf->global->MAIN_MOTD))
|
||||
}
|
||||
|
||||
|
||||
print '<div class="fichecenter"><div class="fichethirdleft">';
|
||||
|
||||
|
||||
|
||||
/*
|
||||
@ -112,7 +112,7 @@ $boxstat='';
|
||||
// Load translation files required by page
|
||||
$langs->loadLangs(array('commercial', 'bills', 'orders', 'contracts'));
|
||||
|
||||
if (empty($user->societe_id))
|
||||
if (empty($user->societe_id) && empty($conf->global->MAIN_DISABLE_GLOBAL_BOXSTATS))
|
||||
{
|
||||
$boxstat.='<div class="box">';
|
||||
$boxstat.='<table summary="'.dol_escape_htmltag($langs->trans("DolibarrStateBoard")).'" class="noborder boxtable boxtablenobottom nohover" width="100%">';
|
||||
@ -313,6 +313,7 @@ if (empty($user->societe_id))
|
||||
|
||||
|
||||
// Loop and displays each line of table
|
||||
$boardloaded=array();
|
||||
foreach ($keys as $key=>$val)
|
||||
{
|
||||
if ($conditions[$key])
|
||||
@ -359,9 +360,8 @@ if (empty($user->societe_id))
|
||||
$boxstat.='</table>';
|
||||
$boxstat.='</div>';
|
||||
}
|
||||
//print $boxstat;
|
||||
|
||||
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
|
||||
|
||||
|
||||
|
||||
/*
|
||||
@ -380,8 +380,7 @@ if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->read)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
||||
$board=new ActionComm($db);
|
||||
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of project opened
|
||||
@ -389,7 +388,7 @@ if (! empty($conf->projet->enabled) && $user->rights->projet->lire)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||
$board=new Project($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of tasks to do (late)
|
||||
@ -397,7 +396,7 @@ if (! empty($conf->projet->enabled) && empty($conf->global->PROJECT_HIDE_TASKS)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
|
||||
$board=new Task($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of commercial proposals opened (expired)
|
||||
@ -405,9 +404,9 @@ if (! empty($conf->propal->enabled) && $user->rights->propale->lire)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||
$board=new Propal($db);
|
||||
$dashboardlines[] = $board->load_board($user, "opened");
|
||||
$dashboardlines[$board->element.'_opened'] = $board->load_board($user, "opened");
|
||||
// Number of commercial proposals CLOSED signed (billed)
|
||||
$dashboardlines[] = $board->load_board($user, "signed");
|
||||
$dashboardlines[$board->element.'_signed'] = $board->load_board($user, "signed");
|
||||
}
|
||||
|
||||
// Number of commercial proposals opened (expired)
|
||||
@ -415,9 +414,9 @@ if (! empty($conf->supplier_proposal->enabled) && $user->rights->supplier_propos
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php';
|
||||
$board=new SupplierProposal($db);
|
||||
$dashboardlines[] = $board->load_board($user, "opened");
|
||||
$dashboardlines[$board->element.'_opened'] = $board->load_board($user, "opened");
|
||||
// Number of commercial proposals CLOSED signed (billed)
|
||||
$dashboardlines[] = $board->load_board($user, "signed");
|
||||
$dashboardlines[$board->element.'_signed'] = $board->load_board($user, "signed");
|
||||
}
|
||||
|
||||
// Number of customer orders a deal
|
||||
@ -425,7 +424,7 @@ if (! empty($conf->commande->enabled) && $user->rights->commande->lire)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
||||
$board=new Commande($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of suppliers orders a deal
|
||||
@ -433,7 +432,7 @@ if (! empty($conf->supplier_order->enabled) && $user->rights->fournisseur->comma
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
||||
$board=new CommandeFournisseur($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of services enabled (delayed)
|
||||
@ -441,16 +440,16 @@ if (! empty($conf->contrat->enabled) && $user->rights->contrat->lire)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php';
|
||||
$board=new Contrat($db);
|
||||
$dashboardlines[] = $board->load_board($user, "inactive");
|
||||
$dashboardlines[$board->element.'_inactive'] = $board->load_board($user, "inactive");
|
||||
// Number of active services (expired)
|
||||
$dashboardlines[] = $board->load_board($user, "active");
|
||||
$dashboardlines[$board->element.'_active'] = $board->load_board($user, "active");
|
||||
}
|
||||
// Number of invoices customers (has paid)
|
||||
if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
$board=new Facture($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of supplier invoices (has paid)
|
||||
@ -458,7 +457,7 @@ if (! empty($conf->supplier_invoice->enabled) && ! empty($user->rights->fourniss
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||
$board=new FactureFournisseur($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of transactions to conciliate
|
||||
@ -469,7 +468,7 @@ if (! empty($conf->banque->enabled) && $user->rights->banque->lire && ! $user->s
|
||||
$nb = $board::countAccountToReconcile(); // Get nb of account to reconciliate
|
||||
if ($nb > 0)
|
||||
{
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines[$board->element] = $board->load_board($user);
|
||||
}
|
||||
}
|
||||
|
||||
@ -478,7 +477,7 @@ if (! empty($conf->banque->enabled) && $user->rights->banque->lire && ! $user->s
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php';
|
||||
$board=new RemiseCheque($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines['RemiseCheque'] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of foundation members
|
||||
@ -486,7 +485,7 @@ if (! empty($conf->adherent->enabled) && $user->rights->adherent->lire && ! $use
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
|
||||
$board=new Adherent($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines['Adherent'] = $board->load_board($user);
|
||||
}
|
||||
|
||||
// Number of expense reports to approve
|
||||
@ -494,7 +493,7 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->appr
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||
$board=new ExpenseReport($db);
|
||||
$dashboardlines[] = $board->load_board($user, 'toapprove');
|
||||
$dashboardlines['ExpenseReport'] = $board->load_board($user, 'toapprove');
|
||||
}
|
||||
|
||||
// Number of expense reports to pay
|
||||
@ -502,7 +501,7 @@ if (! empty($conf->expensereport->enabled) && $user->rights->expensereport->to_p
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||
$board=new ExpenseReport($db);
|
||||
$dashboardlines[] = $board->load_board($user, 'topay');
|
||||
$dashboardlines['ExpenseReport'] = $board->load_board($user, 'topay');
|
||||
}
|
||||
|
||||
// Number of holidays to approve
|
||||
@ -510,7 +509,7 @@ if (! empty($conf->holiday->enabled) && $user->rights->holiday->approve)
|
||||
{
|
||||
include_once DOL_DOCUMENT_ROOT.'/holiday/class/holiday.class.php';
|
||||
$board=new Holiday($db);
|
||||
$dashboardlines[] = $board->load_board($user);
|
||||
$dashboardlines['Holiday'] = $board->load_board($user);
|
||||
}
|
||||
|
||||
$object=new stdClass();
|
||||
@ -521,28 +520,134 @@ if ($reshook == 0) {
|
||||
$dashboardlines = array_merge($dashboardlines, $hookmanager->resArray);
|
||||
}
|
||||
|
||||
/* grouping dashboard stats */
|
||||
$dashboardgroup = array (
|
||||
'action' =>
|
||||
array (
|
||||
'groupName' => 'Agenda',
|
||||
'stats' => array ('action'),
|
||||
),
|
||||
'project' =>
|
||||
array (
|
||||
'groupName' => 'Projects',
|
||||
'stats' => array ('project','project_task'),
|
||||
),
|
||||
'propal' =>
|
||||
array (
|
||||
'groupName' => 'Proposals',
|
||||
'stats' =>
|
||||
array ('propal_opened','propal_signed'),
|
||||
),
|
||||
'supplier_proposal' =>
|
||||
array (
|
||||
'groupName' => 'SupplierProposals',
|
||||
'stats' =>
|
||||
array ('supplier_proposal_opened','supplier_proposal_signed'),
|
||||
),
|
||||
'commande' =>
|
||||
array (
|
||||
'groupName' => 'Orders',
|
||||
'stats' =>
|
||||
array ('commande'),
|
||||
),
|
||||
'order_supplier' =>
|
||||
array (
|
||||
'groupName' => 'SuppliersOrders',
|
||||
'stats' =>
|
||||
array ('order_supplier'),
|
||||
),
|
||||
'contrat' =>
|
||||
array (
|
||||
'groupName' => 'Contracts',
|
||||
'stats' =>
|
||||
array ('contrat_inactive','contrat_active'),
|
||||
),
|
||||
'facture' =>
|
||||
array (
|
||||
'groupName' => 'Invoices',
|
||||
'stats' =>
|
||||
array ('facture'),
|
||||
),
|
||||
'invoice_supplier' =>
|
||||
array (
|
||||
'groupName' => 'BillsSuppliers',
|
||||
'stats' =>
|
||||
array ('invoice_supplier'),
|
||||
),
|
||||
'bank_account' =>
|
||||
array (
|
||||
'groupName' => 'BankAccount',
|
||||
'stats' =>
|
||||
array ('bank_account','RemiseCheque'),
|
||||
),
|
||||
/*'RemiseCheque' =>
|
||||
array (
|
||||
'groupName' => 'BankChecks',
|
||||
'stats' =>
|
||||
array ('RemiseCheque'),
|
||||
),*/
|
||||
'Adherent' =>
|
||||
array (
|
||||
'groupName' => 'Members',
|
||||
'stats' =>
|
||||
array ('Adherent'),
|
||||
),
|
||||
'ExpenseReport' =>
|
||||
array (
|
||||
'groupName' => 'ExpenseReport',
|
||||
'stats' =>
|
||||
array ('ExpenseReport'),
|
||||
),
|
||||
'Holiday' =>
|
||||
array (
|
||||
'groupName' => 'Holidays',
|
||||
'stats' =>
|
||||
array ('Holiday'),
|
||||
),
|
||||
);
|
||||
|
||||
$object=new stdClass();
|
||||
$parameters=array(
|
||||
'dashboardgroup' => $dashboardgroup
|
||||
);
|
||||
$reshook=$hookmanager->executeHooks('addOpenElementsDashboardGroup', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook == 0) {
|
||||
$dashboardgroup = array_merge($dashboardgroup, $hookmanager->resArray);
|
||||
}
|
||||
|
||||
|
||||
// Calculate total nb of late
|
||||
$totallate=$totaltodo=0;
|
||||
|
||||
//Remove any invalid response
|
||||
//load_board can return an integer if failed or WorkboardResponse if OK
|
||||
$valid_dashboardlines=array();
|
||||
foreach($dashboardlines as $tmp)
|
||||
foreach($dashboardlines as $infoKey => $tmp)
|
||||
{
|
||||
if ($tmp instanceof WorkboardResponse) $valid_dashboardlines[] = $tmp;
|
||||
if ($tmp instanceof WorkboardResponse) $valid_dashboardlines[$infoKey] = $tmp;
|
||||
}
|
||||
|
||||
// We calculate $totallate. Must be defined before start of next loop because it is show in first fetch on next loop
|
||||
foreach($valid_dashboardlines as $board)
|
||||
{
|
||||
if ($board->nbtodolate > 0) {
|
||||
if(!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)) $totaltodo += $board->nbtodo;
|
||||
$totaltodo += $board->nbtodo;
|
||||
$totallate += $board->nbtodolate;
|
||||
}
|
||||
}
|
||||
//var_dump($totallate, $totaltodo);
|
||||
if(!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) && !empty($totaltodo)) $totallate = round($totallate / $totaltodo * 100, 2);
|
||||
//var_dump($totallate);
|
||||
|
||||
$openedDashBoardSize = 'info-box-sm'; // use sm by default
|
||||
foreach ($dashboardgroup as $dashbordelement){
|
||||
if(is_array($dashbordelement['stats']) && count($dashbordelement['stats'])>2){
|
||||
$openedDashBoardSize = ''; // use default info box size : big
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$totalLateNumber = $totallate;
|
||||
$totallatePercentage = !empty($totaltodo) ? round($totallate / $totaltodo * 100, 2) : 0;
|
||||
if(!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)) $totallate = $totallatePercentage;
|
||||
|
||||
$boxwork='';
|
||||
$boxwork.='<div class="box">';
|
||||
$boxwork.='<table summary="'.dol_escape_htmltag($langs->trans("WorkingBoard")).'" class="noborder boxtable boxtablenobottom boxworkingboard" width="100%">'."\n";
|
||||
@ -577,23 +682,144 @@ $boxwork.='</tr>'."\n";
|
||||
|
||||
// Show dashboard
|
||||
$nbworkboardempty=0;
|
||||
if (! empty($valid_dashboardlines))
|
||||
$isIntopOpenedDashBoard = array();
|
||||
if (!empty($valid_dashboardlines))
|
||||
{
|
||||
$openedDashBoard = '';
|
||||
|
||||
$boxwork.='<tr class="nobottom nohover"><td class="tdboxstats nohover flexcontainer centpercent"><div style="display: flex: flex-wrap: wrap">';
|
||||
|
||||
foreach($valid_dashboardlines as $board)
|
||||
foreach($dashboardgroup as $groupKey => $groupElement) {
|
||||
$boards = array();
|
||||
|
||||
if(!empty($conf->global->MAIN_DISPLAY_NEW_OPENED_DASH_BOARD) || !empty($conf->global->MAIN_FEATURES_LEVEL))
|
||||
{
|
||||
foreach ($groupElement['stats'] as $infoKey)
|
||||
{
|
||||
if(!empty($valid_dashboardlines[$infoKey]))
|
||||
{
|
||||
$boards[] = $valid_dashboardlines[$infoKey];
|
||||
$isIntopOpenedDashBoard[]=$infoKey;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($boards))
|
||||
{
|
||||
$groupName = $langs->trans($groupElement['groupName']);
|
||||
$groupKeyLowerCase = strtolower($groupKey);
|
||||
|
||||
$openedDashBoard.= '<div class="box-flex-item">'."\n";
|
||||
$openedDashBoard.= ' <div class="info-box '.$openedDashBoardSize.'">'."\n";
|
||||
$openedDashBoard.= ' <span class="info-box-icon bg-infoxbox-'.$groupKeyLowerCase.'"><i class="fa fa-dol-'.$groupKeyLowerCase.'"></i></span>'."\n";
|
||||
$openedDashBoard.= ' <div class="info-box-content">'."\n";
|
||||
|
||||
$openedDashBoard .= ' <span class="info-box-title" title="'.strip_tags($groupName).'">'.$groupName.'</span>' . "\n";
|
||||
|
||||
foreach($boards as $board) {
|
||||
if(!empty($board->labelShort)){
|
||||
$infoName = '<span title="'.$board->label.'">'.$board->labelShort.'</span>';
|
||||
}
|
||||
else{
|
||||
$infoName = $board->label ;
|
||||
}
|
||||
|
||||
$textLateTitle = $langs->trans("NActionsLate", $board->nbtodolate);
|
||||
$textLateTitle.= ' ('.$langs->trans("Late").' = '.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($board->warning_delay) >= 0 ? '+' : '').ceil($board->warning_delay).' '.$langs->trans("days").')';
|
||||
|
||||
$textLate = '';
|
||||
if($board->nbtodolate>0)
|
||||
{
|
||||
$textLate .= ' <span title="'.dol_htmlentities($textLateTitle).'" class="classfortooltip badge badge-danger">';
|
||||
$textLate .= '<i class="fa fa-exclamation-triangle"></i> '.$board->nbtodolate;
|
||||
$textLate .= '</span>';
|
||||
}
|
||||
|
||||
$nbtodClass = '';
|
||||
if($board->nbtodo>0){
|
||||
$nbtodClass = 'badge badge-info';
|
||||
}
|
||||
|
||||
$openedDashBoard .= ' <a href="'.$board->url.'" class="info-box-text">'.$infoName.' : <span class="'.$nbtodClass.' classfortooltip" title="'.$board->label.'" >'.$board->nbtodo.'</span>'.$textLate.'</a>' . "\n";
|
||||
|
||||
if ($board->total > 0 && ! empty($conf->global->MAIN_WORKBOARD_SHOW_TOTAL_WO_TAX)){
|
||||
$openedDashBoard .= '<a href="'.$board->url.'" class="info-box-text">'.$langs->trans('Total').' : '.price($board->total) .'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
$openedDashBoard.= ' </div><!-- /.info-box-content -->'."\n";
|
||||
$openedDashBoard.= ' </div><!-- /.info-box -->'."\n";
|
||||
$openedDashBoard.= '</div><!-- /.box-flex-item -->'."\n";
|
||||
$openedDashBoard.="\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ($showweather && !empty($isIntopOpenedDashBoard))
|
||||
{
|
||||
$appendClass = $conf->global->MAIN_DISABLE_METEO == 2 ?' hideonsmartphone' : '';
|
||||
$weather = getWeatherStatus($totallate);
|
||||
|
||||
$text='';
|
||||
if ($totallate > 0) $text=$langs->transnoentitiesnoconv("WarningYouHaveAtLeastOneTaskLate").' ('.$langs->transnoentitiesnoconv("NActionsLate", $totallate.(!empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? '%' : '')).')';
|
||||
else $text=$langs->transnoentitiesnoconv("NoItemLate");
|
||||
$text.='. '.$langs->transnoentitiesnoconv("LateDesc");
|
||||
|
||||
|
||||
|
||||
$weatherDashBoard= '<div class="box-flex-item '.$appendClass.'">'."\n";
|
||||
$weatherDashBoard.= ' <div class="info-box '.$openedDashBoardSize.' info-box-weather info-box-weather-level'.$weather->level.'">'."\n";
|
||||
$weatherDashBoard.= ' <span class="info-box-icon"><i class="fa fa-weather-level'.$weather->level.'"></i></span>'."\n";
|
||||
$weatherDashBoard.= ' <div class="info-box-content">'."\n";
|
||||
$weatherDashBoard.= ' <span class="info-box-title">'.$langs->trans('GlobalOpenedElemView').'</span>' . "\n";
|
||||
|
||||
if($totallatePercentage>0 && !empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE)){
|
||||
$weatherDashBoard.= ' <span class="info-box-number">'.$langs->transnoentitiesnoconv("NActionsLate", price($totallatePercentage).'%').'</span>' . "\n";
|
||||
$weatherDashBoard.= ' <span class="progress-description">'.$langs->trans('NActionsLate', $totalLateNumber).'</span>' . "\n";
|
||||
}
|
||||
else{
|
||||
$weatherDashBoard.= ' <span class="info-box-number">'.$langs->transnoentitiesnoconv("NActionsLate", $totalLateNumber).'</span>' . "\n";
|
||||
if($totallatePercentage>0){
|
||||
$weatherDashBoard.= ' <span class="progress-description">'.$langs->trans('NActionsLate', price($totallatePercentage).'%').'</span>' . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
$weatherDashBoard.= ' </div><!-- /.info-box-content -->'."\n";
|
||||
$weatherDashBoard.= ' </div><!-- /.info-box -->'."\n";
|
||||
$weatherDashBoard.= '</div><!-- /.box-flex-item -->'."\n";
|
||||
$weatherDashBoard.="\n";
|
||||
|
||||
$openedDashBoard=$weatherDashBoard.$openedDashBoard;
|
||||
}
|
||||
|
||||
if(!empty($isIntopOpenedDashBoard))
|
||||
{
|
||||
for ($i = 1; $i <= 10; $i++) {
|
||||
$openedDashBoard .= '<div class="box-flex-item filler"></div>';
|
||||
}
|
||||
}
|
||||
|
||||
$nbworkboardcount=0;
|
||||
foreach($valid_dashboardlines as $infoKey => $board)
|
||||
{
|
||||
if (empty($board->nbtodo)) $nbworkboardempty++;
|
||||
if(in_array($infoKey, $isIntopOpenedDashBoard)) {
|
||||
// skip if info is present on top
|
||||
continue;
|
||||
}
|
||||
|
||||
$textlate = $langs->trans("NActionsLate", $board->nbtodolate);
|
||||
$textlate.= ' ('.$langs->trans("Late").' = '.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($board->warning_delay) >= 0 ? '+' : '').ceil($board->warning_delay).' '.$langs->trans("days").')';
|
||||
if (empty($board->nbtodo)) $nbworkboardempty++;
|
||||
$nbworkboardcount++;
|
||||
|
||||
$boxwork .='<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats130 boxstatsborder">';
|
||||
|
||||
$textlate = $langs->trans("NActionsLate", $board->nbtodolate);
|
||||
$textlate.= ' ('.$langs->trans("Late").' = '.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($board->warning_delay) >= 0 ? '+' : '').ceil($board->warning_delay).' '.$langs->trans("days").')';
|
||||
|
||||
|
||||
$boxwork .='<div class="boxstatsindicator thumbstat150 nobold nounderline"><div class="boxstats130 boxstatsborder">';
|
||||
$boxwork .= '<div class="boxstatscontent">';
|
||||
$sep=($conf->dol_use_jmobile?'<br>':' ');
|
||||
$boxwork .= '<span class="boxstatstext" title="'.dol_escape_htmltag($board->label).'">'.$board->img.' '.$board->label.'</span><br>';
|
||||
$boxwork .= '<a class="valignmiddle dashboardlineindicator" href="'.$board->url.'"><span class="dashboardlineindicator'.(($board->nbtodo == 0)?' dashboardlineok':'').'">'.$board->nbtodo.'</span></a>';
|
||||
if ($board->total > 0 && ! empty($conf->global->MAIN_WORKBOARD_SHOW_TOTAL_WO_TAX))
|
||||
if ($board->total > 0 && !empty($conf->global->MAIN_WORKBOARD_SHOW_TOTAL_WO_TAX))
|
||||
{
|
||||
$boxwork .= ' / <a class="valignmiddle dashboardlineindicator" href="'.$board->url.'"><span class="dashboardlineindicator'.(($board->nbtodo == 0)?' dashboardlineok':'').'">'.price($board->total) .'</span></a>';
|
||||
}
|
||||
@ -636,7 +862,14 @@ $boxwork.='</td></tr>';
|
||||
$boxwork.='</table>'; // End table array of working board
|
||||
$boxwork.='</div>';
|
||||
|
||||
print '</div></div></div><div class="clearboth"></div>';
|
||||
|
||||
if(!empty($isIntopOpenedDashBoard)) {
|
||||
print '<div class="fichecenter">';
|
||||
print '<div class="opened-dash-board-wrap"><div class="box-flex-container">' . $openedDashBoard . '</div></div>';
|
||||
print '</div>';
|
||||
}
|
||||
|
||||
print '<div class="clearboth"></div>';
|
||||
|
||||
print '<div class="fichecenter fichecenterbis">';
|
||||
|
||||
@ -648,8 +881,11 @@ print '<div class="fichecenter fichecenterbis">';
|
||||
$boxlist.='<div class="twocolumns">';
|
||||
|
||||
$boxlist.='<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
|
||||
if(!empty($nbworkboardcount))
|
||||
{
|
||||
$boxlist.=$boxwork;
|
||||
}
|
||||
|
||||
$boxlist.=$boxwork;
|
||||
$boxlist.=$resultboxes['boxlista'];
|
||||
|
||||
$boxlist.= '</div>';
|
||||
@ -726,33 +962,68 @@ function showWeather($totallate, $text, $options, $morecss = '')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$out='';
|
||||
$offset=0;
|
||||
$factor=10; // By default
|
||||
|
||||
$used_conf = !empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? 'MAIN_METEO_PERCENTAGE_LEVEL' : 'MAIN_METEO_LEVEL';
|
||||
|
||||
$level0=$offset;
|
||||
if (! empty($conf->global->{$used_conf.'0'})) {
|
||||
$level0=$conf->global->{$used_conf.'0'};
|
||||
}
|
||||
$level1=$offset+1*$factor;
|
||||
if (! empty($conf->global->{$used_conf.'1'})) {
|
||||
$level1=$conf->global->{$used_conf.'1'};
|
||||
}
|
||||
$level2=$offset+2*$factor;
|
||||
if (! empty($conf->global->{$used_conf.'2'})) {
|
||||
$level2=$conf->global->{$used_conf.'2'};
|
||||
}
|
||||
$level3=$offset+3*$factor;
|
||||
if (! empty($conf->global->{$used_conf.'3'})) {
|
||||
$level3=$conf->global->{$used_conf.'3'};
|
||||
}
|
||||
|
||||
if ($totallate <= $level0) $out.=img_weather($text, 'weather-clear.png', $options, 0, $morecss);
|
||||
elseif ($totallate > $level0 && $totallate <= $level1) $out.=img_weather($text, 'weather-few-clouds.png', $options, 0, $morecss);
|
||||
elseif ($totallate > $level1 && $totallate <= $level2) $out.=img_weather($text, 'weather-clouds.png', $options, 0, $morecss);
|
||||
elseif ($totallate > $level2 && $totallate <= $level3) $out.=img_weather($text, 'weather-many-clouds.png', $options, 0, $morecss);
|
||||
elseif ($totallate > $level3) $out.=img_weather($text, 'weather-storm.png', $options, 0, $morecss);
|
||||
return $out;
|
||||
$weather = getWeatherStatus($totallate);
|
||||
return img_weather($text, $weather->picto, $options, 0, $morecss);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* get weather level
|
||||
* $conf->global->MAIN_METEO_LEVELx
|
||||
*
|
||||
* @param int $totallate Nb of element late
|
||||
* @return string Return img tag of weather
|
||||
*/
|
||||
function getWeatherStatus($totallate)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$weather = new stdClass();
|
||||
$weather->picto = '';
|
||||
|
||||
$offset=0;
|
||||
$factor=10; // By default
|
||||
|
||||
$used_conf = !empty($conf->global->MAIN_USE_METEO_WITH_PERCENTAGE) ? 'MAIN_METEO_PERCENTAGE_LEVEL' : 'MAIN_METEO_LEVEL';
|
||||
|
||||
$level0=$offset;
|
||||
$weather->level=0;
|
||||
if (! empty($conf->global->{$used_conf.'0'})) {
|
||||
$level0=$conf->global->{$used_conf.'0'};
|
||||
}
|
||||
$level1=$offset+1*$factor;
|
||||
if (! empty($conf->global->{$used_conf.'1'})) {
|
||||
$level1=$conf->global->{$used_conf.'1'};
|
||||
}
|
||||
$level2=$offset+2*$factor;
|
||||
if (! empty($conf->global->{$used_conf.'2'})) {
|
||||
$level2=$conf->global->{$used_conf.'2'};
|
||||
}
|
||||
$level3=$offset+3*$factor;
|
||||
if (! empty($conf->global->{$used_conf.'3'})) {
|
||||
$level3=$conf->global->{$used_conf.'3'};
|
||||
}
|
||||
|
||||
if ($totallate <= $level0){
|
||||
$weather->picto = 'weather-clear.png';
|
||||
$weather->level=0;
|
||||
}
|
||||
elseif ($totallate <= $level1){
|
||||
$weather->picto = 'weather-few-clouds.png';
|
||||
$weather->level=1;
|
||||
}
|
||||
elseif ($totallate <= $level2){
|
||||
$weather->picto = 'weather-clouds.png';
|
||||
$weather->level=2;
|
||||
}
|
||||
elseif ($totallate <= $level3){
|
||||
$weather->picto = 'weather-many-clouds.png';
|
||||
$weather->level=3;
|
||||
}
|
||||
else{
|
||||
$weather->picto = 'weather-storm.png';
|
||||
$weather->level=4;
|
||||
}
|
||||
|
||||
return $weather;
|
||||
}
|
||||
|
||||
@ -51,6 +51,7 @@ ListOfClosedServices=List of closed services
|
||||
ListOfRunningServices=List of running services
|
||||
NotActivatedServices=Inactive services (among validated contracts)
|
||||
BoardNotActivatedServices=Services to activate among validated contracts
|
||||
BoardNotActivatedServicesShort=Services to activate
|
||||
LastContracts=Latest %s contracts
|
||||
LastModifiedServices=Latest %s modified services
|
||||
ContractStartDate=Start date
|
||||
@ -65,7 +66,9 @@ DateEndReal=Real end date
|
||||
DateEndRealShort=Real end date
|
||||
CloseService=Close service
|
||||
BoardRunningServices=Services running
|
||||
BoardRunningServicesShort=Services running
|
||||
BoardExpiredServices=Services expired
|
||||
BoardExpiredServicesShort=Services expired
|
||||
ServiceStatus=Status of service
|
||||
DraftContracts=Drafts contracts
|
||||
CloseRefusedBecauseOneServiceActive=Contract can't be closed as there is at least one open service on it
|
||||
|
||||
@ -983,5 +983,9 @@ PaymentInformation=Payment information
|
||||
ValidFrom=Valid from
|
||||
ValidUntil=Valid until
|
||||
NoRecordedUsers=No users
|
||||
ToClose=To close
|
||||
ToProcess=To process
|
||||
ToApprove=To approve
|
||||
GlobalOpenedElemView=Global view
|
||||
NoArticlesFoundForTheKeyword=No article found for the keyword '<strong>%s</strong>'
|
||||
NoArticlesFoundForTheCategory=No article found for the category
|
||||
NoArticlesFoundForTheCategory=No article found for the category
|
||||
|
||||
@ -29,6 +29,7 @@ MenuMembersUpToDate=Up to date members
|
||||
MenuMembersNotUpToDate=Out of date members
|
||||
MenuMembersResiliated=Terminated members
|
||||
MembersWithSubscriptionToReceive=Members with subscription to receive
|
||||
MembersWithSubscriptionToReceiveShort=Subscription to receive
|
||||
DateSubscription=Subscription date
|
||||
DateEndSubscription=Subscription end date
|
||||
EndSubscription=End subscription
|
||||
|
||||
@ -1796,6 +1796,7 @@ class Project extends CommonObject
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay = $conf->projet->warning_delay/60/60/24;
|
||||
$response->label = $langs->trans("OpenedProjects");
|
||||
$response->labelShort = $langs->trans("Opened");
|
||||
if ($user->rights->projet->all->lire) $response->url = DOL_URL_ROOT.'/projet/list.php?search_status=1&mainmenu=project';
|
||||
else $response->url = DOL_URL_ROOT.'/projet/list.php?search_project_user=-1&search_status=1&mainmenu=project';
|
||||
$response->img = img_object('', "projectpub");
|
||||
|
||||
@ -2274,20 +2274,24 @@ class SupplierProposal extends CommonObject
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$label = $labelShort = '';
|
||||
if ($mode == 'opened') {
|
||||
$delay_warning=$conf->supplier_proposal->cloture->warning_delay;
|
||||
$statut = self::STATUS_VALIDATED;
|
||||
$label = $langs->trans("SupplierProposalsToClose");
|
||||
$labelShort = $langs->trans("ToClose");
|
||||
}
|
||||
if ($mode == 'signed') {
|
||||
$delay_warning=$conf->supplier_proposal->facturation->warning_delay;
|
||||
$statut = self::STATUS_SIGNED;
|
||||
$label = $langs->trans("SupplierProposalsToProcess"); // May be billed or ordered
|
||||
$labelShort = $langs->trans("ToProcess");
|
||||
}
|
||||
|
||||
$response = new WorkboardResponse();
|
||||
$response->warning_delay = $delay_warning/60/60/24;
|
||||
$response->label = $label;
|
||||
$response->labelShort = $labelShort;
|
||||
$response->url = DOL_URL_ROOT.'/supplier_proposal/list.php?viewstatut='.$statut;
|
||||
$response->img = img_object('', "propal");
|
||||
|
||||
|
||||
@ -3206,7 +3206,13 @@ span.boxstatsindicator {
|
||||
font-size: 130%;
|
||||
font-weight: normal;
|
||||
line-height: 29px;
|
||||
flex-grow: 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
span.dashboardlineindicator, span.dashboardlineindicatorlate {
|
||||
font-size: 130%;
|
||||
font-weight: normal;
|
||||
@ -5758,3 +5764,5 @@ div.tabsElem a.tab {
|
||||
|
||||
<?php
|
||||
include dol_buildpath($path.'/theme/'.$theme.'/dropdown.inc.php', 0);
|
||||
include dol_buildpath($path.'/theme/'.$theme.'/info-box.inc.php', 0);
|
||||
|
||||
|
||||
BIN
htdocs/theme/eldy/img/title_document.png
Normal file
BIN
htdocs/theme/eldy/img/title_document.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 570 B |
268
htdocs/theme/eldy/info-box.inc.php
Normal file
268
htdocs/theme/eldy/info-box.inc.php
Normal file
@ -0,0 +1,268 @@
|
||||
<?php
|
||||
if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
/* <style type="text/css" > */
|
||||
|
||||
/*
|
||||
* Component: Info Box
|
||||
* -------------------
|
||||
*/
|
||||
.info-box {
|
||||
display: block;
|
||||
min-height: 90px;
|
||||
background: #fff;
|
||||
width: 100%;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2), 0px 0px 2px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 2px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.info-box.info-box-sm{
|
||||
min-height: 70px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.info-box small {
|
||||
font-size: 14px;
|
||||
}
|
||||
.info-box .progress {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
margin: 5px -10px 5px -10px;
|
||||
height: 2px;
|
||||
}
|
||||
.info-box .progress,
|
||||
.info-box .progress .progress-bar {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.info-box .progress .progress-bar {
|
||||
float: left;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
background-color: #337ab7;
|
||||
-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
|
||||
box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
|
||||
-webkit-transition: width .6s ease;
|
||||
-o-transition: width .6s ease;
|
||||
transition: width .6s ease;
|
||||
}
|
||||
.info-box-icon {
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
display: block;
|
||||
float: left;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
text-align: center;
|
||||
font-size: 45px;
|
||||
line-height: 90px;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.info-box-sm .info-box-icon{
|
||||
height: 70px;
|
||||
width: 70px;
|
||||
font-size: 25px;
|
||||
line-height: 70px;
|
||||
}
|
||||
.info-box-icon > img {
|
||||
max-width: 100%;
|
||||
}
|
||||
.info-box-content {
|
||||
padding: 5px 10px;
|
||||
margin-left: 90px;
|
||||
}
|
||||
|
||||
.info-box-sm .info-box-content{
|
||||
margin-left: 70px;
|
||||
}
|
||||
.info-box-number {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
}
|
||||
.progress-description,
|
||||
.info-box-text,
|
||||
.info-box-title{
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.info-box-title{
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
}
|
||||
.info-box-text:first-letter{text-transform: uppercase}
|
||||
a.info-box-text{ text-decoration: none;}
|
||||
|
||||
|
||||
.info-box-more {
|
||||
display: block;
|
||||
}
|
||||
.progress-description {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ICONS */
|
||||
.info-box-icon {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.bg-infoxbox-project{
|
||||
background-color: #605ca8 !important;
|
||||
}
|
||||
.bg-infoxbox-action{
|
||||
background-color: #d81b60 !important;
|
||||
}
|
||||
.bg-infoxbox-propal,
|
||||
.bg-infoxbox-facture,
|
||||
.bg-infoxbox-commande{
|
||||
background-color: #dd4b39 !important;
|
||||
}
|
||||
.bg-infoxbox-supplier_proposal,
|
||||
.bg-infoxbox-invoice_supplier,
|
||||
.bg-infoxbox-order_supplier{
|
||||
background-color: #00c0ef !important;
|
||||
}
|
||||
.bg-infoxbox-contrat{
|
||||
background-color: #00a65a !important;
|
||||
}
|
||||
.bg-infoxbox-bank_account{
|
||||
background-color: #f39c12 !important;
|
||||
}
|
||||
.bg-infoxbox-adherent{
|
||||
//background-color: #f39c12 !important;
|
||||
}
|
||||
.bg-infoxbox-expensereport{
|
||||
background-color: #a55114 !important;
|
||||
}
|
||||
.bg-infoxbox-holiday{
|
||||
background-color: #cbd81b !important;
|
||||
}
|
||||
|
||||
|
||||
.fa-dol-action:before {
|
||||
content: "\f073";
|
||||
}
|
||||
.fa-dol-propal:before,
|
||||
.fa-dol-supplier_proposal:before {
|
||||
content: "\f2b5";
|
||||
}
|
||||
.fa-dol-facture:before,
|
||||
.fa-dol-invoice_supplier:before {
|
||||
content: "\f571";
|
||||
}
|
||||
.fa-dol-project:before {
|
||||
content: "\f0e8";
|
||||
}
|
||||
.fa-dol-commande:before,
|
||||
.fa-dol-order_supplier:before {
|
||||
content: "\f570";
|
||||
}
|
||||
.fa-dol-contrat:before {
|
||||
content: "\f1e6";
|
||||
}
|
||||
.fa-dol-bank_account:before {
|
||||
content: "\f19c";
|
||||
}
|
||||
.fa-dol-adherent:before {
|
||||
content: "\f0c0";
|
||||
}
|
||||
.fa-dol-expensereport:before {
|
||||
content: "\f555";
|
||||
}
|
||||
.fa-dol-holiday:before {
|
||||
content: "\f5ca";
|
||||
}
|
||||
|
||||
|
||||
/* USING FONTAWESOME FOR WEATHER */
|
||||
.info-box-weather .info-box-icon{
|
||||
background: rgba(0, 0, 0, 0); !important;
|
||||
}
|
||||
.fa-weather-level0:before{
|
||||
content: "\f185";
|
||||
color : #cccccc;
|
||||
}
|
||||
.fa-weather-level1:before{
|
||||
content: "\f6c4";
|
||||
color : #cccccc;
|
||||
}
|
||||
.fa-weather-level2:before{
|
||||
content: "\f0c2";
|
||||
color : #cccccc;
|
||||
}
|
||||
.fa-weather-level3:before{
|
||||
content: "\f740";
|
||||
color : #cccccc;
|
||||
}
|
||||
.fa-weather-level4:before{
|
||||
content: "\f0e7";
|
||||
color : #b91f1f;
|
||||
}
|
||||
|
||||
/* USING IMAGES FOR WEATHER INTEAD OF FONT AWESOME */
|
||||
/* For other themes just uncomment this part */
|
||||
/*.info-box-weather-level0,
|
||||
.info-box-weather-level1,
|
||||
.info-box-weather-level2,
|
||||
.info-box-weather-level3,
|
||||
.info-box-weather-level4 {
|
||||
background-position: 15px 50%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.info-box-weather .info-box-icon{
|
||||
display: none !important;
|
||||
}
|
||||
.info-box-weather-level0 {
|
||||
background-image: url("img/weather/weather-clear.png");
|
||||
}
|
||||
.info-box-weather-level1 {
|
||||
background-image: url("img/weather/weather-few-clouds.png");
|
||||
}
|
||||
.info-box-weather-level2 {
|
||||
background-image: url("img/weather/weather-clouds.png");
|
||||
}
|
||||
.info-box-weather-level3 {
|
||||
background-image: url("img/weather/weather-many-clouds.png");
|
||||
}
|
||||
.info-box-weather-level4 {
|
||||
background-image: url("img/weather/weather-storm.png");
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
.box-flex-container{
|
||||
display: flex; /* or inline-flex */
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
margin: 0 0 0 -15px;
|
||||
/*justify-content: space-between;*/
|
||||
}
|
||||
|
||||
.box-flex-item{
|
||||
flex-grow : 1;
|
||||
flex-shrink: 1;
|
||||
flex-basis: auto;
|
||||
|
||||
width: 280px;
|
||||
margin: 5px 0px 0px 15px;
|
||||
}
|
||||
.box-flex-item.filler{
|
||||
margin: 0px 0px 0px 15px !important;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.box{
|
||||
overflow: visible;
|
||||
}
|
||||
204
htdocs/theme/md/badges.inc.php
Normal file
204
htdocs/theme/md/badges.inc.php
Normal file
@ -0,0 +1,204 @@
|
||||
<?php
|
||||
if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
/* <style type="text/css" > */
|
||||
/*
|
||||
Badge style is based on boostrap framework
|
||||
*/
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: .1em .35em;
|
||||
font-size: 80%;
|
||||
font-weight: 700 !important;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: .25rem;
|
||||
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
border-color: rgba(255,255,255,0);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/* Themes for badges */
|
||||
|
||||
.badge-pill, .tabs .badge {
|
||||
padding-right: .5em;
|
||||
padding-left: .5em;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.badge-dot {
|
||||
padding: 0;
|
||||
border-radius: 50%;
|
||||
padding: 0.25rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
a.badge:focus, a.badge:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.liste_titre .badge {
|
||||
background-color: <?php print $badgeSecondary; ?>;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/* PRIMARY */
|
||||
.badge-primary{
|
||||
color: #fff !important;
|
||||
background-color: <?php print $badgePrimary; ?>;
|
||||
}
|
||||
a.badge-primary.focus, a.badge-primary:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgePrimary, 0.5); ?>;
|
||||
}
|
||||
a.badge-primary:focus, a.badge-primary:hover {
|
||||
color: #fff !important;
|
||||
background-color: <?php print colorDarker($badgePrimary, 10); ?>;
|
||||
}
|
||||
|
||||
/* SECONDARY */
|
||||
.badge-secondary, .tabs .badge {
|
||||
color: #fff !important;
|
||||
background-color: <?php print $badgeSecondary; ?>;
|
||||
}
|
||||
a.badge-secondary.focus, a.badge-secondary:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeSecondary, 0.5); ?>;
|
||||
}
|
||||
a.badge-secondary:focus, a.badge-secondary:hover {
|
||||
color: #fff !important;
|
||||
background-color: <?php print colorDarker($badgeSecondary, 10); ?>;
|
||||
}
|
||||
|
||||
/* SUCCESS */
|
||||
.badge-success {
|
||||
color: #fff !important;
|
||||
background-color: <?php print $badgeSuccess; ?>;
|
||||
}
|
||||
a.badge-success.focus, a.badge-success:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeSuccess, 0.5); ?>;
|
||||
}
|
||||
a.badge-success:focus, a.badge-success:hover {
|
||||
color: #fff !important;
|
||||
background-color: <?php print colorDarker($badgeSuccess, 10); ?>;
|
||||
}
|
||||
|
||||
/* DANGER */
|
||||
.badge-danger {
|
||||
color: #fff !important;
|
||||
background-color: <?php print $badgeDanger; ?>;
|
||||
}
|
||||
a.badge-danger.focus, a.badge-danger:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeDanger, 0.5); ?>;
|
||||
}
|
||||
a.badge-danger:focus, a.badge-danger:hover {
|
||||
color: #fff !important;
|
||||
background-color: <?php print colorDarker($badgeDanger, 10); ?>;
|
||||
}
|
||||
|
||||
/* WARNING */
|
||||
.badge-warning {
|
||||
color: #212529 !important;
|
||||
background-color: <?php print $badgeWarning; ?>;
|
||||
}
|
||||
a.badge-warning.focus, a.badge-warning:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeWarning, 0.5); ?>;
|
||||
}
|
||||
a.badge-warning:focus, a.badge-warning:hover {
|
||||
color: #212529 !important;
|
||||
background-color: <?php print colorDarker($badgeWarning, 10); ?>;
|
||||
}
|
||||
|
||||
/* INFO */
|
||||
.badge-info {
|
||||
color: #fff !important;
|
||||
background-color: <?php print $badgeInfo; ?>;
|
||||
}
|
||||
a.badge-info.focus, a.badge-info:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeInfo, 0.5); ?>;
|
||||
}
|
||||
a.badge-info:focus, a.badge-info:hover {
|
||||
color: #fff !important;
|
||||
background-color: <?php print colorDarker($badgeInfo, 10); ?>;
|
||||
}
|
||||
|
||||
/* LIGHT */
|
||||
.badge-light {
|
||||
color: #212529 !important;
|
||||
background-color: <?php print $badgeLight; ?>;
|
||||
}
|
||||
a.badge-light.focus, a.badge-light:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeLight, 0.5); ?>;
|
||||
}
|
||||
a.badge-light:focus, a.badge-light:hover {
|
||||
color: #212529 !important;
|
||||
background-color: <?php print colorDarker($badgeLight, 10); ?>;
|
||||
}
|
||||
|
||||
/* DARK */
|
||||
.badge-dark {
|
||||
color: #fff !important;
|
||||
background-color: <?php print $badgeDark; ?>;
|
||||
}
|
||||
a.badge-dark.focus, a.badge-dark:focus {
|
||||
outline: 0;
|
||||
box-shadow: 0 0 0 0.2rem <?php print colorHexToRgb($badgeDark, 0.5); ?>;
|
||||
}
|
||||
a.badge-dark:focus, a.badge-dark:hover {
|
||||
color: #fff !important;
|
||||
background-color: <?php print colorDarker($badgeDark, 10); ?>;
|
||||
}
|
||||
|
||||
/*
|
||||
* STATUS BADGES
|
||||
*/
|
||||
|
||||
/* Default Status */
|
||||
|
||||
<?php for ($i = 0; $i <= 9; $i++){
|
||||
|
||||
print "\n/* STATUS".$i." */\n";
|
||||
|
||||
$thisBadgeBackgroundColor = $thisBadgeBorderColor = ${'badgeStatus'.$i};
|
||||
|
||||
|
||||
$TBadgeBorderOnly = array(0,3,5,7);
|
||||
$thisBadgeTextColor = colorIsLight(${'badgeStatus'.$i})?'#212529':'#ffffff';
|
||||
if(in_array($i, $TBadgeBorderOnly)){
|
||||
$thisBadgeTextColor = '#212529';
|
||||
$thisBadgeBackgroundColor = "#fff";
|
||||
}
|
||||
|
||||
print ".badge-status".$i." {\n";
|
||||
print " color: ".$thisBadgeTextColor." !important;\n";
|
||||
|
||||
if(in_array($i, $TBadgeBorderOnly)){
|
||||
print " border-color: ".$thisBadgeBorderColor.";\n";
|
||||
}
|
||||
|
||||
print " background-color: ".$thisBadgeBackgroundColor.";\n";
|
||||
print "}\n";
|
||||
|
||||
print ".badge-status".$i.".focus, .badge-status".$i.":focus {\n";
|
||||
print " outline: 0;\n";
|
||||
print " box-shadow: 0 0 0 0.2rem ".colorHexToRgb($thisBadgeBackgroundColor, 0.5).";\n";
|
||||
print "}\n";
|
||||
|
||||
print ".badge-status".$i.":focus, .badge-status".$i.":hover {\n";
|
||||
print " color: ".$thisBadgeTextColor." !important;\n";
|
||||
print " background-color: ".colorDarker($thisBadgeBackgroundColor, 10).";\n";
|
||||
if(in_array($i, $TBadgeBorderOnly)){
|
||||
print " border-color: ".colorDarker($thisBadgeBorderColor, 10).";\n";
|
||||
}
|
||||
print "}\n";
|
||||
}
|
||||
|
||||
235
htdocs/theme/md/btn.inc.php
Normal file
235
htdocs/theme/md/btn.inc.php
Normal file
@ -0,0 +1,235 @@
|
||||
<?php
|
||||
if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
/* <style type="text/css" > */
|
||||
|
||||
|
||||
|
||||
/* ============================================================================== */
|
||||
/* Buttons for actions */
|
||||
/* ============================================================================== */
|
||||
|
||||
|
||||
div.divButAction {
|
||||
margin-bottom: 1.4em;
|
||||
vertical-align: top;
|
||||
}
|
||||
div.tabsAction > a.butAction, div.tabsAction > a.butActionRefused {
|
||||
margin-bottom: 1.4em !important;
|
||||
}
|
||||
|
||||
span.butAction, span.butActionDelete {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.button, .butAction, .butActionDelete, .butActionRefused, .butActionNewRefused {
|
||||
border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
|
||||
display: inline-block;
|
||||
padding: 0.4em <?php echo ($dol_optimize_smallscreen?'0.4':'0.7'); ?>em;
|
||||
margin: 0em <?php echo ($dol_optimize_smallscreen?'0.7':'0.9'); ?>em;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
color: #333333 !important;
|
||||
text-decoration: none !important;
|
||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
||||
background-color: #f5f5f5;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
border: 1px solid #bbbbbb;
|
||||
border-bottom-color: #a2a2a2;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.butActionNew, .butActionNewRefused, .butActionNew:link, .butActionNew:visited, .butActionNew:hover, .butActionNew:active {
|
||||
text-decoration: none;
|
||||
/* border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); */
|
||||
display: inline-block;
|
||||
padding: 0.2em <?php echo ($dol_optimize_smallscreen?'0.4':'0.7'); ?>em;
|
||||
margin: 0em <?php echo ($dol_optimize_smallscreen?'0.7':'0.9'); ?>em;
|
||||
line-height: 20px;
|
||||
/* text-align: center; New button are on right of screen */
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
/* color: #ffffff !important; */
|
||||
/* text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); */
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
/* -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); */
|
||||
/* background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x; */
|
||||
}
|
||||
a.butActionNew>span.fa-plus-circle { padding-left: 6px; font-size: 1.5em; }
|
||||
a.butActionNewRefused>span.fa-plus-circle { padding-left: 6px; font-size: 1.5em; }
|
||||
|
||||
.button, .butAction {
|
||||
color: #ffffff !important;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.button:disabled, .butAction:disabled {
|
||||
color: #666 !important;
|
||||
text-shadow: none;
|
||||
border-color: #555;
|
||||
cursor: not-allowed;
|
||||
|
||||
background-color: #f5f5f5;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||
background-repeat: repeat-x
|
||||
}
|
||||
|
||||
button.ui-button {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.butActionDelete, .buttonDelete {
|
||||
color: #ffffff !important;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #cc6d00;
|
||||
background-image: -moz-linear-gradient(top, #cc8800, #cc4400);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cc8800), to(#cc4400));
|
||||
background-image: -webkit-linear-gradient(top, #cc8800, #cc4400);
|
||||
background-image: -o-linear-gradient(top, #cc8800, #cc4400);
|
||||
background-image: linear-gradient(to bottom, #cc8800, #cc4400);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #cc4400 #cc4400 #802a00;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
a.butAction:link, a.butAction:visited, a.butAction:hover, a.butAction:active {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.butActionRefused, .butActionNewRefused {
|
||||
color: #AAAAAA !important;
|
||||
cursor: not-allowed !important;
|
||||
}
|
||||
|
||||
a.butAction:hover, a.butActionDelete:hover, a.butActionRefused:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.butActionNewRefused:hover {
|
||||
border-color: unset !important;
|
||||
border: 1px solid #bbbbbb;
|
||||
}
|
||||
a.butAction:hover, a.butActionNew:hover, a.butActionDelete:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.butActionTransparent {
|
||||
color: #222 ! important;
|
||||
background-color: transparent ! important;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
TITLE BUTTON
|
||||
*/
|
||||
|
||||
.btnTitle, a.btnTitle {
|
||||
display: inline-block;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
-ms-touch-action: manipulation;
|
||||
touch-action: manipulation;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
box-shadow: none;
|
||||
text-decoration: none;
|
||||
position: relative;
|
||||
margin: 0 0 0 10px;
|
||||
min-width: 80px;
|
||||
text-align: center;
|
||||
color: rgb(<?php print $colortextlink; ?>);
|
||||
border: none;
|
||||
font-size: 12px;
|
||||
font-weight: 300;
|
||||
background-color: #fbfbfb;
|
||||
}
|
||||
|
||||
.btnTitle > .btnTitle-icon{
|
||||
|
||||
}
|
||||
|
||||
.btnTitle > .btnTitle-label{
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.btnTitle:hover, a.btnTitle:hover {
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
margin: 0 0 0 10px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
background-color: rgb(<?php print $colortextlink; ?>);
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.btnTitle.refused, a.btnTitle.refused, .btnTitle.refused:hover, a.btnTitle.refused:hover {
|
||||
color: #8a8a8a;
|
||||
cursor: not-allowed;
|
||||
background-color: #fbfbfb;
|
||||
background: repeating-linear-gradient( 45deg, #ffffff, #f1f1f1 4px, #f1f1f1 4px, #f1f1f1 4px );
|
||||
}
|
||||
|
||||
.btnTitle:hover .btnTitle-label{
|
||||
color: #ffffff;
|
||||
}
|
||||
div.pagination .btnTitle:hover .btnTitle-label{
|
||||
color: rgb(<?php print $colortextlink; ?>);
|
||||
}
|
||||
|
||||
.btnTitle.refused .btnTitle-label, .btnTitle.refused:hover .btnTitle-label{
|
||||
color: #8a8a8a;
|
||||
}
|
||||
|
||||
.btnTitle>.fa {
|
||||
font-size: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?php if (! empty($conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED) && (! $user->admin)) { ?>
|
||||
.butActionRefused, .butActionNewRefused, .btnTitle.refused {
|
||||
display: none !important;
|
||||
}
|
||||
<?php }
|
||||
BIN
htdocs/theme/md/img/title_document.png
Normal file
BIN
htdocs/theme/md/img/title_document.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 570 B |
245
htdocs/theme/md/info-box.inc.php
Normal file
245
htdocs/theme/md/info-box.inc.php
Normal file
@ -0,0 +1,245 @@
|
||||
<?php
|
||||
if (! defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?>
|
||||
/* <style type="text/css" > */
|
||||
|
||||
/*
|
||||
* Component: Info Box
|
||||
* -------------------
|
||||
*/
|
||||
.info-box {
|
||||
display: block;
|
||||
min-height: 90px;
|
||||
background: #fff;
|
||||
width: 100%;
|
||||
margin-bottom: 15px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.info-box small {
|
||||
font-size: 14px;
|
||||
}
|
||||
.info-box .progress {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
margin: 5px -10px 5px -10px;
|
||||
height: 2px;
|
||||
}
|
||||
.info-box .progress,
|
||||
.info-box .progress .progress-bar {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.info-box .progress .progress-bar {
|
||||
float: left;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
background-color: #337ab7;
|
||||
-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
|
||||
box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
|
||||
-webkit-transition: width .6s ease;
|
||||
-o-transition: width .6s ease;
|
||||
transition: width .6s ease;
|
||||
}
|
||||
.info-box-icon {
|
||||
display: block;
|
||||
float: left;
|
||||
height: 90px;
|
||||
width: 90px;
|
||||
text-align: center;
|
||||
font-size: 45px;
|
||||
line-height: 90px;
|
||||
background: #eee;
|
||||
}
|
||||
.info-box-icon > img {
|
||||
max-width: 100%;
|
||||
}
|
||||
.info-box-content {
|
||||
padding: 5px 10px;
|
||||
margin-left: 90px;
|
||||
}
|
||||
.info-box-number {
|
||||
display: block;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
}
|
||||
.progress-description,
|
||||
.info-box-text,
|
||||
.info-box-title{
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.info-box-title{
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
}
|
||||
.info-box-text:first-letter{text-transform: uppercase}
|
||||
a.info-box-text{ text-decoration: none;}
|
||||
|
||||
|
||||
.info-box-more {
|
||||
display: block;
|
||||
}
|
||||
.progress-description {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ICONS */
|
||||
.info-box-icon {
|
||||
color: #000 !important;
|
||||
}
|
||||
/*
|
||||
.bg-infoxbox-project{
|
||||
background-color: #605ca8 !important;
|
||||
}
|
||||
.bg-infoxbox-action{
|
||||
background-color: #d81b60 !important;
|
||||
}
|
||||
.bg-infoxbox-propal,
|
||||
.bg-infoxbox-facture,
|
||||
.bg-infoxbox-commande{
|
||||
background-color: #dd4b39 !important;
|
||||
}
|
||||
.bg-infoxbox-supplier_proposal,
|
||||
.bg-infoxbox-invoice_supplier,
|
||||
.bg-infoxbox-order_supplier{
|
||||
background-color: #00c0ef !important;
|
||||
}
|
||||
.bg-infoxbox-contrat{
|
||||
background-color: #00a65a !important;
|
||||
}
|
||||
.bg-infoxbox-bank_account{
|
||||
background-color: #f39c12 !important;
|
||||
}
|
||||
.bg-infoxbox-adherent{
|
||||
//background-color: #f39c12 !important;
|
||||
}
|
||||
.bg-infoxbox-expensereport{
|
||||
background-color: #a55114 !important;
|
||||
}
|
||||
.bg-infoxbox-holiday{
|
||||
background-color: #cbd81b !important;
|
||||
}
|
||||
*/
|
||||
|
||||
.fa-dol-action:before {
|
||||
content: "\f073";
|
||||
}
|
||||
.fa-dol-propal:before,
|
||||
.fa-dol-supplier_proposal:before {
|
||||
content: "\f2b5";
|
||||
}
|
||||
.fa-dol-facture:before,
|
||||
.fa-dol-invoice_supplier:before {
|
||||
content: "\f571";
|
||||
}
|
||||
.fa-dol-project:before {
|
||||
content: "\f0e8";
|
||||
}
|
||||
.fa-dol-commande:before,
|
||||
.fa-dol-order_supplier:before {
|
||||
content: "\f570";
|
||||
}
|
||||
.fa-dol-contrat:before {
|
||||
content: "\f1e6";
|
||||
}
|
||||
.fa-dol-bank_account:before {
|
||||
content: "\f19c";
|
||||
}
|
||||
.fa-dol-adherent:before {
|
||||
content: "\f0c0";
|
||||
}
|
||||
.fa-dol-expensereport:before {
|
||||
content: "\f555";
|
||||
}
|
||||
.fa-dol-holiday:before {
|
||||
content: "\f5ca";
|
||||
}
|
||||
|
||||
|
||||
/* USING FONTAWESOME FOR WEATHER */
|
||||
.info-box-weather .info-box-icon{
|
||||
background: rgba(0, 0, 0, 0); !important;
|
||||
}
|
||||
.fa-weather-level0:before{
|
||||
content: "\f185";
|
||||
color : #000000;
|
||||
}
|
||||
.fa-weather-level1:before{
|
||||
content: "\f6c4";
|
||||
color : #000000;
|
||||
}
|
||||
.fa-weather-level2:before{
|
||||
content: "\f0c2";
|
||||
color : #000000;
|
||||
}
|
||||
.fa-weather-level3:before{
|
||||
content: "\f740";
|
||||
color : #000000;
|
||||
}
|
||||
.fa-weather-level4:before{
|
||||
content: "\f0e7";
|
||||
color : #000000;
|
||||
}
|
||||
|
||||
/* USING IMAGES FOR WEATHER INTEAD OF FONT AWESOME */
|
||||
/* For other themes just uncomment this part */
|
||||
/*.info-box-weather-level0,
|
||||
.info-box-weather-level1,
|
||||
.info-box-weather-level2,
|
||||
.info-box-weather-level3,
|
||||
.info-box-weather-level4 {
|
||||
background-position: 15px 50%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.info-box-weather .info-box-icon{
|
||||
display: none !important;
|
||||
}
|
||||
.info-box-weather-level0 {
|
||||
background-image: url("img/weather/weather-clear.png");
|
||||
}
|
||||
.info-box-weather-level1 {
|
||||
background-image: url("img/weather/weather-few-clouds.png");
|
||||
}
|
||||
.info-box-weather-level2 {
|
||||
background-image: url("img/weather/weather-clouds.png");
|
||||
}
|
||||
.info-box-weather-level3 {
|
||||
background-image: url("img/weather/weather-many-clouds.png");
|
||||
}
|
||||
.info-box-weather-level4 {
|
||||
background-image: url("img/weather/weather-storm.png");
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
.box-flex-container{
|
||||
display: flex; /* or inline-flex */
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
margin: 0 0 0 -15px;
|
||||
/*justify-content: space-between;*/
|
||||
}
|
||||
|
||||
.box-flex-item{
|
||||
flex-grow : 1;
|
||||
flex-shrink: 1;
|
||||
flex-basis: auto;
|
||||
|
||||
width: 280px;
|
||||
margin: 5px 0px 0px 15px;
|
||||
}
|
||||
.box-flex-item.filler{
|
||||
margin: 0px 0px 0px 15px !important;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
@ -691,20 +691,7 @@ textarea.centpercent {
|
||||
}
|
||||
|
||||
/* Themes for badges */
|
||||
.badge {
|
||||
display: inline-block;
|
||||
min-width: 10px;
|
||||
padding: 2px 5px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
line-height: 1em;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
background-color: #777;
|
||||
border-radius: 10px;
|
||||
}
|
||||
<?php include dol_buildpath($path.'/theme/'.$theme.'/badges.inc.php', 0); ?>
|
||||
|
||||
.borderrightlight
|
||||
{
|
||||
@ -2512,150 +2499,7 @@ span.tabspan {
|
||||
/* ============================================================================== */
|
||||
/* Buttons for actions */
|
||||
/* ============================================================================== */
|
||||
|
||||
div.divButAction {
|
||||
margin-bottom: 1.4em;
|
||||
vertical-align: top;
|
||||
}
|
||||
div.tabsAction > a.butAction, div.tabsAction > a.butActionRefused {
|
||||
margin-bottom: 1.4em !important;
|
||||
}
|
||||
|
||||
span.butAction, span.butActionDelete {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.button, .butAction, .butActionDelete, .butActionRefused, .butActionNewRefused {
|
||||
border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
|
||||
display: inline-block;
|
||||
padding: 0.4em <?php echo ($dol_optimize_smallscreen?'0.4':'0.7'); ?>em;
|
||||
margin: 0em <?php echo ($dol_optimize_smallscreen?'0.7':'0.9'); ?>em;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
color: #333333 !important;
|
||||
text-decoration: none !important;
|
||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
||||
background-color: #f5f5f5;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
border: 1px solid #bbbbbb;
|
||||
border-bottom-color: #a2a2a2;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.butActionNew, .butActionNewRefused, .butActionNew:link, .butActionNew:visited, .butActionNew:hover, .butActionNew:active {
|
||||
text-decoration: none;
|
||||
/* border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); */
|
||||
display: inline-block;
|
||||
padding: 0.2em <?php echo ($dol_optimize_smallscreen?'0.4':'0.7'); ?>em;
|
||||
margin: 0em <?php echo ($dol_optimize_smallscreen?'0.7':'0.9'); ?>em;
|
||||
line-height: 20px;
|
||||
/* text-align: center; New button are on right of screen */
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
/* color: #ffffff !important; */
|
||||
/* text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); */
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
/* -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); */
|
||||
/* background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x; */
|
||||
}
|
||||
a.butActionNew>span.fa-plus-circle { padding-left: 6px; font-size: 1.5em; }
|
||||
a.butActionNewRefused>span.fa-plus-circle { padding-left: 6px; font-size: 1.5em; }
|
||||
|
||||
.button, .butAction {
|
||||
color: #ffffff !important;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.button:disabled, .butAction:disabled {
|
||||
color: #666 !important;
|
||||
text-shadow: none;
|
||||
border-color: #555;
|
||||
cursor: not-allowed;
|
||||
|
||||
background-color: #f5f5f5;
|
||||
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
||||
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
||||
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
||||
background-repeat: repeat-x
|
||||
}
|
||||
|
||||
button.ui-button {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.butActionDelete, .buttonDelete {
|
||||
color: #ffffff !important;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
background-color: #cc6d00;
|
||||
background-image: -moz-linear-gradient(top, #cc8800, #cc4400);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#cc8800), to(#cc4400));
|
||||
background-image: -webkit-linear-gradient(top, #cc8800, #cc4400);
|
||||
background-image: -o-linear-gradient(top, #cc8800, #cc4400);
|
||||
background-image: linear-gradient(to bottom, #cc8800, #cc4400);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #cc4400 #cc4400 #802a00;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
a.butAction:link, a.butAction:visited, a.butAction:hover, a.butAction:active {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.butActionRefused, .butActionNewRefused {
|
||||
color: #AAAAAA !important;
|
||||
cursor: not-allowed !important;
|
||||
}
|
||||
|
||||
a.butAction:hover, a.butActionDelete:hover, a.butActionRefused:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.butActionNewRefused:hover {
|
||||
border-color: unset !important;
|
||||
border: 1px solid #bbbbbb;
|
||||
}
|
||||
a.butAction:hover, a.butActionNew:hover, a.butActionDelete:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.butActionTransparent {
|
||||
color: #222 ! important;
|
||||
background-color: transparent ! important;
|
||||
}
|
||||
|
||||
<?php if (! empty($conf->global->MAIN_BUTTON_HIDE_UNAUTHORIZED)) { ?>
|
||||
.butActionRefused, .butActionNewRefused {
|
||||
display: none;
|
||||
}
|
||||
<?php } ?>
|
||||
<?php include dol_buildpath($path.'/theme/'.$theme.'/btn.inc.php', 0); ?>
|
||||
|
||||
|
||||
|
||||
@ -5863,6 +5707,6 @@ border-top-right-radius: 6px;
|
||||
|
||||
include dol_buildpath($path.'/theme/'.$theme.'/dropdown.inc.php', 0);
|
||||
|
||||
|
||||
include dol_buildpath($path.'/theme/'.$theme.'/info-box.inc.php', 0);
|
||||
|
||||
if (is_object($db)) $db->close();
|
||||
|
||||
@ -66,3 +66,28 @@ $colortext='0,0,0';
|
||||
$colortextlink='0,0,120';
|
||||
$fontsize='14';
|
||||
$fontsizesmaller='11';
|
||||
|
||||
// Badges colors
|
||||
$badgePrimary ='#007bff';
|
||||
$badgeSecondary ='#999999';
|
||||
$badgeSuccess ='#28a745';
|
||||
$badgeDanger ='#8c4446';
|
||||
$badgeWarning ='#ffc107';
|
||||
$badgeInfo ='#17a2b8';
|
||||
$badgeDark ='#343a40';
|
||||
$badgeLight ='#f8f9fa';
|
||||
|
||||
/* default color for status : After a quick check, somme status can have oposite function according to objects
|
||||
* So this badges status uses default value according to theme eldy status img
|
||||
* TODO: use color definition vars above for define badges color status X -> expemple $badgeStatusValidate, $badgeStatusClosed, $badgeStatusActive ....
|
||||
*/
|
||||
$badgeStatus0='#cbd3d3';
|
||||
$badgeStatus1='#bc9526';
|
||||
$badgeStatus2='#e6f0f0';
|
||||
$badgeStatus3='#bca52b';
|
||||
$badgeStatus4='#277d1e';
|
||||
$badgeStatus5='#cad2d2';
|
||||
$badgeStatus6='#cad2d2';
|
||||
$badgeStatus7='#baa32b';
|
||||
$badgeStatus8='#be3013';
|
||||
$badgeStatus9='#e7f0f0';
|
||||
|
||||
Loading…
Reference in New Issue
Block a user