Добавить Customer Company Information в AgentTicketZoom

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

Модератор: ykolesnikov

Ответить
marianna
OTRS Новобранец
Сообщения: 4
Зарегистрирован: 27 мар 2013, 09:16

Добавить Customer Company Information в AgentTicketZoom

Сообщение marianna » 27 мар 2013, 09:28

Дано:
OTRS 3.2.3
AgentTicketZoom:
1111.jpg
1111.jpg (70.49 КБ) 9836 просмотров
При нажатии по ссылке с ID клиента открывается AgentCustomerInformationCenter, где слева болтается Customer Company Information. Мне нужно, чтобы Customer Company Information был в AgentTicketZoom, и не приходилось бы кликать каждый раз по ID.
Последний раз редактировалось marianna 28 мар 2013, 06:09, всего редактировалось 1 раз.

marianna
OTRS Новобранец
Сообщения: 4
Зарегистрирован: 27 мар 2013, 09:16

Re: Добавить Customer Company Information в AgentTicketZoom

Сообщение marianna » 27 мар 2013, 10:27

Решено.
Редактируем AgentTicketZoom.pm
1. Сперва нужно подключить библиотеку с CustomerCompany в заголовке файла:

Код: Выделить всё

use Kernel::System::CustomerCompany;
2. В функции sub new {} получить параметры от объявленной библиотеки:

Код: Выделить всё

$Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);
3. Осталось теперь уже привязать данные к переменным и задать блок, в котором и будет отображаться информация о компании клиента в соответствующем DTL файле. Для этого прямо под блоком #show customer data (у меня, к примеру, строка 1338) вставляем следующий код:

Код: Выделить всё

my %CustomerCompanyData;
    if ( $Ticket{CustomerID} ) {
        %CustomerCompanyData = $Self->{CustomerCompanyObject}->CustomerCompanyGet(CustomerID=>$Ticket{CustomerID});
    }
    $Ticket{CustomerCompanyName}=$CustomerCompanyData{CustomerCompanyName};
    $Self->{LayoutObject}->Block(
        Name => 'CompanyTable',
        Data => \%Ticket,
    );
Как видите, я получила данные только для CustomerCompanyName, т.е. для названия компании и назвала блок CompanyTable (вы можете обозвать его иначе). В маппинге можно посмотреть названия переменных для остальных сведений. Например, CustomerCompanyStreet, CustomerCompanyCountry и т.п.

4. Осталось поправить dtl, отвечающий за разметку - AgentTicketZoom.dtl:

Код: Выделить всё

<div class="WidgetSimple">
                <div class="Header">
                        <h2>$Text{"Customer Company Information"}</h2>
                </div>
                <div class="Content">
<!-- dtl:block:CompanyTable -->
                        <label><strong>$Text{"Company"}: </strong></label>
                        $QData{"CustomerCompanyName"}
<!-- dtl:block:CompanyTable -->
                </div>
</div>
В итоге получится симпатичный блок справа с информацией о компании клиента. У меня div не получил стили для оформления текста, так что пришлось кустарным способом выделить жирным label. Возможно, нужно создавать отдельный fieldset с указанием класса, тогда он подцепит стили оттуда и все будет выглядеть красивенько. Ну, а меня пока устраивает и так :)

Не забудьте, что $Text{"Blablabla"} берет перевод из Languages, если попытаться писать кириллицей напрямую в dtl, возникнут проблемы с кодировкой. В ru.pm добавьте строку для Customer Company Information (у меня в 3.2.3 версии OTRS эта строка оказалась почему-то не переведена).
Последний раз редактировалось marianna 28 мар 2013, 06:10, всего редактировалось 2 раза.

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Добавить Customer Company Information в AgentTicketZoom

Сообщение alexus » 28 мар 2013, 02:36

С Вашего позволения перемещу в раздел HOWTO?
С уважением,
Алексей Юсов

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? Спросите меня как!

marianna
OTRS Новобранец
Сообщения: 4
Зарегистрирован: 27 мар 2013, 09:16

Re: Добавить Customer Company Information в AgentTicketZoom

Сообщение marianna » 28 мар 2013, 04:33

alexus писал(а):С Вашего позволения перемещу в раздел HOWTO?
Разумеется :) А я, в свою очередь, опишу подробней.

Ответить