From 99c0d42b77cc86481348271404a1f55a44e46c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 1 Feb 2023 21:57:45 +0100 Subject: [PATCH] ajax tooltip on thirdparty --- htdocs/societe/class/societe.class.php | 148 ++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index fa6d77ad485..8cd49efe0b6 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2597,6 +2597,140 @@ class Societe extends CommonObject } } + /** + * getTooltipContentArray + * @param array $params params to construct tooltip data + * @since v18 + * @return array + */ + public function getTooltipContentArray($params) + { + global $conf, $langs, $user; + + $langs->loadLangs(['companies, commercial']); + + $datas = []; + + $option = $params['option'] ?? ''; + $name = $this->name; + + if (!empty($this->name_alias) && empty($noaliasinname)) { + $name .= ' ('.$this->name_alias.')'; + } + if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { + return ['optimize' => $langs->trans("ShowCompany")]; + } + + $label = ''; + $label2 = ''; + + if (!empty($this->logo) && class_exists('Form')) { + $photo = '
'; + $photo .= Form::showphoto('societe', $this, 0, 40, 0, 'photoref', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip. + $photo .= '
'; + $datas['photo'] = $photo; + } elseif (!empty($this->logo_squarred) && class_exists('Form')) { + /*$label.= '
'; + $label.= Form::showphoto('societe', $this, 0, 40, 0, 'photowithmargin', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip. + $label.= '
';*/ + } + + $datas['divopen'] = '
'; + + if ($option == 'customer' || $option == 'compta' || $option == 'category') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("Customer").''; + } elseif ($option == 'prospect' && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("Prospect").''; + } elseif ($option == 'supplier' || $option == 'category_supplier') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("Supplier").''; + } elseif ($option == 'agenda') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").''; + } elseif ($option == 'project') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").''; + } elseif ($option == 'margin') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").''; + } elseif ($option == 'contact') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").''; + } elseif ($option == 'ban') { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").''; + } + + // By default + if (empty($datas['picto'] )) { + $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").''; + } + if (isset($this->status)) { + $datas['status'] = ' '.$this->getLibStatut(5); + } + if (isset($this->client) && isset($this->fournisseur)) { + $datas['type'] = '   ' . $this->getTypeUrl(1); + } + + $datas['name'] = '
'.$langs->trans('Name').': '.dol_escape_htmltag($this->name); + if (!empty($this->name_alias)) { + $datas['namealias'] = ' ('.dol_escape_htmltag($this->name_alias).')'; + } + + if ($this->email) { + $datas['email'] = '
'.img_picto('', 'email', 'class="pictofixedwidth"').$this->email; + } + if (!empty($this->phone) || !empty($this->fax)) { + $phonelist = array(); + if ($this->phone) { + $phonelist[] = dol_print_phone($this->phone, $this->country_code, $this->id, 0, '', ' ', 'phone'); + } + if ($this->fax) { + $phonelist[] = dol_print_phone($this->fax, $this->country_code, $this->id, 0, '', ' ', 'fax'); + } + $datas['phonelist'] = '
'.implode(' ', $phonelist); + } + + if (!empty($this->address)) { + $datas['address'] = '
'.$langs->trans("Address").': '.dol_format_address($this, 1, ' ', $langs); // Address + country + } elseif (!empty($this->country_code)) { + $datas['address'] = '
'.$langs->trans('Country').': '.$this->country_code; + } + if (!empty($this->tva_intra) || (!empty($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP) && strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'vatnumber') !== false)) { + $datas['vatintra'] = '
'.$langs->trans('VATIntra').': '.dol_escape_htmltag($this->tva_intra); + } + + if (!empty($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP)) { + if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid1') !== false && $langs->trans('ProfId1'.$this->country_code) != '-') { + $datas['profid1'] = '
'.$langs->trans('ProfId1'.$this->country_code).': '.$this->idprof1; + } + if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid2') !== false && $langs->trans('ProfId2'.$this->country_code) != '-') { + $datas['profid2'] = '
'.$langs->trans('ProfId2'.$this->country_code).': '.$this->idprof2; + } + if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid3') !== false && $langs->trans('ProfId3'.$this->country_code) != '-') { + $datas['profid3'] = '
'.$langs->trans('ProfId3'.$this->country_code).': '.$this->idprof3; + } + if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid4') !== false && $langs->trans('ProfId4'.$this->country_code) != '-') { + $datas['profid4'] = '
'.$langs->trans('ProfId4'.$this->country_code).': '.$this->idprof4; + } + if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid5') !== false && $langs->trans('ProfId5'.$this->country_code) != '-') { + $datas['profid5'] = '
'.$langs->trans('ProfId5'.$this->country_code).': '.$this->idprof5; + } + if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid6') !== false && $langs->trans('ProfId6'.$this->country_code) != '-') { + $datas['profid6'] = '
'.$langs->trans('ProfId6'.$this->country_code).': '.$this->idprof6; + } + } + if (!empty($this->code_client) && ($this->client == 1 || $this->client == 3)) { + $datas['customercode'] = '
'.$langs->trans('CustomerCode').': '.$this->code_client; + } + if (!empty($this->code_fournisseur) && $this->fournisseur) { + $datas['suppliercode'] = '
'.$langs->trans('SupplierCode').': '.$this->code_fournisseur; + } + if (isModEnabled('accounting') && ($this->client == 1 || $this->client == 3)) { + $datas['accountancycustomercode'] = '
'.$langs->trans('CustomerAccountancyCode').': '.($this->code_compta ? $this->code_compta : $this->code_compta_client); + } + if (isModEnabled('accounting') && $this->fournisseur) { + $datas['accountancysuppliercode'] = '
'.$langs->trans('SupplierAccountancyCode').': '.$this->code_compta_fournisseur; + } + + $datas['divclose'] = '
'; + + return $datas; + } /** * Return a link on thirdparty (with picto) @@ -2787,8 +2921,18 @@ class Societe extends CommonObject $label = $langs->trans("ShowCompany"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } - $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose .= ' class="classfortooltip refurl valignmiddle"'; + if (getDolGlobalInt('MAIN_ENABLE_AJAX_TOOLTIP')) { + $params = [ + 'id' => $this->id, + 'objecttype' => $this->element, + 'option' => $option, + ]; + $linkclose .= ' data-params='.json_encode($params).' id="societe-' . uniqid() . '" title="' . $langs->trans('Loading') . '"'; + $linkclose .= ' class="classforajaxtooltip refurl valignmiddle"'; + } else { + $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; + $linkclose .= ' class="classfortooltip refurl valignmiddle"'; + } $target_value = array('_self', '_blank', '_parent', '_top'); if (in_array($target, $target_value)) { $linkclose .= ' target="'.dol_escape_htmltag($target).'"';