Страница 1 из 1

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

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

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

Добавлено: 27 мар 2013, 10:27
marianna
Решено.
Редактируем 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 эта строка оказалась почему-то не переведена).

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

Добавлено: 28 мар 2013, 02:36
alexus
С Вашего позволения перемещу в раздел HOWTO?

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

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