31eef5fed32a39ffdc671662c90d3539.ppt
- Количество слайдов: 40
05. 09. 11 © 2010 Sugar. CRM Inc. All rights reserved. 1
ЛУЧШИЕ ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ПО ДОРАБОТКАМ В SUGAR CRM John Mertic Sugar. CRM Перевод: http: //sugartalk. ru 05. 09. 11 © 2010 Sugar. CRM Inc. All rights reserved. 2
Золотые правила доработок Используйте Конструктор модулей/Студию для работы по доработкам, если возможно. В противном случае, поместите код в отдельный каталог © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 3
Зачем это делать? Изменения в Конструкторе модулей / Студии хорошо поддерживаются и ими легко управлять Доработки отделены от поставляемого кода позволяет вам управлять индивидуальными изменениями через систему контроля версий (SVN, Git, etc) Файлы, хранящиеся в конструкторе модулей, не затрагиваются какими-либо обновлениями Sugar. CRM Исключением могут являться некоторые обновления, затрагивающие шаблоны метаданных для новых или удалённых полей. делает ваше приложение «Апргейд-безопасным» © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 4
Противопоказания Новые модули должны быть в каталоге modules Доработки Bean класса в модулях должны проводиться в оригинальном bean файле. В силу различных причин мы предпочитаем избегать этого подхода, поэтому обращаем ваше внимание на использование логических ловушек (hooks) и других техник. Также будет нужно вручную управлять этими доработками во время обновлений, и это еще один довод, чтобы избегать такого подхода. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 5
Посмотрим, что мы можем сделать © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 6
MVC Фреймворк MVC основывается на Модели, Виде и Контроллере © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 7
MVC Фреймворк – Анатомия запросы © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 8
MVC Фреймворк – Sugar. Application Управление загрузкой приложения; Загрузка многих параметров приложения по умолчанию: язык , тема, сессия; Обработка аутентификации пользователя; Загрузка контроллера. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 9
MVC Фреймворк - Sugar. Controller Обрабатывает все операции с модулем Содержит логику для обработки запросов, которые не требуют отображения Пример, сохранение записи Обеспечивает правильное представление всех запросов обеспечивает логику вида для действия с некоторым именем с помощью представления для другого действия может определять, должны ли мы использовать MVC или классические отображения © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 10
MVC Фреймворк – Sugar. Controller API Метод Описание public function pre_action() Вызывается перед действием action public function action_action() Вызывается для действия action public function post_action() Вызывается после действия action public function load. Bean() Загружает bean и запись для модуля. public function pre. Process() Используется для вставки некоторой логики в контроллер перед обработкой контроллера © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 11
MVC Фреймворк – Пример контроллера © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 12
MVC фреймворк– Бесконтроллерное отображение Если ваш модуль не использует какую-либо логику контроллера, используйте вместо него действия; Создайте файл под названием action_view_map. php со следующим содержимым. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 13
MVC Фреймворк - Sugar. View Содержит логику вида для действий Использует бэк-енд метаданных для отображений Edit, Detail, List, Popup (и Convert появится в Sugar 6. 0) Для остальных отображений, вы можете написать код для отображения и поместить его в modules/modulename/views/viewname. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 14
MVC Фрейм – Sugar. View API Method Description public function pre. Display() Вызывается до вывода чего-либо из отображения public function display() Вызывается для показа отображения protected function _get. Module. Tab() Возвращает имя модуля, вкладка которого выделена. (только начиная с Sugar 6. 0) protected function _get. Module. Title. Params() Возвращает навигационный трек , показываемый в верхней части отображения. (только начиная с Sugar 6. 0) © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 15
MVC Framework – Sugar. View API Property Description public $ss Объект Smarty public $module Имя модуля public $action Имя действия public $errors Массив ошибок, возвращаемых отображением или контроллером public $options Опции для отображения, определяемые массивом: Варианты выбора: show_header show_title show_subpanels show_search show_footer show_javascript © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 16
MVC Фреймворк – View Example © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 17
MVC Фреймворк – View. Detail Example © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 18
Куда я должен поместить свои индивидуальные разработки? Контроллеры Класс Custom. Module. Name. Controller extends Sugar. Controller Вид /custom/modules/Modulename/views/viewname. php Класс Custom. Module. Name. Viewname extends Modulename. Viewname. Если класс не существует, наследуется от Viewname или Sugar. View. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 19
Слой метаданных © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 20
Виды метаданных Editviewdefs. php/ detaiviewdefs. php/ quickcreatedefs. php Беспроводные варианты : wireless. editviewdefs. php Wireless. detailviewdefs. php Subpaneldefs. php Listviewdefs. php Wireless. listviewdefs. php Searchdefs. php Wireless. searchdefs. php Search. Fields. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 21
editviewdefs. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 22
subpaneldefs. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 23
searchdefs. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 24
Search. Fields. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 25
popupdefs. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 26
Куда я должен поместить свои индивидуальные разработки? Subpaneldefs custom/Extension/modules/Modulename/Ext/Layoutdefs /Name. Whatever. You. Want. php Нужно запустить «Быстрое восстановление» , после того как были сделаны изменения. Что-либо другое /custom/modules/Modulename/metadata Проверьте, чтобы Студия не уничтожила ваши изменения © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 27
Логические ловушки (hooks) © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 28
Logic Hook Types Тип Описание after_ui_frame Срабатывает после того, как фрейм был вызван, и перед тем как вызывается футер. Эта ловушка не получает доступа к текущему объекту bean (что означает, что вы не можете видеть изменения в значении записи) after_ui_footer Срабатывает после того, как футер был вызван. Эта ловушка не получает доступа к текущему объекту bean server_round_trip Срабатывает в конце каждой страницы Sugar. CRM. Она вызывается в методе sugar_cleanup() , который вызывается как функция завершения работы в Sugar. Эта ловушка не получает доступа к текущему объекту bean (что означает, что вы не можете видеть изменения в значении записи) before_delete Срабатывает перед тем, как запись удаляется с использованием Sugar. Bean: : mark_deleted() after_delete Срабатывает после того, как запись удаляется с использованием Sugar. Bean: : mark_deleted() before_restore Срабатывает перед отменой удаления с использованием Sugar. Bean: : mark_undeleted() method after_restore Срабатывает после отмены удаления с использованием Sugar. Bean: : mark_undeleted() method before_retrieve Срабатывает перед получением записи из БД с использованием Sugar. Bean: : retrieve() method. Эта ловушка не срабатывает, когда вы создаете новую запись. after_retrieve Срабатывает после получения записи из БД с использованием Sugar. Bean: : retrieve() method. Эта ловушка не срабатывает, когда вы создаете новую запись. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 29
Logic Hook Types (cont) Тип Описание before_save Срабатывает перед тем, как запись сохранена с использованием метода Sugar. Bean: : save(). Следует отметить один момент, что с конкретными модулями, такими как Cases и Bugs, человекопонятное ID записи (подобно полю case_number в модуле Case), недоступно в пределах вызова before_save , т. к. бизнес логика, которая вычисляет это значение попросту еще не выполнилась after_save Срабатывает после того, как запись сохранена с использованием метода Sugar. Bean: : save(). Следует отметить один момент, что с конкретными модулями, такими как Cases и Bugs, человекопонятное ID записи (подобно полю case_number в модуле Case), недоступно в пределах вызова before_save , т. к. бизнес логика, которая вычисляет это значение попросту еще не выполнилась process_record Срабатывает непосредственно перед получением результатов запроса в записи, которую сделали текущей. Это даёт разработчикам возможность проверить и прошить подлежащие этому запросу. Это также прекрасное место для установки значений в поля записи перед отображением в Detail. View или List View. Это событие не срабатывает в Edit. View. before_logout Срабатывает перед тем, как юзер разлогинивается из системы after_logout Срабатывает после того, как юзер разлогинивается из системы. Эта ловушка не получает доступ к текущему объекту bean ( что означает, что нельзя считать или изменить текущую запись) after_login Срабатывает после того, как пользователь успешно залогинился в системе. before_login Срабатывает перед тем, как юзер логинится в системе. Эта ловушка не получает доступ к текущему объекту bean ( что означает, что нельзя считать или изменить текущую запись) login_failed Срабатывает, если попытка логина провалилась. Эта ловушка не получает доступ к текущему объекту bean ( что означает, что нельзя считать или изменить текущую запись) © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 30
Типы логических ловушек (новое в 6. 0) Тип Описание after_relationship_add Срабатывает после того, как было установлено отношение между двумя записями. Вызывается для обоих записей, участвующих в отношении. after_relationship_delete Срабатывает после того, как отношение между двумя записями было удалено. Вызывается для обоих записей, участвующих в отношении. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 31
logic_hooks. php Параметры для определения логической ловушки. Параметр 1 – индекс для сортировки, использующийся для сортировки массивов определений логических ловушек, перед тем как их обрабатывают. Параметр 2 - Строковое имя для идентификации ловушки Параметр 3 – Путь к PHP файлу для включения, который содержит код логической ловушки. Параметр 4 – Имя PHP класса, методом которого является ловушка. Параметр 5 – Имя PHP метода ловушки. © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 32
Account. Hooks. php © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 33
Куда я должен поместить доработки? Логические ловушки уровня приложения /custom/modules/ Логические ловушки уровня модуля /custom/modules/Modulename/ © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 34
Темы © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 35
Карта дерева каталогов css/ - содержит все css файлы images/ - содержит все рисунки js/ - содержит все файлы js. tpls/ - шаблоны smarty themedef. php файл определения. © 2009 Sugar. CRM Inc. All rights reserved. 12/30/08 36
Темы могут наследоваться от других тем Модель наследования тем © 2009 Sugar. CRM Inc. All rights reserved. 12/30/08 37
Allow upgrade-safe modifications to themes Все темы могут быть модифицированы заменой файлов в custom/theme/
Ресурсы http: //developers. sugarcrm. com Buy my book! © 2010 Sugar. CRM Inc. All rights reserved. 05. 09. 11 39
Спасибо, что пришли 05. 09. 11 © 2010 Sugar. CRM Inc. All rights reserved. 40


