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

Создание шаблонов заявок. Часть 1 (обновл. для v.4.x)

Добавлено: 05 ноя 2012, 14:18
firebolt
Создаем шаблоны заявок на странице создания новой телефонной заявки в агентской части OTRS.
screen.png
screen.png (21.7 КБ) 36263 просмотра
Для того, чтобы включить кнопки на странице создания телефонной заявки в агентской части делаем следующее:

Создаем файл кастомного перевода - переходим в ./otrs/Kernel/Language и копируем xx_Custom.pm в ru_Custom.pm. В созданном файле в первых строках меняем имя пакета с xx на ru и вставляем свой код (я привожу свой):

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

 $Self->{Translation}->{'Templates'} = 'Шаблоны служебок';		
 $Self->{Translation}->{'Sysblock'} = 'Ремонт системного блока';
 $Self->{Translation}->{'Periphery'} = 'Ремонт периферийного оборудования';
 $Self->{Translation}->{'BodySysblock'} = 'Прошу вас произвести ремонт системного блока компьютера...';
 $Self->{Translation}->{'BodyPeriphery'} = 'Прошу вас произвести ремонт (вместо этого текста указать...';
Если у вас уже имеется файл кастомного перевода от версии OTRS 3.х, то примите во внимание вот это

Затем делаем следующие изменения

Для версии 3.х

Открываем файл ./otrs/Kernel/Output/HTML/Standard/AgentTicketPhone.dtl и снимаем комментирование с секции, начинающейся со слов

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

# example template for customizations, see hidden form at the end of the file
У меня это была строка №44
Заполняем нужным нам содержимым. Не забывайте изменять номер шаблона в строке указания действия onclick="$('#Template1').submit(). Я вставляю свое готовое c созданными двумя кнопками.

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

# example template for customizations, see hidden form at the end of the file
 <label>$Text{"Templates"}:</label>
 <div class="Field">
 <button type="button" onclick="$('#Template1').submit()" value="$Text{"Sysblock"}">$Text{"Sysblock"}</button>
 <button type="button" onclick="$('#Template2').submit()" value="$Text{"Periphery"}">$Text{"Periphery"}</button>
 </div>
 <div class="Clear"></div>
Строки $Text{"Sysblock"} и другие мы берем из созданного файла кастомного перевода ru_Custom.pm. Вместо этих ключей на сформированной странице будет вставлено содержимое, указанное в этом файле перевода.

Как указано в начале секции, переходим в конец этого файла и снимаем комментирование c секции

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

# example template form for customizations
<form action="$Env{"CGIHandle"}" method="post" enctype="multipart/form-data" id="Template1">
 <input type="hidden" name="Action" value="$Env{"Action"}"/>
 <input type="hidden" name="Subaction" value="StoreNew"/>
 <input type="hidden" name="FormID" value="$QData{"FormID"}"/>
 <input type="hidden" name="ExpandCustomerName" value="1"/>
 <input type="hidden" name="Subject" value="$Text{"Sysblock"}"/>
 <input type="hidden" name="Body" value="$Text{"BodySysblock"}"/>
 <input type="hidden" name="TypeID" value="2"/>
</form>
Здесь описаны действия, которые будут выполняться при нажатии на созданные прежде кнопки. Копируем нужное количество форм и заполняем нужным нам содержимым, не забывая изменять Template id.

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

<form action="$Env{"CGIHandle"}" method="post" enctype="multipart/form-data" id="Template1">
Строка <input type="hidden" name="TypeID" value="2"/> была добавлена для автовыбора типа заявки. Этот хитрый трюк был осуществлен путем инспектирования средствами вэб-браузера элемента "Тип" на сформированной html-странице, определения типа элемента и поиска этого типа в коде страницы. Таким образом мы определили, что вписать в name="TypeID" и какое значение выставить в value="2"


Для версии 4.0

Читайте инструкцию для версии 3.х. Отличия заключаются в следующем:

Редактировать нужно будет файл ./otrs/Kernel/Output/HTML/Standard/AgentTicketPhone.tt
Правка начинается со строки №62
Вместо значения "$Text{"Sysblock"}" нужно вводить значение "[% Translate("Sysblock") | html %]". Отличия выделены красным цветом.

Примеры созданных кнопок:

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

<button type="button" onclick="$('#Template1').submit()" value="[% Translate("Sysblock") | html %]">[% Translate("Sysblock") | html %]</button>
<button type="button" onclick="$('#Template2').submit()" value="[% Translate("Periphery") | html %]">[% Translate("Periphery") | html %]</button>
Примеры выполняемых кнопками действий:

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

# example template form for customizations
<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="Template1">
   <input type="hidden" name="Action" value="[% Env("Action") %]"/>
   <input type="hidden" name="Subaction" value="StoreNew"/>
   <input type="hidden" name="FormID" value="[% Data.FormID | html %]"/>
   <input type="hidden" name="ExpandCustomerName" value="1"/>
   <input type="hidden" name="Subject" value="[% Translate("Sysblock") | html %]"/>
   <input type="hidden" name="Body" value="[% Translate("BodySysblockAgent") | html %]"/>
   <input type="hidden" name="TypeID" value="2"/>
</form>

<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="Template2">
   <input type="hidden" name="Action" value="[% Env("Action") %]"/>
   <input type="hidden" name="Subaction" value="StoreNew"/>
   <input type="hidden" name="FormID" value="[% Data.FormID | html %]"/>
   <input type="hidden" name="ExpandCustomerName" value="1"/>
   <input type="hidden" name="Subject" value="[% Translate("Periphery") | html %]"/>
   <input type="hidden" name="Body" value="[% Translate("BodyPeripheryAgent") | html %]"/>
   <input type="hidden" name="TypeID" value="3"/>
</form>
Проверяем. Радуемся.

Если остаются вопросы, смотрим это видео. Если после просмотра вопросы остались, пишите в личку.

Спасибо merkushov'у за помощь c файлом кастомного перевода.

Re: Создание шаблонов заявок. Часть 1

Добавлено: 07 июн 2013, 22:59
alexus
Все проблемы и вопросы - в другие разделы форума.

Re: Создание шаблонов заявок. Часть 1 (обновл. для v.4.x)

Добавлено: 10 ноя 2015, 12:17
orient_19
Здравствуйте!
Приведенное выше руководство работает и для OTRS 5.02, однако изменился путь к файлам *.tt - теперь они находятся в директории "/opt/otrs/Kernel/Output/HTML/Templates/Standard".

Re: Создание шаблонов заявок. Часть 1 (обновл. для v.4.x)

Добавлено: 10 ноя 2015, 13:47
ykolesnikov
orient_19 писал(а):Здравствуйте!
Приведенное выше руководство работает и для OTRS 5.02, однако изменился путь к файлам *.tt - теперь они находятся в директории "/opt/otrs/Kernel/Output/HTML/Templates/Standard".
Вынужден поправить.
Путь будет следующим "/opt/otrs/Kernel/Output/HTML/Templates/Имя кастомной папки".
Потому что помещать измененные модули в исходную папку Standard, в данном случае нельзя. При обновлении они будут затерты.

Re: Создание шаблонов заявок. Часть 1 (обновл. для v.4.x)

Добавлено: 29 мар 2017, 10:41
ykolesnikov
Обнаружил нюанс.
В .tt файле в блоке описания действий по кнопке шаблона

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

#######        Кнопка - Заказ автотранспорта в ЦКО     ##############
<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="Template5">
    <input type="hidden" name="Action" value="[% Env("Action") %]"/>
    <input type="hidden" name="Subaction" value="StoreNew"/>
    <input type="hidden" name="FormID" value="[% Data.FormID | html %]"/>
    <input type="hidden" name="ExpandCustomerName" value="1"/>
    <input type="hidden" name="Subject" value="[% Translate("OrderTransport") | html %]"/>
    <input type="hidden" name="Body" value="[% Translate("BodyOrderTransport") | html %]"/>
    <input type="hidden" name="TypeID" value="55"/>
    <input type="hidden" name="DynamicField_CategoryName" value="250"/>

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

    <input type="hidden" name="Dest" value="56||ЦКО для заявок автотранспорта"/></form>

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

    <input type="hidden" name="Expand" value="1"/>
</form>
Есть строка с описанием заполнения поля "Получатель" - "Dest"(специально ее отделил выше). В значении value - указывается ID очереди и её имя.
Так вот ранее, у меня имя очереди начиналось с цифр для некоего упорядочения в выпадающих списках.
Но, оказалось, что если клиент перед отправкой заявки меняет умалчиваемый приоритет, то поле очереди - очищается и его надо заполнять заново, т.к. оно обязательно. После того, как убрал цифры из имени очереди, как в примере выше, все работает нормально.
До этого все ругал клиентов, что отправляют заявки не в ту очередь, хотя она заполняется автоматом, но никто из них не уточнял когда именно это происходит - очистка поля. :P

Re: Создание шаблонов заявок. Часть 1 (обновл. для v.4.x)

Добавлено: 04 апр 2017, 09:54
aceko
ykolesnikov писал(а):Но, оказалось, что если клиент перед отправкой заявки меняет умалчиваемый приоритет, то поле очереди - очищается и его надо заполнять заново, т.к. оно обязательно. После того, как убрал цифры из имени очереди, как в примере выше, все работает нормально.
До этого все ругал клиентов, что отправляют заявки не в ту очередь, хотя она заполняется автоматом, но никто из них не уточнял когда именно это происходит - очистка поля. :P
Перенеси код шаблонов выше у тебя шаблоны попадают в скрипт обновления полей. http://prntscr.com/es79v6

Re: Создание шаблонов заявок. Часть 1 (обновл. для v.4.x)

Добавлено: 03 ноя 2021, 08:38
kolesnikov2040
aceko писал(а):
04 апр 2017, 09:54
ykolesnikov писал(а):Но, оказалось, что если клиент перед отправкой заявки меняет умалчиваемый приоритет, то поле очереди - очищается и его надо заполнять заново, т.к. оно обязательно. После того, как убрал цифры из имени очереди, как в примере выше, все работает нормально.
До этого все ругал клиентов, что отправляют заявки не в ту очередь, хотя она заполняется автоматом, но никто из них не уточнял когда именно это происходит - очистка поля. :P
Перенеси код шаблонов выше у тебя шаблоны попадают в скрипт обновления полей. http://prntscr.com/es79v6
У меня похожая проблема, при запуске шаблона после выбора учетной записи клиента, учетка сбрасывается. Подскажите пожалуйста, куда перенести код шаблонов "повыше". Я перенес видимо слишком сильно "выше", все шаблоны перестали работать совсем)) какой тег нужно обойти?