OTRS.ru • Просмотр темы - Создание шаблонов заявок. Часть 2 (обновлено)

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

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

Модератор: ykolesnikov

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

Сообщение firebolt » 05 ноя 2012, 14:24

Создаем шаблоны заявок на странице создания новой заявки клиентом OTRS.

screen1.png
screen1.png (22.63 KIB) Просмотров: 17307

Так как тема не вместилась в дозволенные 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>


Проверяем. Радуемся.

Если остаются вопросы, смотрим это видео. Если после просмотра вопросы остались, пишите в личку.
Последний раз редактировалось firebolt 05 дек 2014, 06:45, всего редактировалось 1 раз.
OTRS 5.0.10
Debian 8 Jessie
MySQL 5.5
firebolt
OTRS Новобранец
 
Сообщений: 169
Зарегистрирован: 13 сен 2012, 13:46

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

Сообщение firebolt » 09 авг 2013, 08:20

А почему второй частью никто не интересуется? Клентам тоже нравится нажать кнопку и "получить все".
OTRS 5.0.10
Debian 8 Jessie
MySQL 5.5
firebolt
OTRS Новобранец
 
Сообщений: 169
Зарегистрирован: 13 сен 2012, 13:46

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

Сообщение mukexa » 09 авг 2013, 10:47

Думаю тема станет "живее" если в конце первой части сделать ссылку на вторую )
OTRS 5s, Ubuntu 12.04
mukexa
OTRS Новобранец
 
Сообщений: 148
Зарегистрирован: 30 апр 2013, 19:08
Откуда: Украина, Киев.

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

Сообщение iosysa » 11 янв 2014, 11:57

Спасибо за хорошую проработку вопроса. Очень помогло быстро настроить загрузку шаблонов.

В предыдущей части поднимался вопрос о том, как вставить перевод строки в строку шаблона. Наверняка Вы уже решили этот вопрос, но для тех, кто впервые сталкивается с таким нюансом просто проинформирую, что в атрибут 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>
iosysa
OTRS Новобранец
 
Сообщений: 1
Зарегистрирован: 11 янв 2014, 11:24

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

Сообщение Mardoc » 05 дек 2014, 16:13

У кого нибудь получилось вставить ссылку на значение динамического поля в Body?
OTRS 4.16 Centos 6.5 x86-64
Mardoc
OTRS Новобранец
 
Сообщений: 106
Зарегистрирован: 09 окт 2014, 10:53

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

Сообщение Karapuz » 14 мар 2015, 23:49

Всем привет.

Почему то в версии OTRS 4 шаблоны не работают для CustomerTicketMessage.tt. Если размещать сведения о шаблонах в конце файла, то при нажатии новой заявки в интерфейса пользователя - система падает в ошибку ссылаясь на последние строки файла. Для агентов тот же код работает корректно. Кто как решил?
OTRS 4.0.8 (Appliance), ITSM, FAQ, Debian, Apache, PostgreSQL
Karapuz
OTRS Новобранец
 
Сообщений: 46
Зарегистрирован: 28 ноя 2012, 15:12

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

Сообщение MrDron » 03 июн 2015, 14:19

Шаблоны заявок выпадающее меню для 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;
Последний раз редактировалось MrDron 03 июн 2015, 14:32, всего редактировалось 1 раз.
MrDron
OTRS Новобранец
 
Сообщений: 8
Зарегистрирован: 03 апр 2014, 07:53

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

Сообщение MrDron » 03 июн 2015, 14:28

аналогично правим 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
Безымянный131.jpg (128.23 KIB) Просмотров: 13025
MrDron
OTRS Новобранец
 
Сообщений: 8
Зарегистрирован: 03 апр 2014, 07:53

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

Сообщение orient_19 » 17 ноя 2015, 10:09

Удалось решить проблему работы кнопки отправки.
Из кода меню нужно убрать form, сам код необходимо разместить в блоке "RenderBlockStart" после
Код: выделить все
[% RenderBlockStart("TicketType") %]
                <div>

Полностью это выглядит так:
Код: выделить все
[% 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
ticket_msg.png (34.22 KIB) Просмотров: 11425
С уважением, Александр Шабалин
OTRS 5.0.5, CentOS 6.7, MySQL 5.1.73
orient_19
OTRS Новобранец
 
Сообщений: 20
Зарегистрирован: 10 ноя 2015, 12:13
Откуда: г. Иркутск

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

Сообщение dimon.debian » 05 фев 2018, 09:42

Как вы сделали меню по горизонтали
dimon.debian
OTRS Новобранец
 
Сообщений: 3
Зарегистрирован: 01 фев 2018, 09:54


Вернуться в Описание решений (Howtos)

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1