From dc33289a102545acce594e286473d282487acdb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 2 Feb 2023 23:47:01 +0100 Subject: [PATCH] add ajax tooltip on actioncomm --- htdocs/comm/action/class/actioncomm.class.php | 83 ++++++++++++++++++- htdocs/core/ajax/ajaxtooltip.php | 5 ++ htdocs/product/stock/class/entrepot.class.php | 1 - 3 files changed, 85 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index af98356ab18..23a6b5a67c5 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -5,7 +5,7 @@ * Copyright (C) 2011-2017 Juanjo Menent * Copyright (C) 2015 Marcos García * Copyright (C) 2018 Nicolas ZABOURI - * Copyright (C) 2018-2020 Frédéric France + * Copyright (C) 2018-2023 Frédéric France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1568,6 +1568,73 @@ class ActionComm extends CommonObject return dolGetStatus($labelStatus, $labelStatusShort, '', $statusType, $mode); } + /** + * getTooltipContentArray + * @param array $params params to construct tooltip data + * @since v18 + * @return array + */ + public function getTooltipContentArray($params) + { + global $conf, $langs, $user; + $langs->load('agenda'); + $datas = []; + + // Set label of type + $labeltype = ''; + if ($this->type_code) { + $labeltype = ($langs->transnoentities("Action".$this->type_code) != "Action".$this->type_code) ? $langs->transnoentities("Action".$this->type_code) : $this->type_label; + } + if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) { + if ($this->type_code != 'AC_OTH_AUTO') { + $labeltype = $langs->trans('ActionAC_MANUAL'); + } + } + + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans('Action').''; + if (!empty($this->ref)) { + $datas['ref'] = '
'.$langs->trans('Ref').': '.dol_escape_htmltag($this->ref); + } + if (!empty($this->label)) { + $datas['title'] = '
'.$langs->trans('Title').': '.dol_escape_htmltag($this->label); + } + if (!empty($labeltype)) { + $datas['labeltype'] = '
'.$langs->trans('Type').': '.dol_escape_htmltag($labeltype); + } + if (!empty($this->location)) { + $datas['location'] = '
'.$langs->trans('Location').': '.dol_escape_htmltag($this->location); + } + if (isset($this->transparency)) { + $datas['transparency'] = '
'.$langs->trans('Busy').': '.yn($this->transparency); + } + if (!empty($this->email_msgid)) { + $langs->load("mails"); + $datas['space'] = '
'; + // $datas['email'] = '
'.img_picto('', 'email').' '.$langs->trans("Email").''; + $datas['mailtopic'] = '
'.$langs->trans('MailTopic').': '.dol_escape_htmltag($this->email_subject); + $datas['mailfrom'] = '
'.$langs->trans('MailFrom').': '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_from); + $datas['mailto'] = '
'.$langs->trans('MailTo').': '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_to); + if (!empty($this->email_tocc)) { + $datas['mailcc'] = '
'.$langs->trans('MailCC').': '.str_replace(array('<', '>'), array('&lt', '&gt'), $this->email_tocc); + } + /* Disabled because bcc must remain by defintion not visible + if (!empty($this->email_tobcc)) { + $datas['mailccc'] = '
'.$langs->trans('MailCCC').': '.$this->email_tobcc; + } */ + } + if (!empty($this->note_private)) { + $datas['description'] = '
'.$langs->trans('Description').':
'; + // Try to limit length of content + $texttoshow = dolGetFirstLineOfText($this->note_private, 10); + // Restrict height of content into the tooltip + $datas['note'] = '
'; + $datas['note'] .= (dol_textishtml($texttoshow) ? str_replace(array("\r", "\n"), "", $texttoshow) : str_replace(array("\r", "\n"), '
', $texttoshow)); + $datas['note'] .= '
'; + } + + return $datas; + } + /** * Return URL of event * Use $this->id, $this->type_code, $this->label and $this->type_label @@ -1668,8 +1735,18 @@ class ActionComm extends CommonObject $label = $langs->trans("ShowAction"); $linkclose .= ' alt="'.dol_escape_htmltag($tooltip, 1).'"'; } - $linkclose .= ' title="'.dol_escape_htmltag($tooltip, 1, 0, '', 1).'"'; - $linkclose .= ' class="'.$classname.' classfortooltip"'; + if (getDolGlobalInt('MAIN_ENABLE_AJAX_TOOLTIP')) { + $params = [ + 'id' => $this->id, + 'objecttype' => $this->element, + 'option' => $option, + ]; + $linkclose .= '" data-params='.json_encode($params).' title="' . $langs->trans('Loading') . '"'; + $linkclose .= ' class="'.$classname.' classforajaxtooltip"'; + } else { + $linkclose .= ' title="'.dol_escape_htmltag($tooltip, 1, 0, '', 1).'"'; + $linkclose .= ' class="'.$classname.' classfortooltip"'; + } } else { $linkclose .= ' class="'.$classname.'"'; } diff --git a/htdocs/core/ajax/ajaxtooltip.php b/htdocs/core/ajax/ajaxtooltip.php index 93244c89050..84dd613d1b5 100644 --- a/htdocs/core/ajax/ajaxtooltip.php +++ b/htdocs/core/ajax/ajaxtooltip.php @@ -93,6 +93,11 @@ if ($objecttype == 'facture' || $objecttype == 'invoice') { } elseif ($objecttype == 'propal') { $langs->load('propal'); $classpath = 'comm/propal/class'; +} elseif ($objecttype == 'action') { + $langs->load('agenda'); + $classpath = 'comm/action/class'; + $module = 'agenda'; + $myobject = 'actioncomm'; } elseif ($objecttype == 'supplier_proposal') { $langs->load('supplier_proposal'); $classpath = 'supplier_proposal/class'; diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 080abfa6605..78e2ba0a173 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -688,7 +688,6 @@ class Entrepot extends CommonObject return dolGetStatus($label, $labelshort, '', $statusType, $mode); } - /** * getTooltipContentArray * @param array $params params to construct tooltip data