Форум АСТ

Объявление

ВСЕМ!!! ОБЯЗАТЕЛЬНО в профайле укажите свое настоящее имя в формате "Фамилия Имя". Правила форума Здесь

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум АСТ » SugarCRM » Как создать субпанель?


Как создать субпанель?

Сообщений 1 страница 5 из 5

1

SugarCRM 5
Как создать в разделе Проекты закладку (субпанель) Документы?
Закладка должна иметь функционал аналогичный разделу Документы.
Желательно создать так, чтобы была возможность обновлений SugarCRM после создания закладки.

0

2

mnv написал(а):

Написано как интегрировать в платформу:
http://www.sugarcrm.com/wiki/index.php?title=Subpanels

А вот как сделать доп.модулем(чтоб была возможность обновления)

0

3

Приводи пожалуйста помимо ссылки русскоязычное краткое описание как это сделать. с кодами и необходимыми нюансами

0

4

Итак, чтоб создать субпанель или закладку в разделе надо (так как делаю закладку документов в разделе проекты, то код

примеров про нее, причем описана сложная связь многие ко многим):
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'	,

0

5

Скоро напишу как правильно делать для того чтобы с обновлениями работало!
Кстати неплохо было б иметь возможность редактировать свои сообщения, а то как-то тяжеловато сразу все правильно написать!

0


Вы здесь » Форум АСТ » SugarCRM » Как создать субпанель?