Страница 1 из 1
Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 05 ноя 2012, 14:24
firebolt
Создаем шаблоны заявок на странице создания новой заявки клиентом OTRS.
- screen1.png (22.63 КБ) 42664 просмотра
Так как тема не вместилась в дозволенные 6000 символов, шаблоны для клиента пришлось вынести в отдельную тему. Начало читаем
здесь. Там же Вы можете узнать о том, какие изменения нужно внести в код, для того, чтобы это работало в версии
OTRS 4.0.
Для того, чтобы создать эти же шаблоны на странице создания заявки в клиентской части, делаем следующее:
Файл кастомного перевода уже существует, значения взяты из него.
В файл ./otrs/Kernel/Output/HTML/Standard/CustomerTicketMessage.dtl копируем в строку №19 секцию для создания кнопок из предыдущего файла AgentTicketPhone.dtl. И так же копируем действия для создаваемых кнопок, описаные к конце файла.
Для того, чтобы эти кнопки работали без ошибок, необходимо добавить еще одну строку в код действия:
<input type="hidden" name="Expand" value="1"/>
Код: Выделить всё
<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"/>
<input type="hidden" name="Expand" value="1"/>
</form>
Проверяем. Радуемся.
Если остаются вопросы, смотрим
это видео. Если после просмотра вопросы остались, пишите в личку.
Re: Создание шаблонов заявок. Часть 2
Добавлено: 09 авг 2013, 08:20
firebolt
А почему второй частью никто не интересуется? Клентам тоже нравится нажать кнопку и "получить все".
Re: Создание шаблонов заявок. Часть 2
Добавлено: 09 авг 2013, 10:47
mukexa
Думаю тема станет "живее" если в конце первой части сделать ссылку на вторую )
Re: Создание шаблонов заявок. Часть 2
Добавлено: 11 янв 2014, 11:57
iosysa
Спасибо за хорошую проработку вопроса. Очень помогло быстро настроить загрузку шаблонов.
В предыдущей части поднимался вопрос о том, как вставить перевод строки в строку шаблона. Наверняка Вы уже решили этот вопрос, но для тех, кто впервые сталкивается с таким нюансом просто проинформирую, что в атрибут value можно вставлять практически любой HTML код, перемешивая его со ссылками на поля OTRS. Для примера:
<form action="$Env{"CGIHandle"}" method="post" enctype="multipart/form-data" id="Template4">
<input type="hidden" name="Action" value="$Env{"Action"}"/>
...
<input type="hidden" name="DynamicField_RoomNumber" value="318">
<input type="hidden" name="Body" value="Параметры заявки <hr>ФИО заказчика: <br> Вид спецматериалов: <br> Количество: <br> К дате: <br> По теме: $Text{"SpetialRequest"}"/>
</form>
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 05 дек 2014, 16:13
Mardoc
У кого нибудь получилось вставить ссылку на значение динамического поля в Body?
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 14 мар 2015, 23:49
Karapuz
Всем привет.
Почему то в версии OTRS 4 шаблоны не работают для CustomerTicketMessage.tt. Если размещать сведения о шаблонах в конце файла, то при нажатии новой заявки в интерфейса пользователя - система падает в ошибку ссылаясь на последние строки файла. Для агентов тот же код работает корректно. Кто как решил?
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 03 июн 2015, 14:19
MrDron
Шаблоны заявок выпадающее меню для 4-й версии
Код вместо "кнопок":
Код: Выделить всё
<label>[% Translate("Templates") | html %]:</label>
<div class="Field">
<form>
<select id="setemplates" size="1">
<option value="nothing" selected="selected">-</option>
<option value="Template1">[% Translate("Sysblock") | html %]</option>
<option value="Template2">[% Translate("Periphery") | html %]</option>
<option value="Template3">[% Translate("Software") | html %]</option>
<option value="Template4">[% Translate("Account") | html %]</option>
<option value="Template5">[% Translate("OS") | html %]</option>
<option value="Template6">[% Translate("LAN") | html %]</option>
<option value="Template7">[% Translate("Assist") | html %]</option>
<option value="Template8">[% Translate("Portal") | html %]</option>
<option value="Template9">[% Translate("WEB") | html %]</option>
</select>
</form>
</div>
<div class="Clear"></div>
Действия (как и для кнопок):
Код: Выделить всё
# 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("BodySysblock") | html %]"/>
<input type="hidden" name="Dest" value="[% Translate("Группа поддержки") | html %]"/>
<input type="hidden" name="TypeID" value="2"/>
</form>
..... пропущено с 2-го по 8-й
Код: Выделить всё
<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="Template9">
<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("WEB") | html %]"/>
<input type="hidden" name="Body" value="[% Translate("BodyWEB") | html %] [% Translate("BodyAdd") | html %]"/>
<input type="hidden" name="Dest" value="[% Translate("1||Группа поддержки") | html %]"/>
<input type="hidden" name="TypeID" value="2"/>
</form>
И добавить в конце:
Код: Выделить всё
<script type="text/javascript">
var selectmenu=document.getElementById("setemplates")
selectmenu.onchange=function(){ //run some code when "onchange" event fires
var chosenoption=this.options[this.selectedIndex] //this refers to "selectmenu"
if (chosenoption.value!="nothing"){
document.getElementById(chosenoption.value).submit();
}
}
</script>
Соответственно подправить ru_Custom.pm
use utf8; #-- добавить
$Self->{Charset} = ['utf-8', ]; # - добавить
Код: Выделить всё
# --
# Kernel/Language/xx_Custom.pm - provides xx custom language translation
# 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::Language::ru_Custom;
use strict;
use warnings;
use utf8;
sub Data {
my $Self = shift;
# $$START$$
# possible charsets
$Self->{Charset} = ['utf-8', ];
# own translations
# $Self->{Translation}->{'Lock'} = 'Lala';
# $Self->{Translation}->{'Unlock'} = 'Lulu';
$Self->{Translation}->{'Templates'} = 'Шаблоны служебок';
$Self->{Translation}->{'Группа поддержки'} = '1||Группа поддержки';
$Self->{Translation}->{'Группа программирования'} = '2||Группа программирования';
$Self->{Translation}->{'Группа администрирования'} = '4||Группа администрирования';
$Self->{Translation}->{'BodyAdd'} = '<br> <br>Параметры заявки: <hr> ФИО: <br> Организация: <br> кабинет №';
$Self->{Translation}->{'Sysblock'} = 'Ремонт системного блока';
$Self->{Translation}->{'BodySysblock'} = 'Прошу Вас произвести ремонт системного блока компьютера...';
$Self->{Translation}->{'Periphery'} = 'Периферийное оборудование';
$Self->{Translation}->{'BodyPeriphery'} = 'Прошу Вас произвести ремонт/настройку (вместо этого текста указать...';
$Self->{Translation}->{'Software'} = 'Установка/настройка ПО';
$Self->{Translation}->{'BodySoftware'} = 'Прошу Вас установить/настроить программное обеспечение на рабочем месте...';
$Self->{Translation}->{'Account'} = 'Учетные записи';
$Self->{Translation}->{'BodyAccount'} = 'Прошу Вас добавить/изменить учетную запись для пользователя (вместо этого текста указать...';
$Self->{Translation}->{'OS'} = 'Операционная система';
$Self->{Translation}->{'BodyOS'} = 'Прошу Вас произвести настройку/установку операционной системы (вместо этого текста указать...';
$Self->{Translation}->{'LAN'} = 'ЛВС/VPN/Internet';
$Self->{Translation}->{'BodyLAN'} = 'Прошу Вас произвести настройку/установку сетевого (LAN/Intenet/VPN) оборудования для (вместо этого текста указать...';
$Self->{Translation}->{'Assist'} = 'Консультация/помощь';
$Self->{Translation}->{'BodyAssist'} = 'Прошу Вас проконсультировать/обучить как сделать чтобы все было (вместо этого текста указать...';
$Self->{Translation}->{'Portal'} = 'Портал';
$Self->{Translation}->{'BodyPortal'} = 'Прошу Вас проконсультировать/обучить/добавить функцию как сделать чтобы все было (вместо этого текста указать...';
$Self->{Translation}->{'WEB'} = 'Web-сайт';
$Self->{Translation}->{'BodyWEB'} = 'Прошу Вас создать/изменить страницу/сайт чтобы все было (вместо этого текста указать...';
# or a other syntax would be
# $Self->{Translation} = {
# %{$Self->{Translation}},
# # own translations
# Lock => 'Lala',
# UnLock => 'Lulu',
# };
# $$STOP$$
}
1;
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 03 июн 2015, 14:28
MrDron
аналогично правим CustomerTicketMessage.tt
Добавляем одним блоком "меню" и "действия" по кнопкам в самое начало, криво, но по другому не работает "отправка" (разбираюсь)
не забываем в "действия" вставлять
Код: Выделить всё
<input type="hidden" name="Expand" value="1" />
т.е.
Код: Выделить всё
<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("BodySysblock") | html %]"/>
<input type="hidden" name="Dest" value="[% Translate("Группа поддержки") | html %]"/>
<input type="hidden" name="TypeID" value="2"/>
<input type="hidden" name="Expand" value="1" />
</form>
Результат:
- Безымянный131.jpg (128.23 КБ) 38382 просмотра
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 17 ноя 2015, 10:09
orient_19
Удалось решить проблему работы кнопки отправки.
Из кода меню нужно убрать
form, сам код необходимо разместить в блоке "
RenderBlockStart" после
Полностью это выглядит так:
Код: Выделить всё
[% RenderBlockStart("TicketType") %]
<div>
# Шаблоны в выпадающем списке
<div class="Field" style="margin-bottom: 6px;">
<label class="Mandatory"><span class="Marker">*</span> [% Translate("Template") | html %]:</label>
<select id="setemplates" size="1" style="background: #fff; border: 1px solid #c0c0c0; height: 22px; margin: 0; width: 216px;">
<option value="nothing" selected="selected">выберите из списка</option>
<option value="Template1">[% Translate("Templ1") | html %]</option>
<option value="Template2">[% Translate("Templ2") | html %]</option>
<option value="Template3">[% Translate("Templ3") | html %]</option>
<option value="Template4">[% Translate("Templ4") | html %]</option>
<option value="Template5">[% Translate("Templ5") | html %]</option>
<option value="Template6">[% Translate("Templ6") | html %]</option>
</select>
</div>
<!--
<label for="TicketNumber">[% Config("Ticket::Hook") %]</label>
<input title="Ticket#" type="text" name="TicketNumber" size="30" value="[% Data.TicketNumber | html %]" />
-->
<label for="TypeID" class="Mandatory"><span class="Marker">*</span>[% Translate("Type") | html %]:</label>
[% Data.TypeStrg %]
<div id="TypeIDError" class="TooltipErrorMessage" ><p>[% Translate("This field is required.") | html %]</p></div>
<div id="TypeIDServerError" class="TooltipErrorMessage NoJavaScriptMessage[% Data.TypeIDInvalid | html %]" ><p>[% Translate("This field is required.") | html %]</p></div>
<div class="Clear"></div>
</div>
[% WRAPPER JSOnDocumentComplete %]
<script type="text/javascript">//<![CDATA[
$('#TypeID').bind('change', function (Event) {
Core.AJAX.FormUpdate($('#NewCustomerTicket'), 'AJAXUpdate', 'TypeID', ['Dest', 'PriorityID', 'ServiceID', 'SLAID', [% Data.DynamicFieldNamesStrg %]]);
});
//]]></script>
[% END %]
[% RenderBlockEnd("TicketType") %]
Немного поправлены стили, выглядит всё это, как на изображении:
- ticket_msg.png (34.22 КБ) 36782 просмотра
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 05 фев 2018, 09:42
dimon.debian
Как вы сделали меню по горизонтали
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 21 авг 2018, 15:37
osada
Коллеги, а есть ли изменения по созданию шаблонов для 6-й версии?
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 21 авг 2018, 16:11
alexus
В 6ке изменилась работ с JS на странице - это как минимум, что может повлиять.
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 22 авг 2018, 18:28
osada
alexus писал(а): ↑21 авг 2018, 16:11
В 6ке изменилась работ с JS на странице - это как минимум, что может повлиять.
Не совсем силен в этом, можно ли подробнее на что конкретно это может повлиять?
Re: Создание шаблонов заявок. Часть 2 (обновлено)
Добавлено: 22 авг 2018, 23:09
alexus
Это раздел Howto. Все вопросы или проблемы - в Help или Общие. Для уточнения деталей или кто ищет Силу -
http://doc.otrs.com/doc/manual/develope ... arted.html