Один из моих клиентов обратился ко мне с просьбой добавить карту Google в карту сделок, как это сделано в модулях Leads или Contacts в CRM Vtiger. Я решил взяться за задачу и помочь клиенту реализовать эту функцию.
Сначала я изменил файл layouts/v7/modules/Potentials/DetailViewHeaderTitle.tpl. Для этого был добавлен код, который выводит кнопку, открывающую всплывающее окно с картой Google. Сам код добавляет строку с иконкой маркера и ссылкой на скрипт, который открывает карту. Вот как это выглядит:
<div class="info-row">
<i class="fa fa-map-marker"></i>
<a class="showMap" href="javascript:void(0);" onclick='Vtiger_Index_Js.showMap(this);' data-module='{$RECORD->getModule()->getName()}' data-record='{$RECORD->getId()}'>{vtranslate('LBL_SHOW_MAP', $MODULE_NAME)}</a>
</div>
Далее я добавил маппинг полей и поддержку нового модуля в карты. Для этого были внесены изменения в файл modules/Google/helpers/Map.php. Я добавил новый блок кода в функцию getLocationFields.
case 'Potentials':
$locationFields = array(
'street' => 'cf_1148',
'city' => 'cf_1142',
'state' => 'cf_1203',
'zip' => 'cf_984',
'country' => 'cf_777'
);
break;
Здесь следует заменить cf_ на название полей вашего модуля.
Клиент был доволен результатом, и теперь у него есть возможность добавлять карты Google в карты сделок в CRM Vtiger. Рад, что смог помочь моему клиенту и реализовать эту функцию в короткие сроки.