Suite CRM — добавление настраиваемого поля в подпанель контактов на странице сведений об учетных записях

Я хотел создать «Кнопку вызова» в подпанели контактов на странице сведений об учетных записях. Я мог бы создать «кнопку вызова» на странице списка контактов с помощью логических ловушек. Но такой же способ реализации не работает в подпанели. (Эта кнопка не имеет связи с БД, она просто запускает функцию JavaScript при нажатии на нее.). Пожалуйста помоги мне с этим. Заранее спасибо.


person user1740757    schedule 21.03.2017    source источник
comment
Можете ли вы показать файл метаданных вашей подпанели контактов?   -  person Daniel Samson    schedule 21.03.2017
comment
Конечно. Файл call_button.php, который я сохранил в /custom/modules/Contacts/metadata/subpanels <?php $dictionary['Accounts']['fields']['call_button_c'] = array( 'name' => 'call_button_c', 'vname' => 'LBL_CALL_BUTTON_C', 'type' => 'varchar', 'source' => 'non-db',); ?> Чтобы добавить настраиваемые поля в подпанель контактов на странице сведений об учетных записях, нам нужно отредактировать только модуль «Учетные записи»? Где-то я нашел, чтобы отредактировать модуль контактов. Спасибо   -  person user1740757    schedule 21.03.2017
comment
@DanielSamson Не могли бы вы объяснить, какие шаги можно выполнить, чтобы реализовать это. В каталоге '/modules/Accounts/metadata/subpanels' есть три файла. default.php, ForEmails.php, ForProspectsLists.php. Есть ли какая-то конкретная причина в именах файлов. Если мы создадим папку подпанели в пользовательском каталоге, это сработает? Я немного запутался и новичок в CRM. Спасибо.   -  person user1740757    schedule 21.03.2017


Ответы (1)


Взгляните на modules/Contacts/metadata/subpanels/ForAccounts.php.

Почему «ForAccounts»? Это просто означает, что эта подпанель «Контакты» будет загружена для модуля «Учетные записи». Так что у вас может быть разная функциональность для каждого модуля. default — это просто подпанель по умолчанию, используемая, когда вызывающий модуль не указан. Это связано с тем, как SuiteCRM обрабатывает отношения. Вы можете указать в отношениях, какая подпанель должна отображаться.

Обратите внимание на массив «top_buttons». Это кнопки в верхней части вспомогательной панели. Виджет_класса соответствует виджетам в include/generic/SugarWidgets. Например, SubPanelTopCreateButton на самом деле является SugarWidgetSubPanelTopCreateButton.

'top_buttons' => array(
    array('widget_class' => 'SubPanelTopCreateButton'),
    array('widget_class' => 'SubPanelTopSelectButton', 'popup_module' => 'Contacts'),
),

Если вы хотите добавить свою собственную кнопку, вы должны сначала создать свой собственный виджет, а затем добавить его в массив top_buttons.

Подпанели используют следующее для создания кнопок

  • включить/общий/LayoutManager.php
  • включить/SubPanel/SubPanel.php:120
  • включить/SubPanel/SubPanelTiles.php:426

Возможно, вам придется зарегистрировать виджет в менеджере компоновки.

SugarWidgets являются основной функцией и в настоящее время не загружаются из пользовательского каталога.

Взгляните на SugarWidgetSubPanelTopCreateTaskButton.php в качестве справочного руководства.

person Daniel Samson    schedule 21.03.2017
comment
Большое спасибо за ваш повтор. У меня есть идея относительно «ForAccounts.php» и подпанели. Но что касается кнопок, я хотел сделать кнопки в каждом ряду. Позвольте мне попробовать с этим. - person user1740757; 22.03.2017
comment
Я создал 'ForAccounts.php' в '/custom/modules/Contacts/metadata/subpanels' там в файле, добавил массив кнопок вызова (содержимое скопировано из 'subpanels/default.php'). Теперь, если мы перейдем в «Администратор-›студия» и раскроем «Учетные записи->Подпанели->Контакты», «Кнопка вызова» будет там в списке по умолчанию. Но он не отображается в подпанели контактов Аккаунтов!. Спасибо. - person user1740757; 22.03.2017
comment
После создания файлов ForAccounts.php и Quick Repair and Rebuild создается новый файл Account_subpanel_contacts.php. Всякий раз, когда я изменяю файл, он отражает списки подпанелей. - person user1740757; 23.03.2017