Интеграция с Joomla
Модератор: ykolesnikov
Интеграция с Joomla
Никто не пробовал интегрировать OTRS с Joomla? Пользователи регистрируются на сайте, для работы с OTRS нужна ещё одна регистрация не удобно...
Нашёл проект Cognidox OTRS-Joomla-Gateway. Но там не реализована совместная база данных пользователей.
Есть решение проблемы?
Нашёл проект Cognidox OTRS-Joomla-Gateway. Но там не реализована совместная база данных пользователей.
Есть решение проблемы?
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
Удалось ли кому разобраться с этим вопросом?
Я так понял, что проще всего переписать генерацию/проверку паролей в OTRS и сделать скрипт синхронизации баз данных или просто подключить внешнюю базу данных.
Или при подключении внешней базы данных проверка паролей как-то гибко настраивается? подскажите пожалуйста.
Я так понял, что проще всего переписать генерацию/проверку паролей в OTRS и сделать скрипт синхронизации баз данных или просто подключить внешнюю базу данных.
Или при подключении внешней базы данных проверка паролей как-то гибко настраивается? подскажите пожалуйста.
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Гуру
- Сообщения: 5192
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 92 раза
- Поблагодарили: 82 раза
Re: Интеграция с Joomla
Cognidox OTRS-Joomla-Gateway предоставляет интерфейс.
А настройка базы клиентов - на ваш вкус. Можете клиентов заводить в жумле и в качестве бекенда OTRS указать эту базу
А настройка базы клиентов - на ваш вкус. Можете клиентов заводить в жумле и в качестве бекенда OTRS указать эту базу
С уважением,
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
Да, когнидокс подойдет в данный момент, но мне не известно, как долго он будет обновляться, будет ли поддерживать все плюшки новых версий otrs, динамические поля и т.п. (подозреваю, например, что те же динамические поля уже не поддерживает).
Вероятно, я что-то не понимаю, был бы признателен за любую помощь.
Это понятно, но в базе Joomla пароли хранятся с солью и методом, скорее всего отличающимся от OTRS. Таким образом просто напросто не сработает логин в OTRS по базе в джумле.А настройка базы клиентов - на ваш вкус. Можете клиентов заводить в жумле и в качестве бекенда OTRS указать эту базу
Вероятно, я что-то не понимаю, был бы признателен за любую помощь.
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Решение: Интеграция с Joomla
Ну что же. Потрачена уйма времени, но решение получено. Постараюсь описать, чтобы такой же несчастный как я смог заняться чем-то более полезным.
Итак, интеграция проходит в два шага.
1. Подключение внешней базы данных.
Об этом много где написано, но даже из этого многого пришлось долго и упорно собирать целостную картину.
Ссылка на документацию: http://otrs.github.io/doc/manual/admin/ ... kends.html
Чтобы подключить новую базу в файле Kernel/Config.pm вставляем такой блок (копипастится из дефолтного конфига, например):
#обратите внимание, CustomerUser у нас уже есть в дефолте. поэтому здесь испльзуется CustomerUser1 , а далее еще и Table1 везде. Можно авторизоваться по сразу нескольким разным базам данных, для этого просто увеличиваем цифру в названии переменной на единицу и делаем далее по аналогии
2.Написание собственного модуля авторизации
Сначала подготовимся. В системе должна быть установлена библиотека phpass , точнее ее перловская реализация Authen::Passphrase::PHPass http://www.openwall.com/phpass/
Можно, конечно, самому написать кодировщик пароля в хеш. Но я перл впервые в жизни вижу, поэтому решил воспользоваться готовым.
Копируем файл System/CustomerAuth/DB.pm как DBJ.pm .
В нем в начале подключаем модуль Authen::Passphrase::PHPass:
Затем ищем класс/функцию или как это здесь называется , sub Auth
и в нем находим кучу if else в которых в зависимости от значения переменной type происходит хеширование пароля, введенного пользователем ($Pw) и сравнение его с паролем из базы данных $GetPw
Используя библиотеку PHPass мы можем сделать все в пару строк:
Я не программист и с перлом совершенно не знаком, поэтому не факт, что указанное выше работает везде и со всем.
В частности, пароли, захешированные методом, который использовался в джумле до PHPass могут не пройти (для себя я решил, что попрошу пользователей сменить пароль на хешируемый более надежными средствами, чем md5).
Итак, интеграция проходит в два шага.
1. Подключение внешней базы данных.
Об этом много где написано, но даже из этого многого пришлось долго и упорно собирать целостную картину.
Ссылка на документацию: http://otrs.github.io/doc/manual/admin/ ... kends.html
Чтобы подключить новую базу в файле Kernel/Config.pm вставляем такой блок (копипастится из дефолтного конфига, например):
#обратите внимание, CustomerUser у нас уже есть в дефолте. поэтому здесь испльзуется CustomerUser1 , а далее еще и Table1 везде. Можно авторизоваться по сразу нескольким разным базам данных, для этого просто увеличиваем цифру в названии переменной на единицу и делаем далее по аналогии
Код: Выделить всё
$Self->{CustomerUser1} = {
Name => 'Joomla database',
Module => 'Kernel::System::CustomerUser::DB',
Params => {
DSN => 'DBI:mysql:database=ИМЯ_ВНЕШНЕЙ_БАЗЫ_ДАННЫХ;host=localhost',
User => 'root',
Password => 'ПАРОЛЬ_ОТ_БД',
Table => 'jum_users',
#здесь jum_users - это таблица users из джумлы.
#далее идут стандартные настройки
# customer unique id
CustomerKey => 'email',
# customer #
CustomerID => 'id',
#CustomerValid => 'block',
CustomerUserListFields => ['id', 'name', 'email'],
CustomerUserSearchFields => ['name', 'username', 'email'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['email'],
CustomerUserNameFields => ['name'],
CustomerUserEmailUniqCheck => 1,
# # admin can change customer preferences
AdminSetPreferences => 0,
#а это маппинг, здесь я всех пользователей логиню только по емейлу и емейл же считаю уникальным идентификатором. по UserLogin , кстати, выводится информация в окне "информация о клиенте"
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
[ 'UserTitle', 'Name of user', 'name', 1, 0, 'var', '', 1 ],
[ 'UserLogin', 'Username', 'email', 1, 1, 'var', '', 1 ],
[ 'UserPassword', 'Password', 'password', 0, 1, 'var', '', 1 ],
[ 'UserEmail', 'Email', 'email', 1, 1, 'var', '', 1 ],
[ 'UserCustomerID', 'CustomerID', 'email', 0, 1, 'var', '', 1 ],
[ 'LicenseDate', 'License expiration date', 'usertype', 0, 0, 'var', '', 1 ],
],
# default selections
Selections => {
UserTitle => {
'Mr.' => 'Mr.',
'Mrs.' => 'Mrs.',
},
},
};
#Ниже идет настройка авторизации, где мы указываем из какой таблицы какие данные мы черпаем и какой модуль авторизации мы будем использовать. Я указал свой модуль авторизации - DBJ . email и password - это столбцы в таблице, которые будут испльзованы для логина и сверки с хешем пароля.
# This is the auth. module against the otrs db
$Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::DBJ';
$Self->{'Customer::AuthModule::DBJ::Table1'} = 'jum_users';
$Self->{'Customer::AuthModule::DBJ::CustomerKey1'} = 'email';
$Self->{'Customer::AuthModule::DBJ::CustomerPassword1'} = 'password';
# password crypt type (bcrypt|sha2|sha1|md5|crypt|plain) в родном файле авторизации по db переменная type - это триггер, позволяющий выбрать тип шифрования. В Joomla 2 и выше используется шифрование с помощью библиотеки phpass, поэтому можно написать отдельный обработчик, который будет срабатывать по триггеру joomla. хотя ниже я приведу код DBJ файла, в котором переменная type вообще не используется
$Self->{'Customer::AuthModule::DBJ::CryptType1'} = 'joomla';
$Self->{'Customer::AuthModule::DBJ::DSN1'} = "DBI:mysql:database=ИМЯ_БАЗЫ_ДАННЫХ;host=localhost";
$Self->{'Customer::AuthModule::DBJ::User1'} = "root";
$Self->{'Customer::AuthModule::DBJ::Password1'} = "ПАРОЛЬ";
}
Сначала подготовимся. В системе должна быть установлена библиотека phpass , точнее ее перловская реализация Authen::Passphrase::PHPass http://www.openwall.com/phpass/
Можно, конечно, самому написать кодировщик пароля в хеш. Но я перл впервые в жизни вижу, поэтому решил воспользоваться готовым.
Копируем файл System/CustomerAuth/DB.pm как DBJ.pm .
В нем в начале подключаем модуль Authen::Passphrase::PHPass:
Код: Выделить всё
# --
# Kernel/System/CustomerAuth/DB.pm - provides the db authentication
# Copyright (C) 2001-2014 OTRS AG, http://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::CustomerAuth::DBJ;
use strict;
use warnings;
use Crypt::PasswdMD5 qw(unix_md5_crypt);
use Digest::SHA;
use Authen::Passphrase::PHPass;
и в нем находим кучу if else в которых в зависимости от значения переменной type происходит хеширование пароля, введенного пользователем ($Pw) и сравнение его с паролем из базы данных $GetPw
Используя библиотеку PHPass мы можем сделать все в пару строк:
Код: Выделить всё
#создаем объект phpass, передавая ему хеш.
my $ppr = Authen::Passphrase::PHPass->from_crypt($GetPw);
#Просим проверить, а соответствует ли пароль $Pw указанному выше Хешу из БД джумлы
if($ppr->match($Pw)) {$PassCorrect = 'true'};
В частности, пароли, захешированные методом, который использовался в джумле до PHPass могут не пройти (для себя я решил, что попрошу пользователей сменить пароль на хешируемый более надежными средствами, чем md5).
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
PS кстати, для отладки очень удобно в файле DBJ.pm выставить переменную Debug=1 (по умолчанию она там определена равной нулю).
После этого в админке OTRS в логе системы можно увидеть, все, что выводится в этом участке кода (я его вот ниже даже сам поправил, чтобы инфа была более читаемой:
После этого в админке OTRS в логе системы можно увидеть, все, что выводится в этом участке кода (я его вот ниже даже сам поправил, чтобы инфа была более читаемой:
Код: Выделить всё
if ( $Self->{Debug} > 0 ) {
$Self->{LogObject}->Log(
Priority => 'notice',
Message => "CustomerUser: '$User' tried to authenticate with Pw !-!: '$Pw' "
. "(Login-UserID: $UserID/ CryptedPw: $CryptedPw/GetPw: $GetPw/Salt: $Salt/Addr: $RemoteAddr)",
);
}
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
Даю поправку для OTRS 4.0
Внимательнее смотрите на шаблон для записи в Config.pm
Дело в том, что появился новый параметр, который может сэкономить кучу нервных клеток:
Если ссылаетесь на внешнюю БД без соответствующих полей, то нужно разкомментировать ForeignDB и присвоить единицу. Тогда из логов исчезнет такая ошибка:
Для тех, кто разбирается также плохо в перле, как я, вот здесь в коде ошибка:
Переменная $PassCorrect не объявлена.
Вот так будет работать:
Внимательнее смотрите на шаблон для записи в Config.pm
Дело в том, что появился новый параметр, который может сэкономить кучу нервных клеток:
Код: Выделить всё
Table => 'customer_user',
# ForeignDB => 0, # set this to 1 if your table does not have create_time, create_by, change_time and change_by fields
Также DB.pm в 4.0 сильно изменился, поэтому аккуратно нужно вносить изменения, нельзя просто скопировать старый DBJ.pm , нужно аккуратно слить с новым DB.pmUnknown column 'create_time' in 'field list', SQL: 'SELECT name, email, password, email, email, usertype, create_time, create_by, change_time, change_by, email FROM.........
Для тех, кто разбирается также плохо в перле, как я, вот здесь в коде ошибка:
Код: Выделить всё
#создаем объект phpass, передавая ему хеш.
my $ppr = Authen::Passphrase::PHPass->from_crypt($GetPw);
#Просим проверить, а соответствует ли пароль $Pw указанному выше Хешу из БД джумлы
if($ppr->match($Pw)) {$PassCorrect = 'true'};
Вот так будет работать:
Код: Выделить всё
#создаем объект phpass, передавая ему хеш.
my $ppr = Authen::Passphrase::PHPass->from_crypt($GetPw);
my $PassCorrect = 'false'
#Просим проверить, а соответствует ли пароль $Pw указанному выше Хешу из БД джумлы
if($ppr->match($Pw)) {$PassCorrect = 'true'};
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Гуру
- Сообщения: 5192
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 92 раза
- Поблагодарили: 82 раза
Re: Интеграция с Joomla
Вообще-то он всегда был !radioagent писал(а):Внимательнее смотрите на шаблон для записи в Config.pm
Дело в том, что появился новый параметр, который может сэкономить кучу нервных клеток:
С уважением,
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
это просто ад
Начиная с Joomla 3.2, кажется, они переехали с phpass на bcrypt
Соответственно приведенный выше метод не годится; Да и встроенный bcrypt в стандартной реализации OTRS дает другой вид хеша.
Меня , очевидно, ждет разбор этого кода: https://github.com/joomla/joomla-cms/bl ... #L296-L387
Но ну не может же быть так, чтобы никто этого еще не реализовывал. Пожааааалуйста, ну поделитесь маааленьким кусочком кода для CustomerAuth плагина, который выдает хеш, соответствующий джумловскому мучительно больно писать новый код на перле и копаться в сорсах джумлы.
Заранее спасибо.
Начиная с Joomla 3.2, кажется, они переехали с phpass на bcrypt
Соответственно приведенный выше метод не годится; Да и встроенный bcrypt в стандартной реализации OTRS дает другой вид хеша.
Меня , очевидно, ждет разбор этого кода: https://github.com/joomla/joomla-cms/bl ... #L296-L387
Но ну не может же быть так, чтобы никто этого еще не реализовывал. Пожааааалуйста, ну поделитесь маааленьким кусочком кода для CustomerAuth плагина, который выдает хеш, соответствующий джумловскому мучительно больно писать новый код на перле и копаться в сорсах джумлы.
Заранее спасибо.
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Гуру
- Сообщения: 5192
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 92 раза
- Поблагодарили: 82 раза
Re: Интеграция с Joomla
Вся интеграция с внешними системами делается через веб-сервисы с минимальными доработками исходного кода. Не стоит изобретать велосипед.
С уважением,
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
Мне не нужна ни в коем случая никакая интеграция. Мне просто нужно подсосать базу данных пользователей из базы другого сайта.
Каким образом web-services могут быть мне полезны я не понимаю, т.к. никаких примеров решения схожей с моей задачи найти не удалось.
Каким образом web-services могут быть мне полезны я не понимаю, т.к. никаких примеров решения схожей с моей задачи найти не удалось.
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Гуру
- Сообщения: 5192
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 92 раза
- Поблагодарили: 82 раза
Re: Интеграция с Joomla
Что значит - "подсосать"? Куда, зачем и каким образом это должно выглядеть?
С уважением,
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
Речь идет о стандартном функционале OTRS:
авторизация клиентов по внешней базе данных (в моем случае по нескольким внешним базам данных).
Фактически мне нужно: в интерфейсе агента видеть какую-то информацию о пользователе из базы данных пользователей Joomla.
Также нужно, чтобы пользователи работали с интерфейсом OTRS, имея возможность авторизовываться в OTRS по данным своим из Джумлы.
Есть OTRS гейтвей для джумлы. Но он не фонтан: ограниченный функционал создания заметки, невозможность просмотра истории обращений пользователем. Невозможность работы с Компаниями пользователей.
Поэтому я замаппил базу пользователей в настройках otrs, осталось сделать авторизацию. А в ней только одна загвоздка - разный способ хеширования паролей в otrs (не смотря на то, как много типов он поддерживает) и в joomla.
Я, конечно, никого не прошу за меня написать код, но вдруг кто уже это реализовывал и не жалко поделиться кодом
Если я допилю, тоже поделюсь, как делал у
авторизация клиентов по внешней базе данных (в моем случае по нескольким внешним базам данных).
Фактически мне нужно: в интерфейсе агента видеть какую-то информацию о пользователе из базы данных пользователей Joomla.
Также нужно, чтобы пользователи работали с интерфейсом OTRS, имея возможность авторизовываться в OTRS по данным своим из Джумлы.
Есть OTRS гейтвей для джумлы. Но он не фонтан: ограниченный функционал создания заметки, невозможность просмотра истории обращений пользователем. Невозможность работы с Компаниями пользователей.
Поэтому я замаппил базу пользователей в настройках otrs, осталось сделать авторизацию. А в ней только одна загвоздка - разный способ хеширования паролей в otrs (не смотря на то, как много типов он поддерживает) и в joomla.
Я, конечно, никого не прошу за меня написать код, но вдруг кто уже это реализовывал и не жалко поделиться кодом
Если я допилю, тоже поделюсь, как делал у
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
-
- OTRS Гуру
- Сообщения: 5192
- Зарегистрирован: 20 сен 2010, 18:17
- Откуда: Москва
- Благодарил (а): 92 раза
- Поблагодарили: 82 раза
Re: Интеграция с Joomla
Придётся модифицировать модуль авторизации в OTRSradioagent писал(а):Поэтому я замаппил базу пользователей в настройках otrs, осталось сделать авторизацию. А в ней только одна загвоздка - разный способ хеширования паролей в otrs (не смотря на то, как много типов он поддерживает) и в joomla.
С уважением,
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
Алексей Юсов
Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal
Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!
-
- OTRS Новобранец
- Сообщения: 22
- Зарегистрирован: 05 апр 2013, 15:13
- Контактная информация:
Re: Интеграция с Joomla
Ну да. Выше я описал, как это сделать для Joomla < 3.2
Сейчас вот новый вызов
Ладно, буду пилить. Потом выложу здесь результат.
Сейчас вот новый вызов
Ладно, буду пилить. Потом выложу здесь результат.
С уважением,
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD
Игорь
---------------------------------------------------------------------
Использую свежайший релиз OTRS Help Desk на FreeBSD