SugarCRM 5
Как создать в разделе Проекты закладку (субпанель) Документы?
Закладка должна иметь функционал аналогичный разделу Документы.
Желательно создать так, чтобы была возможность обновлений SugarCRM после создания закладки.
Как создать субпанель?
Сообщений 1 страница 5 из 5
Поделиться12007-11-30 10:26:23
Поделиться22007-11-30 15:10:38
Написано как интегрировать в платформу:
http://www.sugarcrm.com/wiki/index.php?title=Subpanels
А вот как сделать доп.модулем(чтоб была возможность обновления)
Поделиться32007-12-03 15:25:20
Приводи пожалуйста помимо ссылки русскоязычное краткое описание как это сделать. с кодами и необходимыми нюансами
Поделиться42007-12-04 10:47:55
Итак, чтоб создать субпанель или закладку в разделе надо (так как делаю закладку документов в разделе проекты, то код
примеров про нее, причем описана сложная связь многие ко многим):
1. Создать таблицу projects_documents в которой будут храниться связи между разделами, с полями:
id document_id project_id date_modified deleted
последние два поля являются необходимыми для логики программы. Далее создаются индексы к таблице:
CREATE PRIMARY INDEX id ON projects_documents (id(36)); CREATE INDEX idx_proj_doc_proj ON projects_documents (project_id(36)); CREATE INDEX idx_proj_doc_doc ON projects_documents (document_id(36)); CREATE INDEX projects_documents_alt ON projects_documents (project_idb(36), document_id(36));
2. Создаем необходимые ссылки в файле ./modules/Projects/vardefs.php, в массиве fields добавляем:
'documents' =>
array (
'name' => 'documents',
'type' => 'link',
'relationship' => 'projects_documents',
'side' => 'right',
'source'=>'non-db',
'vname'=>'LBL_DOCUMENTS',
),и в массиве relationships
,'projects_documents' => array( 'lhs_module'=> 'Projects', 'lhs_table'=> 'project', 'lhs_key' => 'id', 'rhs_module'=> 'Documents', 'rhs_table'=> 'documents', 'rhs_key' => 'id', 'relationship_type'=>'many-to-many', 'join_table'=> 'projects_documents', 'join_key_lhs'=>'project_id', 'join_key_rhs'=>'document_id'),
3. Создаем Relationship Metadata(взаимосвязи метаданных), для этого в директории ./metadata создаем файл
projects_documentsMetaData.php и цкпляем его в файле ./modules/TableDictionary.php при помощи кода(иначе про него никто не
вспомнит):
include("metadata/projects_documentsMetaData.php");там тока эти инклуды и есть. А вот код самого файла ./metadata/projects_documentsMetaData.php будет таким:
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
// adding projects-to-documents relationship
$dictionary['projects_documents'] = array (
'table' => 'projects_documents',
'fields' => array (
array('name' => 'id', 'type' => 'varchar', 'len' => '36'),
array('name' => 'document_id', 'type' => 'varchar', 'len' => '36'),
array('name' => 'project_id', 'type' => 'varchar', 'len' => '36'),
array('name' => 'date_modified', 'type' => 'datetime'),
array('name' => 'deleted', 'type' => 'bool', 'len' => '1', 'default' => '0', 'required' => true),
),
'indices' => array (
array('name' => 'projects_documents_pk', 'type' =>'primary', 'fields'=>array('id')),
array('name' => 'idx_proj_doc_proj', 'type' =>'index', 'fields'=>array('project_id')),
array('name' => 'idx_proj_doc_doc', 'type' =>'index', 'fields'=>array('document_id')),
array('name' => 'projects_documents_alt', 'type'=>'alternate_key', 'fields'=>array('project_id','document_id')),
),
'relationships' => array (
'projects_documents' => array(
'lhs_module' => 'Projects',
'lhs_table' => 'project',
'lhs_key' => 'id',
'rhs_module' => 'Documents',
'rhs_table' => 'documents',
'rhs_key' => 'id',
'relationship_type' => 'many-to-many',
'join_table' => 'projects_documents',
'join_key_lhs' => 'project_id',
'join_key_rhs' => 'document_id',
),
),
);
?>4. Теперь добавим в файл ./modules/Projects/subpaneldefs.php, который разграничивает связи модулей с созданной
субпанелью, необходимый код для массива subpanel_setup:
'documents' => array(
'top_buttons' => array(
array('widget_class' => 'SubPanelTopSelectButton', 'popup_module' => 'Documents'),
//array('widget_class' => 'SubPanelTopCreateTaskButton'),
//array('widget_class' => 'SubPanelEditButton'),
//array('widget_class' => 'SubPanelCloseButton'),
),
'order' => 110,
'module' => 'Documents',
'sort_order' => 'desc',
//'sort_by' => 'bug_number',
'subpanel_name' => 'default',
'get_subpanel_data' => 'documents',
'add_subpanel_data' => 'dp_docinproj_ida',
'title_key' => 'LBL_DOCUMENTS_SUBPANEL_TITLE',
),Осталось добавить ссылки на языковые имена для отображения, так как по умолчанию используем английский, то в файл
./modules/Projects/language/en_us.php добавим приписочку для корректного отображения вкладок:
'LBL_DOCUMENTS_SUBPANEL_TITLE' => 'Documents', 'LBL_DOCUMENTS' => 'Documents' ,
Поделиться52007-12-04 11:38:15
Скоро напишу как правильно делать для того чтобы с обновлениями работало!
Кстати неплохо было б иметь возможность редактировать свои сообщения, а то как-то тяжеловато сразу все правильно написать!