Устанавливаемые изменения SugarCRM в деталяхпросмотреть

У меня есть простая проблема, но она может быть серьезной для меня, я сделал настраиваемые поля и добавил их все в custom\modules\Leads\metadata\detailviewdefs.php (макет подробностей) модуля Leads, но проблема в том, что мне нужно внести пакет изменений в установщик. Я справился с пользовательскими полями и скопировал их в custom\Extension\modules\Leads\Ext\Vardefs через манифест. Теперь я не знаю, как применить изменения detailviewdefs через манифест (добавить новую панель полей в detailview). Дело в том, что существующий макет Detailview не нужно менять, а нужно лишь добавить в него новую панель.

Возможное решение, на мой взгляд, такое: я должен добавить код в массив $layout_defs $layout_defs["Leads"]["DetailView"] ['panels']['panel_name'], поместить его в custom\Extension\modules\Leads\Ext\Layoutdefs\ и скопировать файл Layoutdefs через манифест. Я пробовал это, но, похоже, не работает. Ищите умное решение, поделитесь, если сможете.

Дополнение: даже если я экспортирую изменения модуля из Studio ->export Customizations и импортирую в другой экземпляр с module builder. Он переопределяет все предыдущие пользовательские файлы (настройки) в более новом экземпляре (Разве это не ограничение в SugarCRM), но мое требование состоит в том, чтобы добавлять только изменения в подробное представление более нового экземпляра.


person Mansoor Jafar    schedule 10.10.2012    source источник


Ответы (2)


Это тяжело. Есть два варианта, о которых я знаю. 1) Предоставьте пользователю инструкции о том, как добавить поля в макеты с помощью Studio 2) В сценарии post_install.php имитируйте работу развертывания макета Studio, чтобы вставить ваши поля в любой заданный макет (лучше всего было бы создать новый панель для всех ваших полей при массовой рассылке).

person egg    schedule 10.10.2012
comment
tHank @egg, чтобы ответить, первый вариант не подходит в моем случае, поскольку мои поля не так просто добавить только из студии (с пользовательским кодом), поэтому теперь я перехожу ко второму варианту и ожидаю, что он может решить мою проблему... - person Mansoor Jafar; 11.10.2012

Я нашел следующие функции класса ModuleInstaller сахара для добавления или удаления полей из макетов через manifest script. Эти функции будут добавлять/удалять поля как в editview, так и в detail view одновременно. Просто добавьте следующие строки в post_install / pre_install не нужно ничего требовать,

   $installer_func = new ModuleInstaller();
   $layoutAdditions = array('Users' => 'users_access');

Чтобы добавить поле users_access в модуль Users:

   $installer_func->addFieldsToLayout($layoutAdditions);

Чтобы удалить поле users_access из модуля Users:

   $installer_func->removeFieldsFromLayout($layoutAdditions);

Надеюсь, это помогает.

мансур

person Mansoor Jafar    schedule 18.06.2013
comment
Ваше решение звучит интересно. Но дайте мне знать, могу ли я добавить новый элемент с пользовательским кодом js, например: onblur какого-либо текстового поля. Также, если есть существующий элемент, например: first_name в CONtacts, и я хочу добавить к нему функцию onblur. Как я могу сделать это? - person user3286692; 07.03.2014