Журнал LinuxFormat - перейти на главную

LXF91:SugarCRM

Материал из Linuxformat
Версия от 09:08, 28 ноября 2008; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Рафинированный SugarCRM. Устанавливаем и настраиваем открытую CRM-систему.


Содержание

SugarCRM: Как его настроить

ЧАСТЬ 2: Разбираясь с конфигурацией, Марк Бэйн покажет, как сломить упрямство SugarCRM и не сломать приложение (окончательно).

Итак, вы уже установили SugarCRM на ваш чистенький сервер или, на худой конец, ознакомились с демо-версией этой системы в Интернете (см. ссылку во врезке). Думаю, теперь вы согласитесь, что она вполне готова удовлетворить все потребности стандартного пользователя.



Однако вы-то, наверняка, нестандартный пользователь! И наверняка программа выглядит не так или говорит с вами на разных диалектах. Да и вообще, хоть она и подходит для вашего бизнеса, но не совсем. А раз так, поговорим сегодня о том, как настроить SugarCRM в соответствии с потребностями пользователя.

Смотреть и видеть

Обратите внимание на выпадающий список с надписью «Тема» (Theme) в нижней части экрана SugarCRM в вашем браузере. С его помощью можно менять внешний вид программы, выбирая одну из тем: их довольно много, от стильной и профессиональной White Sands до совершенно несуразной Awesome 80s (впрочем, это мое личное мнение: бывают ведь и любители розового и зеленого текста на черном фоне).

Теперь можно перелицевать SugarCRM. Выбор не слишком впечатляет? Тогда создадим собственную тему. Не с нуля, конечно: возьмем одну из существующих и подправим ее.

Напомню, в прошлый раз мы загрузили архив со свежей версией SugarCRM (на сегодняшний день это 4.5.0h) с сайта программы и распаковали его содержимое в корень web-сервера (или в каталог по вашему вкусу), а потом заменили имя каталога SugarOSFull-4.5.0h на более благозвучное.

Откройте окно терминала, перейдите (командой cd) в каталог с SugarCRM и наберите ls. На экране появится содержимое директории: подкаталоги и файлы. В глаза сразу же бросается, что файлы все написаны на PHP (удивляться нечему: на PHP написана и сама SugarCRM). Но нам пока не до этого. Темы находятся в подкаталоге themes, вот его содержимое:

 bainm@hector:/www/lxf > ls themes
 Awesome80s             Links               Sugar
 BoldMove               Love                SugarClassic
 Default                Paradise            SugarLite
 Default                Retro               Sunset
 FinalFrontier          RipCurl             VintageSugar
 GoldenGate             Shred               WhiteSands

Вы уже поняли: в каждом из подкаталогов – файлы соответствующей темы. Создадим еще одну.

Создать новую тему

Для начала скопируем папку с темой, взятой за основу для модификации, в новый каталог, например:

 bainm@hector:/www/lxf/themes> cp -r SugarClassic lxf

Разберемся, какие файлы используются для создания темы:

 bainm@hector:/www/lxf/themes> ls lxf
 calendar-win2k-cold-1.css header.html menu.js
 config.php header.php navigation.css
 cookie.js images style.css
 footer.php layout_utils.php

Самый главный из них – файл config.php. Именно он дает системе SugarCRM доступ к остальным файлам темы. В config.php много чего понаписано, но нам интересны две следующие строки:

 $theme_name = “Sugar Classic”;
 $theme_description = “Classic Sugar theme”;

Мы их отредактируем – заменим название темы и ее описание:

 $theme_name = “Linux Format”;
 $theme_description = “Linux Format theme”;

При следующем входе в систему вновь созданная тема Linux Format появится в списке тем. Пока она ничем не отличается от Classic SugarCRM, ведь мы изменили только имя. Пришла пора настоящих реформ!

Забраться в CSS

Теперь, когда мы создали новую тему и сообщили о ней программе, можно придать ей индивидуальный стиль. Для этого нужно кое-что поменять в файле… ясное дело, style.css.

В нем (согласно его расширению – Сascading Style Sheet, каскадная таблица стилей) находится таблица стилей, задающая цвета, шрифты и прочее. Наш урок посвящен не таблицам стилей, и CSS как таковыми мы заниматься не будем: рассмотрим лишь небольшой пример, а в остальном вы разберетесь сами.

Рассмотрим раздел, в котором определяется, как отображать гиперссылки:

 a:link, a:visited {
              color: #444444;
              font-size: 11px;
              text-decoration: underline;
 }
 a:hover {
              color: #666666;
              text-decoration: underline;
 }

Все это означает, что гиперссылки – как те, что вы уже видели, так и непосещенные – отображаются одним и тем же серым цветом, причем при наведении курсора на ссылку оттенок серого меняется на более светлый; и все ссылки всегда подчеркнуты. Давайте внесем некоторое разнообразие: добавим после строки text-decoration в разделе a:hover такую строку:

background-color:yellow; /*highlight the link*/

Чтобы увидеть результат этих изменений, не нужно входить в систему заново: просто обновите страничку. Теперь, при наведении курсора, фон гиперссылки меняется на желтый.

У тех, кто имел дело с таблицами стилей CSS, наверняка уже есть идеи по настройке внешнего вида темы на свой вкус. С остальными я поделюсь парой советов. Чтобы все ссылки отображались заглавны- ми буквами, добавим строку в раздел a:link:

text-transform: uppercase;

Может быть, вы не стремитесь к супер-эффектам, а ограничитесь заменой основных цветов экрана. Тогда загляните в раздел body. Он предоставляет немало возможностей – например, позволяет указать цвет фона страницы:

background-color: yellow;

Немного поэкспериментировав, вы добьетесь своего идеала. Можете и Awesome 80s привести в приличный вид. Однако ваши пользователи больше заинтересованы в том, чтобы SugarCRM говорила с ними на понятном им языке; и вам по силам им помочь.

Адаптироваться к бизнесу

Взглянув на экран SugarCRM, вы приметите ряд вкладок. Некоторые из них пригодятся в любой организации: Home (Главная), Contacts (Контакты), Notes (Заметки), Meetings (Встречи), Calendar (Календарь) и Tasks (Задачи). Есть и другие вкладки, которые могут использоваться торговыми организациями для учета товарооборота: Opportunities (Возможности), Cases (Объекты) и Leads (Направления).

Хорошо, если внутри вашей организации используется та же терминология. А если нет? Приучать коллектив использовать стандартные термины SugarCRM вместо тех, что они впитали с молоком матери? Погодите смеяться: сам знаю, что это утопия. Переламывать себя сотрудникам незачем, гораздо проще кое-что переделать в SugarCRM.

Представим себе фирму проката автомобилей. Вместо Направлений у них New business (Новый бизнес), вместо вкладки Возможности они используют Inquiries (Запросы), а вместо вкладки ОбъектыBookings (Бронирования). На этом языке они изъяснялись последние 20 лет, и будут продолжать изъясняться еще 20 лет. Уж лучше поменять названия вкладок!

К счастью, ничего сложного в этом нет – едва ли вы не сумеете отредактировать пару PHP-скриптов, сейчас скажу каких. Но сначала знайте: лучше этого не делать! И вот почему: при установке новой версии программы эти файлы могут быть перезаписаны, и вам придется вносить изменения заново. Так или иначе, файл перед вами: include/language/en_us.lang.php. Найдите в нем раздел, содержащий

  moduleList’ =>
  array (
  ‘Home’ => ‘Home’,
  ‘Dashboard’ => ‘Dashboard’,
  ‘Contacts’ => ‘Contacts’,
  ‘Accounts’ => ‘Accounts’,
  ‘Opportunities’ => ‘Opportunities’,
  ‘Cases’ => ‘Cases’,
  ‘Notes’ => ‘Notes’,
  ‘Calls’ => ‘Calls’,
  ‘Emails’ => ‘Emails’,
  ‘Meetings’ => ‘Meetings’,
  ‘Tasks’ => ‘Tasks’,
  ‘Calendar’ => ‘Calendar’,
  ‘Leads’ => ‘Leads’,

Этот массив представляет собой список вкладок. Как явствует из его имени, вкладки в SugarCRM называются «модулями», поскольку каждая реализуется отдельным модулем, но об этом чуть позже. Вы, поди, недоумеваете: как изменить названия вкладок, если нельзя редактировать файл, в котором они хранятся? Легко: создадим специальный файл, содержащий обновленные названия вкладок.

Обратите внимание на папку custom внутри каталога SugarCRM: в ней мы и займемся языковедением. Как вы уже сообразили, нам нужен файл custom/include/language/en_us.lang.php.

Я говорил вам, что этот урок – не про CSS; добавлю, что он и не про PHP. Достаточно сказать, что создается двумерный массив, он содержит названия вкладок, и в нем можно переименовывать существующие вкладки и добавлять новые. Для переименования трех вышеупомянутых вкладок достаточно добавить в этот файл следующие строки:

  $app_list_strings[‘moduleList’][‘Leads’] =New Business’;
  $app_list_strings[‘moduleList’][‘Opportunities’] = ‘Inquiries’;
  $app_list_strings[‘moduleList’][‘Cases’] = ‘Bookings’;

Осталось только сохранить его и обновить страничку в браузере. На месте трех старых вкладок появились новые – New Business, Inquiries и Bookings.

Вроде неплохо, но откройте любую из этих вкладок – и увидите, что содержимое-то осталось прежним. Например, на вкладке New Business (бывшей Leads) остались ссылки ‘Create Lead’, ‘List Leads’ и ‘New Lead’. Тут ваши сотрудники, пожалуй, окончательно запутаются! Значит, работа по настройке не окончена.

Мы уже знаем, что названия вкладок для текущего языка хранятся в файле include/language/en_us.lang.php, и изменить их можно через файл custom/include/language/en_us.lang.php, прописав в нем новые названия вкладок. Аналогично, каждая вкладка-модуль тоже имеет собственный языковой файл.

Вернемся в папку SugarCRM и найдем каталог modules. Именно в нем хранятся модули:

 bainm@hector:/www/lxf> ls modules
 Accounts
 ACL
 ACLActions
 ACLRoles
 Activities
 …

и т.д. Модуль Leads расположен в одноименном каталоге. Как и остальные модули, реализующие вкладки, этот модуль содержит свои языковые настройки в папке language:

 bainm@hector:/www/lxf> ls modules/Leads/language
 en_us.help.DetailView.html en_us.help.index.html
 en_us.help.EditView.html en_us.lang.php

Ну, вы поняли: файл en_us.lang.php содержит определения строковых констант для текущего языка.

 bainm@hector:/www/lxf> grep -i lead modules/Leads/language/
 en_us.lang.php| head -10
 ‘ERR_DELETE_RECORD’ => ‘en_us A record number must be specified
to delete the lead.’,
 ‘LBL_BACKTOLEADS’ => ‘Back To Leads’,
 ‘LBL_BUSINESSCARD’ => ‘Convert Lead’,
 ‘LBL_CONTACT_INFORMATION’ => ‘Lead Information’,
 ‘LBL_CONTACT_NAME’ => ‘Lead Name:’,
 ‘LBL_CONTACT_OPP_FORM_TITLE’ => ‘Lead-Opportunity:’,
 ‘LBL_CONTACT’ => ‘Lead:’,
 ‘LBL_CONVERTLEAD_BUTTON_KEY’ => ‘V’,
 ‘LBL_CONVERTLEAD_TITLE’ => ‘Convert Lead [Alt+V]’,
 ‘LBL_CONVERTLEAD’ => ‘Convert Lead’,

Как и основной файл языка системы, его редактировать не следует. Есть даже строки, менять которые категорически не рекомендуется:


 // НЕ ПОРТИТЕ ЭТИ СТРОКИ: ОНИ ЗАДАЮТ СООТВЕТСТВИЯ
 ‘db_last_name’ => ‘LBL_LIST_LAST_NAME’,
 ‘db_first_name’ => ‘LBL_LIST_FIRST_NAME’,
 ‘db_title’ => ‘LBL_LIST_TITLE’,
 ‘db_email1’ => ‘LBL_LIST_EMAIL_ADDRESS’,
 ‘db_account_name’ => ‘LBL_LIST_ACCOUNT_NAME’,
 ‘db_email2’ => ‘LBL_LIST_EMAIL_ADDRESS’,
 //КОНЕЦ ЗАПРЕТНЫХ СТРОК

Снова создадим файл custom/modules/Leads/language/en_us.lang.php с языковыми настройками.


  <?php
  $lead_single =New Business’;
  $lead_title = $lead_single . ‘es’;
  $mod_strings[‘LBL_BACKTOLEADS’] = ‘Back To ‘ . $lead_title;
  $mod_strings[‘LBL_DEFAULT_SUBPANEL_TITLE’] = $lead_title;
  $mod_strings[‘LBL_DUPLICATE’] = ‘Similar ‘ . $lead_title;
  $mod_strings[‘LBL_LIST_MY_LEADS’] = ‘My ‘ . $lead_title;
  $mod_strings[‘LBL_MODULE_NAME’] = $lead_title;
  $mod_strings[‘LBL_MODULE_TITLE’] = $lead_title .: Home’;
  $mod_strings[‘LBL_SELECT_CHECKED_BUTTON_LABEL’] = ‘Select
 Checked ‘ . $lead_title;
  $mod_strings[‘LBL_SELECT_CHECKED_BUTTON_TITLE’] = ‘Select
 Checked ‘ . $lead_title;
  $mod_strings[‘LNK_LEAD_LIST’] = $lead_title;
  $mod_strings[‘LBL_BUSINESSCARD’] = ‘Convert ‘ . $lead_single;
  $mod_strings[‘LBL_CONTACT_INFORMATION’] = $lead_single .
 ‘Information’;
  $mod_strings[‘LBL_CONTACT_NAME’] = $lead_single . ‘ Name:;
  $mod_strings[‘LBL_CONTACT_OPP_FORM_TITLE’] = $lead_single .-
 Opportunity:;
  $mod_strings[‘LBL_CONTACT’] = $lead_single .:;
  $mod_strings[‘LBL_CONVERTLEAD_TITLE’] = ‘Convert ‘ .
  $lead_single .[Alt+V];
  $mod_strings[‘LBL_CONVERTLEAD’] = ‘Convert ‘ . $lead_single;
  $mod_strings[‘LBL_LEAD_SOURCE_DESCRIPTION’] = $lead_single .
 ‘Source Description:;
  $mod_strings[‘LBL_LEAD_SOURCE’] = $lead_single . ‘ Source:;
  $mod_strings[‘LBL_LIST_CONTACT_NAME’] = $lead_single . ‘Name’;
  $mod_strings[‘LBL_VIEW_FORM_TITLE’] = $lead_single . ‘View’;
  $mod_strings[‘LBL_LIST_FORM_TITLE’] = $lead_single .List;
  $mod_strings[‘LBL_LIST_LEAD_SOURCE_DESCRIPTION’] = $lead_
 single . ‘ Source Description’;
  $mod_strings[‘LBL_LIST_LEAD_SOURCE’] = $lead_single . ‘Source’;
  $mod_strings[‘LBL_NEW_FORM_TITLE’] =New. $lead_single;
  $mod_strings[‘LBL_SEARCH_FORM_TITLE’] = $lead_single . ‘Search’;
  $mod_strings[‘LNK_NEW_LEAD’] = ‘Create ‘ . $lead_single;
  ?>

Сохраните этот файл и обновите текущую страницу в браузере. Но это еще не все. Нужно проверить, не содержат ли ссылок на этот модуль остальные модули. Например, в панели Mass Update на вкладке Opportunities (или Inquiries, если вы уже успели ее переименовать) остался текст ‘Lead Source:’. Беглый поиск в файле modules/Opportunities/language/en_us.lang.php выявит переменную, которую надо поместить в файл custom/modules/Opportunities/language/en_us.lang.php, чтобы поправить дело:

bainm@hector:/www/lxf> grep “Lead Source:” modules/Opportunities/language/en_us.lang.php ‘LBL_LEAD_SOURCE’ => ‘Lead Source:’,

Таким образом, в файлe n_us.lang.php для Opportunities нужно добавить следующую строку:

$mod_strings[‘LBL_LEAD_SOURCE’] = ‘New Business Source’;

Конечно, вручную менять значения переменных, раскиданных по разным файлам – не лучший способ, особенно если на презентации вашего продукта вам вдруг заявят: «Мы тут прикинули – вместо ‘New Business’ лучше написать ‘Fresh Business’».

Гораздо удобнее разместить все переменные в одном файле, например, custom/include/lxf_variables.php, а затем включать его, где понадобится. Ваши переменные могут выглядеть так:

 <?php
 $lead_single =New Business’;
 $lead_title = $lead_single . ‘es’;
 ?>

а в файле custom/modules/Opportunities/language/en_us.lang.php тогда появится следующий фрагмент кода:

 <?php
 require_once(‘custom/ include/lxf_variables.php’);
 $mod_strings[‘LBL_LEAD_SOURCE’] = $lead_single . ‘ Source’;
 ?>

Но я предупреждал: данный урок – не про PHP.

Озаглавить окно браузера

Под конец урока займемся заголовком окна браузера. Сейчас он такой: “SugarCRM – Commercial Open Source CRM”. Это как-то слабо связано с нашим проектом. Чтобы изменить его, добавим в файл custom/include/language/en_us.lang.php строку, меняющую значение переменной LBL_BROWSER_TITLE:

$app_strings[‘LBL_BROWSER_TITLE’] = ‘LXF – Customizing SugarCRM’;

Обычным манером, сохраните этот файл и обновите страничку – заголовок окна браузера изменится.

Менять, все менять!

Наше маленькое исследование SugarCRM показало: нет ничего такого, что нельзя было бы переделать по своему вкусу. Все приложение – лишь набор скриптов PHP, взаимодействующих с базой данных. Мы увидели, как легко создать (и модифицировать) новую тему. Меняли мы только цвет и стили оформления, но в каждой папке с темой есть каталог images, содержащий применяемые этой темой изображения, и пользователь может заменить их на свои собственные (см. врезку), и даже удалить все темы, кроме собственной (это пригодится, например, при продвижении вашего брэнда).

А как там с ограничениями? Просто упражняться с SugarCRM можно безгранично: ведь это же свободное ПО (разве что, как полагается, не удаляйте и не модифицируйте файлы, не предусмотрев резервной копии).

Зато для применения программы в коммерческой деятельности нужно учитывать положения лицензии SugarCRM Public License (SPL), это вариант лицензии Mozilla Public License, версия 1.1. Там указано, что можно менять, а что нельзя. Исходный код открыт, и менять можно абсолютно все, но:

  • 1 Измененные версии файлов должны быть общедоступны.
  • 2 Измененная программа должна сопровождаться документацией, описывающей изменения.
  • 3 К программе обязательно должна прилагаться копия лицензии SPL.
  • 4 Не взывайте к фирме SugarCRM Inc, если их новый релиз будет несовместим с вашей версией.

И еще кое-что: согласно лицензии SPL, нужно обязательно сохранять логотип ‘Powered by SugarCRM’ и информацию об авторских правах в нижней части страницы. А в остальном – все ваше.

Полный текст лицензии можно найти на http://www.sugarcrm.com/crm/SPL.

На сегодня все. Надеюсь, я сумел показать, как легко настраивается SugarCRM, даже если ваши знания PHP минимальны. Итак, за настройку! LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика