ФорумФорум  КалендарьКалендарь  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  Вход  
Поиск
 
 

Результаты :
 
Rechercher Расширенный поиск
Последние темы
» Подтверждение о прочтении
автор worker8281 Сб Дек 27, 2014 1:05 pm

» Проблема с сессией
автор Murphy Ср Дек 03, 2014 5:20 pm

» Нужнга настройка SugarCRM
автор iliandr777 Пн Ноя 10, 2014 2:28 pm

» Отображение записей (адресатов) в списках адресатов
автор FatherMother Пн Авг 25, 2014 12:21 pm

» Нужен совет. Модуль с множеством одинаковых субпанелей.
автор Павел Пн Июл 28, 2014 12:55 pm

» Нужна помощь с опенкартом
автор manux86 Вс Фев 02, 2014 10:45 am

» вопрос работы насчет СУГАР на сервере
автор Meiir2 Пт Янв 31, 2014 8:46 am

» Интеграция с Google календарем от компании "Куб Три"
автор Dmitry.bereza Ср Авг 14, 2013 10:29 am

» настройка воронки продаж
автор EkaterinaGolovina Чт Июн 13, 2013 12:14 pm

Июнь 2018
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930 
КалендарьКалендарь
Баннеры
Яндекс цитирования статистика
Поддержка проекта
41001634550309

Поделиться | 
 

 Кастомизируем Joomla 1.5.x и SugarCRM 5.x.x

Перейти вниз 
АвторСообщение
Admin
Admin


Сообщения : 74
Очки : 71
Дата регистрации : 2010-08-23

СообщениеТема: Кастомизируем Joomla 1.5.x и SugarCRM 5.x.x   Ср Сен 15, 2010 7:00 pm

Несомненным достоинством свободного программного обеспечения является возможность расширения функционала этого самого обеспечения. Передо мной встала задача как это сделать в Joomla и SugarCRM. Обе эти системы сейчас широко используются. Joomla как известно представляет собой систему управления контентом, а SugarCRM «на сегодняшний день самая продвинутая и простая в использовании CRM-система»(с). Итак, мною были проделаны небольшие исследования в этой области, коими я и хочу с вами поделиться.
В Joomla присутствует великое множество типов плагинов, но среди них можно выделить несколько базовых:

* authentication
* content
* editors
* editors-xtd
* search
* system
* user
* xmlrpc


Рассмотрим базовые подробнее.

Authentication позволит вам залогиниться в Joomla из любого места, которое вам удобно, например, используя аккаунт Google или по LDAP, а может через аккаунт Twitter, так как он имеет открытый API. По умолчанию же данные для авторизации берутся из базы данных Joomla.
Content позволяет добавлять новую функциональность для отображаемого содержимого. Например, можно настроить «невидимость» email адресов или конвертировать URL в формат SEF.
С помощью плагина Editor можно видоизменять редактор контента.
Editor-XTD поможет вам добавить дополнительные кнопки в редактор контента. Например, кнопки Image, Pagebreak и Read more в стандартном редакторе Joomla — это дело рук этого плагина.
Search позволяет искать различный контент в различных компонентах. В Joomla уже реализованны поисковые плагины для компонент Articles, Contacts и Weblinks.
System – выполнение различных манипуляций с PHP кодом самой Joomla!Web site.
User плагин позволяет добавлять какие-либо действия, которые будут выполняться в определенное время для определенного пользователя. Например, выполнить что-нибудь при входе в систему пользователя Васи.
XML — RPC – обеспечение сервиса XML-RPC.

Пишем плагин

Для создания плагина нужно создать как минимум 2 файла: один — php, второй — xml файл. В xml файле находятся мета данные, инсталляционная информация и другие параметры плагина. Эти файлы необходимо положить в каталог /plugins согласно типу плагина, если он входит в число базовых, либо в новый созданный каталог. Например, если вы хотите дополнить функциональность аутентификации, то файлы необходимо положить в /plugins/authentication/, если функциональность системы, то в /plugins/system/ и так далее.

Ограничений на имя файла нет, но имя файла накладывает ограничения на содержимое плагина. Это касается имен классов, мы рассмотрим это далее.
Создадим тестовый системный плагин и назовем его Test.php.
Содержимое файла будет выглядеть примерно так:
Код:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
 /**
 * Example system plugin
 */
class plgSystemTest extends JPlugin
{
              /**
              * Constructor
              *
              * For php4 compatibility we must not use the __constructor as a constructor for plugins
              * because func_get_args ( void ) returns a copy of all passed arguments NOT references.
              * This causes problems with cross-referencing necessary for the observer design pattern.
              *
              * @access              protected
              * @param              object              $subject The object to observe
              * @param              array  $config  An array that holds the plugin configuration
              * @since              1.0
              */
              function plgSystemTest( &$subject, $config )
              {
                            parent::__construct( $subject, $config );

                              // Do some extra initialisation in this constructor if required
              }
                /**
              * Do something onAfterInitialise
              */
              function onAfterInitialise()
              {
                            // Perform some action
              }
 }

Рассмотрим код поподробнее.

Файл начинается с проверки defined( '_JEXEC' ) or die( 'Restricted access' ), которая предотвращает попытку запустить файл напрямую через URL. Это очень важная проверка, необходимая в целях безопасности. Так что не забудьте про неё.
Далее подключаем библиотеку с помощью jimport для определения функций класса JPlugin.
Сам плагин представляет собой класс, наследованный от JPlugin. Вы не можете дать классу произвольное имя, так как Joomla имеет строгое правило, по которому формируется имя класса. Имя зависит от имени самого php файла (о чем упоминалось выше) и составляется следующим образом:
Код:
plg + Имя каталога плагина с заглавной буквы + Имя файла с заглавной буквы

В нашем примере как нетрудно догадаться имя класса будет plgSystemTest.

Далее мы видим определение методов класса. Первым идет конструктор класса. Определять его не обязательно. В нем можно описать действия, которые будут выполняться при загрузке плагина. Это гарантирует вам выполнение этих действий даже если сам плагин не запускался ни разу.

Имена методов класса представляют собой имена событий (events), которые происходят в процессе работы Joomla. В нашем примере использовано событие onAfterInitialise, которое вызывается первым при старте работы Joomla. Более подробный список событий можно найти в API Execution Order на Documentation Wiki.

Таким образом, те действия, которые необходимо выполнить при возникновении определенного события, должны быть описаны в методе с именем данного события. Joomla! Framework автоматически зарегистрирует все методы вашего класса.

Местоположение, имя и методы плагина зависят от того, что вы хотите сделать. Следует отметить, что системные плагины (/plugins/system/) загружаются всегда при запуске Joomla! PHP, поэтому в них вы можете использовать любые возможные методы.

Какие же события могут возникать при работе Joomla? Вот некоторые из них:

Authentication

* onAuthenticate


Content

* onPrepareContent
* onAfterDisplayTitle
* onBeforeDisplayContent
* onBeforeContentSave (new in 1.5.4)
* onAfterContentSave (new in 1.5.4)


Editors

* onInit
* onGetContent
* onSetContent
* onSave
* onDisplay
* onGetInsertMethod


Editors XTD (Extended)

* onDisplay


Search

* onSearch
* onSearchAreas


System

* onAfterInitialise
* onAfterRoute
* onAfterDispatch
* onAfterRender


User

* onLoginUser
* onLoginFailure
* onLogoutUser
* onLogoutFailure
* onBeforeStoreUser
* onAfterStoreUser
* onBeforeDeleteUser
* onAfterDeleteUser


XML-RPC

* onGetWebServices



Теперь переходим к xml файлу. Наш пример test.xml выглядит так:

Код:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.2" type="plugin" group="system" method="upgrade">
              <name>System - Test</name>
              <author>Author</author>
              <creationDate>Month 2008< /creationDate>
              <copyright>Copyright © 2008 Holder. All rights reserved.</copyright>
              <license>GNU General Public License</license>
              <authorEmail>email</authorEmail>
              <authorUrl>url</authorUrl>
              <version>1.0.1</version>
              <description>A test system plugin</description>
              <files>
                            <filename plugin="example">example.php</filename>
              </files>
              <params>
                              <param name="example"
                              type="text"
                              default=""
                              label="Example"
                              description="An example text parameter" />
              </params>
</install>

Остановимся на нескольких важных тегах.

INSTALL
Здесь необходимо указать тип «plugin», имя группы (в нашем случае «system»), метод установки (мы указали «upgrade» для того чтобы плагин устанавливался поверх старой версии)

NAME
Здесь указывается имя плагина, которое может быть каким угодно. В нашем примере, для формирования имени мы использовали имя группы и тестовое предназначение самого плагина.

FILES
Имена файлов, в которых размещается ваш плагин. Если файлы лежат в дополнительных папках, то используйте тег

<folder></folder>



PARAMS
Здесь вы указываете произвольное количество параметров для вашего плагина.

Пакуем плагин

Все просто. Создаете zip архив из файлов вашего плагина (php и xml). Если использовались подкаталоги, то тоже добавляете их в архив.
Плагин готов.
Теперь переходим к SugarCRM.

Кастомизируем SugarCRM

На форуме разработчиков SugarCRM мною был задан вопрос: а как же создать плагин для этой системы. На что мне было сказано использовать SOAP и будет мне счастье.

Итак, для того чтобы SugarCRM выполнял то, что вы хотите, вам всего лишь необходимо научится общаться с ним через SOAP. Таким образом, ваше приложение получает возможность направить работу SugarCRM в нужном вам направлении.
Интеграция SugarCRM с Java приложениями

В Java очень хорошо реализована поддержка SOAP. Как же включить SOAP со стороны SugarCRM? Для этого можно использовать Apache Axis. Это платформа, в которой реализован SOAP согласно рекомендациям W3C (Консорциум Всемирной паутины). Нас интересует класс WSDL2Java, который автоматически создаст для SugarCRM все необходимые классы и типы данных для работы SOAP.

Итак, что нам нужно:

* JDK5 (или выше)
* SugarCRM 5
* Axis 1.4


После установки Axis необходимо перейти в каталог lib, в котором находятся все необходимые jar файлы. Далее нам нужно запустить класс «WSDL2Java» с указанием в качестве параметра уже существующего в SugarCRM wsdl файла. Допустим, что SugarCRM находится по адресу localhost/sugarcrm, тогда в Linux команды будут выглядеть так:
Код:
java -cp lib/axis.jar:lib/axis-ant.jar:lib/commons-discovery-0.2.jar:lib/commons-logging-1.0.4.jar:lib/jaxrpc.jar:lib/log4j-1.2.8.jar:lib/saaj.jar:lib/wsdl4j-1.5.1.jar
org.apache.axis.wsdl.WSDL2Java -o. -d Session -p org.beanizer.sugarcrm localhost/sugarcrm/soap.php?wsdl
-о куда генерируется пакет
-d определяет как будут генерироваться классы на сервере. В нашем случае Session означает, что для каждой сессии каждый раз будут создаваться новые экземпляры классов.
-p собственно имя пакета, который будет получен на выходе.

В случае успешного завершения команды в текущем каталоге должен появится пакет org.beanizer.sugarcrm, содержащий интерфейсы SOAP к SugarCRM.

Пишем Java client

Во-первых подключаем необходимые пакеты:
Код:
import java.security.MessageDigest;
import org.beanizer.sugarcrm.*;
Затем необходимо открыть порт к SugarCRM:
Код:
Sugarsoap service=new SugarsoapLocator();
SugarsoapPortType port=service.getsugarsoapPort

(new java.net.URL("http://localhost/sugarcrm/soap.php"));
Далее проходим процесс аутентификации на SugarCRM и получаем ID открытой сессии:
Код:
User_auth userAuth=new User_auth();
userAuth.setUser_name("myuser");
MessageDigest md =MessageDigest.getInstance("MD5");
String password=getHexString(md.digest("mypassword".getBytes()));
userAuth.setPassword(password);
userAuth.setVersion("0.1");
Set_entry_result loginRes=port.login(userAuth, "myAppName");
System.out.println("Error=" + loginRes.getError().getNumber());
String sessionID = loginRes.getId();
System.out.println("Session ID: " + sessionID);

Следует заметить, что должен быть MD5 хэш пароля в шестнадцатиричном формате.

Если у нас есть ID сессии, то теперь мы можем общаться с SugarCRM.
С помощью каких методов общаться можно найти в спецификации SugarCRM SOAP API (http://www.sugarcrm.com/wiki/index.php?title=SOAP_Documentation)
Вернуться к началу Перейти вниз
Посмотреть профиль http://easy-sugarcrm.forum2x2.ru
 
Кастомизируем Joomla 1.5.x и SugarCRM 5.x.x
Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: SugarCRM :: Статьи по установке и настройке SugarCRM-
Перейти: