Существует блог разработчиков SugarCRM. статья, в которой объясняется, как изменить некоторые основные файлы, чтобы подпанели сворачивались в подробном представлении, когда нет данных для отображения.
Здорово иметь возможность добавить эту функцию, особенно для модулей с большим количеством подпанелей. Однако мы заметили, что если пользователь сворачивает подпанель, когда загружается модуль, который ДЕЙСТВИТЕЛЬНО содержит данные в этой подпанели, подпанель остается свернутой.
Очевидно, что потенциально это может быть проблематично, так как пользователю будет легко предположить, что если подпанель свернута, то там нет информации, хотя на самом деле она есть.
Нам интересно, какой код нужно будет добавить, чтобы принудительно расширить подпанели, в которых есть данные. Предположительно, это будет вопрос добавления предложения else в код ListView.php.
Для вашего удобства я добавил код из приведенного ниже блога.
Для тех, кто не читал блог и хочет реализовать это, ЭТО НЕ БЕЗОПАСНОЕ ОБНОВЛЕНИЕ РЕШЕНИЕ!!
В файле Include/ListView/ListView.php:
if ( empty($data) ) {
$this->xTemplate->assign("ROW_COLOR", 'oddListRow');
$thepanel=$subpanel_def;
if($subpanel_def->isCollection())
$thepanel=$subpanel_def->get_header_panel_def();
$this->xTemplate->assign("COL_COUNT", count($thepanel->get_list_fields()));
// BEGIN CUSTOMIZATION
$this->xTemplate->assign("PANEL_NAME", $thepanel->get_name());
// END CUSTOMIZATION
$this->xTemplate->parse($xtemplateSection.".nodata");
}
И в файле include/SubPanel/SubPanelDynamic.html:
<!-- BEGIN: nodata -->
<tr height='20' class='{ROW_COLOR}S1'>
<td colspan='{COL_COUNT}'>
<em>{APP.LBL_NO_DATA}</em>
<!-- BEGIN CUSTOMIZATION -->
<script type="text/javascript">
document.getElementById('subpanel_{PANEL_NAME}').style.display = 'none';
document.getElementById('hide_link_{PANEL_NAME}').style.display = 'none';
document.getElementById('show_link_{PANEL_NAME}').style.display = '';
</script>
<!-- END CUSTOMIZATION -->
</td>
Спасибо за помощь/предложения!