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

Шаблоны заявок в выпадающем списке, OTRS 5.0.2

Добавлено: 11 ноя 2015, 08:38
orient_19
Здравствуйте!
Захотел сделать шаблоны в выпадающем меню по руководству viewtopic.php?f=4&t=1396, но тоже столкнулся с проблемой работы кнопки отправки.
Автор пишет "Добавляем одним блоком "меню" и "действия" по кнопкам в самое начало". Что означает "одним блоком"? Приведите, пожалуйста, пример кода блока.
Получилось решить проблему отправки тикета другим путем?
Установлена OTRS 5.0.2. Сейчас в CustomerTicketMessage.tt у меня следующее:

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

# Шаблоны в выпадающем списке
    <div class="Field">
        <label class="Mandatory"><span class="Marker">*</span> [% Translate("Template") | html %]:</label>
        <form>
            <select id="setemplates" size="1">
                <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>
        </form>
    </div>
#Замена картриджа
    <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("Templ1") | html %]"/>
        <input type="hidden" name="Body" value="[% Translate("BodyTempl1") | html %]"/>
        <input type="hidden" name="TypeID" value="2"/>
        <input type="hidden" name="Expand" value="1"/>
    </form>
...
...
...
#Другое
    <form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="Template6">
        <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("Templ6") | html %]"/>
        <input type="hidden" name="Body" value="[% Translate("BodyTempl6") | html %]"/>
        <input type="hidden" name="TypeID" value="1"/>
        <input type="hidden" name="Expand" value="1"/>
    </form>
    <div class="Clear"></div>

Re: Шаблоны заявок в выпадающем списке, OTRS 5.0.2

Добавлено: 13 ноя 2015, 08:32
MrDron
Имелось ввиду, что код "меню" вместо кода "кнопок" нужно закинуть под 2- строчку строчку, сразу после

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

<div id="MainBox" class="TicketCompose ARIARoleMain">
    <div class="Content">
Т.е. вот так должно выглядеть начало файла (целиком не могу выложить, ограничение форума):

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

[root@otrs Standard]# cat CustomerTicketMessage.tt
# --
# CustomerTicketMessage.tt - provides HTML form for customer message
# Copyright (C) 2001-2015 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.
# --
#

<div id="MainBox" class="TicketCompose ARIARoleMain">
    <div class="Content">

#-------------------------------------------------------------------------
# - Menu
<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>
#----------------------------------------------------

        <form action="[% Env("CGIHandle") %]" method="post" name="compose" id="NewCustomerTicket" enctype="multipart/form-data" class="Validate PreventMultipleSubmits">
            <input type="hidden" name="Action" value="[% Env("Action") %]" />
            <input type="hidden" name="Subaction" value="StoreNew" />
            <input type="hidden" name="Expand" id="Expand" value="" />
            <input type="hidden" name="FormID" value="[% Data.FormID | html %]" />
            <fieldset>


В предыдущей версии этот кусок кода можно было лепить непосредственно перед кодом "действия".

Re: Шаблоны заявок в выпадающем списке, OTRS 5.0.2

Добавлено: 13 ноя 2015, 19:32
orient_19
MrDron, спасибо за ответ!
Насколько понимаю, проблема в том, что нельзя делать вложенные form..

Re: Шаблоны заявок в выпадающем списке, OTRS 5.0.2

Добавлено: 17 ноя 2015, 09:07
orient_19
Удалось решить проблему.
Из кода меню нужно убрать 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 КБ) 8598 просмотров

Re: Шаблоны заявок в выпадающем списке, OTRS 5.0.2

Добавлено: 26 авг 2018, 09:29
osada
Пытаюсь реализовать на OTRS 6-й версии все что тут указано.
Получается, что сами кнопки есть, но при их нажатии никакой реакции на создание самой заявки.

Т.е., жму, например, на кнопку "Ремонт компьютера", но реакции ноль. Сама функция отправки заявки у меня не работает.

На что обратить внимание?

Re: Шаблоны заявок в выпадающем списке, OTRS 5.0.2

Добавлено: 29 янв 2019, 08:19
hinatus
Работает прекрасно. Пытался ли кто-то реализовать применение шаблонов через jQuery или AJAX, чтобы страница не обновлялась при выборе шаблона? пробую следующим образом

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

<form action="[% Env("CGIHandle") %]" method="post" enctype="multipart/form-data" id="test">
<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="Тема"/>
<input type="hidden" name="Body" value="Тестовый текст"/> 
</form>

<script type="text/javascript">
    var frm = $('#test');

    frm.submit(function (e) {

        e.preventDefault();

        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                console.log('Запрос выполнен.');
                console.log(data);
            },
            error: function (data) {
                console.log('Ошибка.');
                console.log(data);
            },
        });
    });
</script>