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

Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 12 дек 2014, 12:36
Mardoc
Используя эту статью viewtopic.php?f=4&t=1800#p9215 создал новый пункт меню в интерфейсе клиента.
Через конфигурацию системы я могу скрыть некоторые поля, но этого недостаточно, как можно создать еще и разные шаблоны dtl для дальнейшей кастомизации?

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 12 дек 2014, 12:47
alexus
Читать манаул разработчика. И укажите в подписи версию системы. Просто в версии OTRS 4 уже не DTL, a TT!

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 12 дек 2014, 13:30
merkushov
Дальше придётся вносить изменения в код OTRS. Самое простое решение для разных шаблонов, в базовом классе вынести имя шаблона в отдельный метод и переопределить метод в классе наследнике.

Класс наследник

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

# --
# Kernel/Modules/CustomerTicketMessageInternal.pm - модуль создания новой заявки для внутренних Клиентов
# --
# 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::Modules::CustomerTicketMessageInternal;

use base qw( Kernel::Modules::CustomerTicketMessage );

sub _template_name {'CustomerTicketMessageInternal'}

1;
Базовый класс

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

# --
# Kernel/Modules/CustomerTicketMessage.pm - to handle customer messages
# Copyright (C) 2001-2012 OTRS AG, http://otrs.org/
# --
# $Id: CustomerTicketMessage.pm,v 1.114 2012/11/20 14:53:45 mh Exp $
# --
# 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::Modules::CustomerTicketMessage;

sub _template_name {'CustomerTicketMessage'}

# всякий разный код

    # get output back
    return $Self->{LayoutObject}->Output(
        TemplateFile => $Self->_template_name(),
        Data         => \%Param,
    );

# всякий разный код

1;

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 12 дек 2014, 14:30
Mardoc
Создал файл CustomerTicketMessageInternal.dtl в /otrs/Kernel/Output/Htnl/My_company, в него поместил содержимое с CustomerTicketMessage. При входе в меню пишет Internal Server Error. Убираю файл CustomerTicketMessageInternal.dtl, просто белый экран ...что не так?
Команду perl /opt/otrs/bin/otrs.RebuildConfig.pl после создания файла выполнял.
OTRS 3.3.8

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 12 дек 2014, 14:53
Mardoc
Вопрос снимается, все получилось! Были проблемы с правами на файлы, в конфигах апача об этом и говорилось :)
Предлагаю добавить пост уважаемого merkushov к теме о кастомизации форм в рамках архитектуры, очень важное дополнение!

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 12 дек 2014, 15:13
Mardoc
Теперь возник следующий вопрос, а как передать динамические поля на новые формы? Через конфигурацию системы я добавляю динамические поля для CustomerTicketViewNew, но они не отображаются на моих новых шаблонах.... куда копать?

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 15 дек 2014, 14:52
Mardoc
merkushov, подскажите пожалуйста как вышли из данной ситуации??
Я так понял , что эти все параметры прописаны в XML файле, в том числе и параметр на привязку динамического поля.... но почему то они не появились в Конфигурации системы, хотя остальные все присутствуют... подскажите пожалуйста, в чем тут дело?

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 15 дек 2014, 17:05
Mardoc
Никто не отвечает , поэтому сам даю ответ на свой вопрос!
Вообщем для того, чтоб появились динамические поля на CustomerTicketMessageInternal, необходимо в файле ZCustomerTicketMessageInternal.xml в самом конце найти блок который отвечает за отображение Динамических полей

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

    <ConfigItem Name="Ticket::Frontend::CustomerTicketMessageInternal###DynamicField" Required="0" Valid="1">
        <Description Translatable="1">Dynamic fields options shown in the ticket message screen of the customer interface. Possible settings: 0 = Disabled, 1 = Enabled, 2 = Enabled and required. NOTE. If you want to display these fields also in the ticket zoom of the customer interface, you have to enable them in CustomerTicketZoom###DynamicField.</Description>
        <Group>MyCompany</Group>
        <SubGroup>Frontend::CustomerInternal::Ticket::ViewNew</SubGroup>
        <Setting>
            <Hash>
            </Hash>
        </Setting>
    </ConfigItem>
Перенесите этот код выше по файлу, например, после блока, который отвечает за приоритет заявки!
Выполните perl /opt/otrs/bin/otrs.RebuildConfig.pl.
Вуаля, в конфигурации системы в настройках нашей новой формы появился пункт меню для добавления динамических полей :)

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 16 дек 2014, 17:13
Mardoc
И вот новая проблема ...при создании заявки выдает ошибку о том, что нужен TicketID... кому то удалось это обойти?

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 17 дек 2014, 12:18
Mardoc
Разобрался, вся загвоздка была в xml файле, заново сам ручками наполнил из Ticket.xml и все заработало!

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 17 дек 2014, 12:51
ykolesnikov
А теперь бы, неплохо доработать с подробностями и новым опытом эту тему в HOWTOS. 8-)

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 28 янв 2015, 11:59
Mardoc
И вот снова проблема.... уведомление о создании новой заявки не приходит Агенту. Когда создаешь через стандартный модуль обычную заявку то все ок, а вот когда создаешь заявку через мою форму ZCustomerTicketMessageInternal, то такого уведомления нет почему то... где чего дописать нужно?

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 13 ноя 2018, 12:13
denionzz
Всем привет! После обновления до версии 6 перестали работать кастомные формы.
Конфиги форм в настройках системы появились и в меню они есть, но при вызове всегда возвращается стандартный шаблон CustomerTicketMassage, а не тот что указан. При внесении изменений в файл CustomerTicketMassage.pm не происходит никакой реакции, как будто otrs продолжает использовать старую конфигурацию.
bin/otrs.Console.pl Maint::Config::Rebuild запускал, конфиг ребилдится без ошибок, но реакции нету.
Может кто подскажет что еще упустил ? :)

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 13 ноя 2018, 12:21
alexus
Добрый день!

1. С какой версии обновляли? Как обновляли доработки?
2. Доработки лежат в Custom?
3. CustomerTicketMassage.pm - такого файла нет. Массаж - это на другие форумы :D
4. В версии 6 много что изменилось.

Re: Кастомизация форм в рамках архитектуры... продолжение

Добавлено: 13 ноя 2018, 15:44
denionzz
Обновлял с 4й версии. XML файлы созданые ранее подхватились нормально и редактирование конфигурации для моих модулей доступно и отрабатывает, я это вижу когда вызываю их, но вот сам файл шаблона почему то остался общим, хотя я внес нужные изменения в базовый модуль CustomerTicketMessage:
sub _template_name {'CustomerTicketMessage'}
# всякий разный код
# get output back
return $Self->{LayoutObject}->Output(
TemplateFile => $Self->_template_name(),
Data => \%Param,
);
# всякий разный код
1;

Такое впечатление что переменная не подставляется , а используется та что указана в базовом модуле, хотя в 4й версии otrs все отлинчо работало