Добавить кнопку в Action=AgentTicketZoom

Запросы на решение проблем

Модератор: ykolesnikov

Ответить
Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 28 мар 2016, 16:59

Привет! :) Я закопалась уже и на форуме, и в Конфигурации системы, а при слове"копать", могу сказать только одно - "хоронить", причём меня.
Вкратце обрисую ситуацию: было надо сделать вторую кнопку для закрытия заявки, назовём её "Close2", сделали - работает.
По тому же принципу сделали вторую кнопку Переслать ("Forward2") - не работает, и даже не отображается!!!
При всём при этом я не могу найти, где настраиваются кнопки, отображаемые в первом сообщении. Помогите пзяльстя :cry:
Вложения
Снимок.JPG
Снимок.JPG (36.17 КБ) 13063 просмотра
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение MrIch » 29 мар 2016, 09:33

Тоже долго не мог найти, где эти строки были, в моем случае их нужно было скрыть)
Идешь в :

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

/opt/otrs/Kernel/Modules
Там ищешь файлик:

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

AgentTicketZoom.pm
В нем делай поиск по

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

push @MenuItems
И делай с ними все что захочешь).
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение paver » 29 мар 2016, 09:59

MrIch писал(а):И делай с ними все что захочешь).
Единственное, что с ним можно сделать в Kernel/Modules - это скопировать его в кастом
--
OTRS 6.0.22

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 29 мар 2016, 11:44

MrIch, спасибо! :D Получилось добавить дубль кнопки Forward. Всё здорово: отображается, открывается окно отправки, вот только не отправляется никуда...
А при заполнении поля "получатель", автоматом заполняются поля "копия" и "скрытая копия". :?
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 29 мар 2016, 14:12

Графически это можно представить так:
Должен быть один "Получатель", а поля "Копия" и "Скрытая копия" остаться незаполненными!
А получилось автоматическое заполнение всех полей, стоит только написать "Получателя" :(
Куда смотреть, подскажите? :?:
Вложения
Снимок.JPG
Снимок.JPG (34.87 КБ) 13038 просмотров
Снимок1.JPG
Снимок1.JPG (37.82 КБ) 13038 просмотров
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение MrIch » 29 мар 2016, 14:29

а код можно увидеть, каким способом добавлена кнопка?
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 29 мар 2016, 14:42

Вот весь кусок:

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

####
# --- AgentTicketForward1C ---
####
        # check if forward link should be shown
        # (only show forward on email-external, email-internal, phone, webrequest and fax
        if (
            $Self->{ConfigObject}->Get('Frontend::Module')->{AgentTicketForward1C}
            && $AclActionLookup{AgentTicketForward1C}
            && $Article{ArticleType} =~ /^(email-external|email-internal|phone|webrequest|fax)$/i
            )
        {
            my $Access = 1;
            my $Config = $Self->{ConfigObject}->Get('Ticket::Frontend::AgentTicketForward1C');
            if ( $Config->{Permission} ) {
                my $OK = $Self->{TicketObject}->TicketPermission(
                    Type     => $Config->{Permission},
                    TicketID => $Ticket{TicketID},
                    UserID   => $Self->{UserID},
                    LogNo    => 1,
                );
                if ( !$OK ) {
                    $Access = 0;
                }
            }
            if ( $Config->{RequiredLock} ) {
                if ( $Self->{TicketObject}->TicketLockGet( TicketID => $Ticket{TicketID} ) )
                {
                    my $AccessOk = $Self->{TicketObject}->OwnerCheck(
                        TicketID => $Ticket{TicketID},
                        OwnerID  => $Self->{UserID},
                    );
                    if ( !$AccessOk ) {
                        $Access = 0;
                    }
                }
            }
            if ($Access) {

                if ( IsHashRefWithData( $Param{StandardForwards} ) ) {

                    # get StandardForwardsStrg
                    my %StandardForwardHash = %{ $Param{StandardForwards} };

                    # get revers @StandardForwardHash because we need to sort by Values
                    # from %ReverseStandarForward we get value of Key by %StandardForwardHash Value
                    # and @StandardForwardArray is created as array of hashes with elements Key and Value
                    my %ReverseStandarForward = reverse %StandardForwardHash;
                    my @StandardForwardArray  = map {
                        {
                            Key   => $ReverseStandarForward{$_},
                            Value => $_
                        }
                    } sort values %StandardForwardHash;

                    unshift(
                        @StandardForwardArray,
                        {
                            Key   => '0',
                            Value => '- '
                                . $Self->{LayoutObject}->{LanguageObject}->Translate('Forward')
                                . ' -',
                            Selected => 1,
                        }
                    );

                    # build html string
                    my $StandardForwardsStrg = $Self->{LayoutObject}->BuildSelection(
                        Name => 'ForwardTemplateID',
                        ID   => 'ForwardTemplateID',
                        Data => \@StandardForwardArray,
                    );

                    push @MenuItems, {
                        ItemType             => 'Dropdown',
                        DropdownType         => 'Forward',
                        StandardForwardsStrg => $StandardForwardsStrg,
                        Name                 => 'Forward1C',
                        Class                => 'AsPopup PopupType_TicketAction',
                        Action               => 'AgentTicketForward1C',
                        FormID               => 'Forward' . $Article{ArticleID},
                        ForwardElementID     => 'ForwardTemplateID',
                        Type                 => $Param{Type},
                    };

                }
                else {

                    push @MenuItems, {
                        ItemType    => 'Link',
                        Description => 'Forward article via mail',
                        Name        => 'Forward1C',
                        Class       => 'AsPopup PopupType_TicketAction',
                        Link =>
                            "Action=AgentTicketForward1C;TicketID=$Ticket{TicketID};ArticleID=$Article{ArticleID}"
                    };
                }
            }
        }

####
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение MrIch » 29 мар 2016, 15:21

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

 push @MenuItems, {
                        ItemType             => 'Dropdown',
                        DropdownType         => 'Forward',
                        StandardForwardsStrg => $StandardForwardsStrg,
                        Name                 => 'Forward1C',
                        Class                => 'AsPopup PopupType_TicketAction',
                        Action               => 'AgentTicketForward1C',
                        FormID               => 'Forward' . $Article{ArticleID},
                        ForwardElementID     => 'ForwardTemplateID',
                        Type                 => $Param{Type},
Почему у вас тут в Action стоит AgentTicketForward1C - там поидее просто AgentTicketForward должно быть, если вы конечно не сделали доп. Action с названием AgentTicketForward1C
Плюс если вы особых изменений в это вносить не собираетесь, то необязательно такой огромный кусок вставлять. Достаточно в имеющемся про форвард добавить два пуша, выглядеть так будет:

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

                    # build html string
                    my $StandardForwardsStrg = $Self->{LayoutObject}->BuildSelection(
                        Name => 'ForwardTemplateID',
                        ID   => 'ForwardTemplateID',
                        Data => \@StandardForwardArray,
                    );

                    push @MenuItems, {
                        ItemType             => 'Dropdown',
                        DropdownType         => 'Forward',
                        StandardForwardsStrg => $StandardForwardsStrg,
                        Name                 => 'Forward',
                        Class                => 'AsPopup PopupType_TicketAction',
                        Action               => 'AgentTicketForward',
                        FormID               => 'Forward' . $Article{ArticleID},
                        ForwardElementID     => 'ForwardTemplateID',
                        Type                 => $Param{Type},
                    };
					push @MenuItems, {
                        ItemType             => 'Dropdown',
                        DropdownType         => 'Forward',
                        StandardForwardsStrg => $StandardForwardsStrg,
                        Name                 => 'Forward1C',
                        Class                => 'AsPopup PopupType_TicketAction',
                        Action               => 'AgentTicketForward',
                        FormID               => 'Forward' . $Article{ArticleID},
                        ForwardElementID     => 'ForwardTemplateID',
                        Type                 => $Param{Type},
                    }

                }
                else {

                    push @MenuItems, {
                        ItemType    => 'Link',
                        Description => 'Forward article via mail',
                        Name        => 'Forward',
                        Class       => 'AsPopup PopupType_TicketAction',
                        Link =>
                            "Action=AgentTicketForward;TicketID=$Ticket{TicketID};ArticleID=$Article{ArticleID}"
                    };
					push @MenuItems, {
                        ItemType    => 'Link',
                        Description => 'Forward article via mail',
                        Name        => 'Forward1C',
                        Class       => 'AsPopup PopupType_TicketAction',
                        Link =>
                            "Action=AgentTicketForward;TicketID=$Ticket{TicketID};ArticleID=$Article{ArticleID}"
                    };
                }
Я честно говоря сразу их туда вставил, а не делал доп кусок.
Плюс затраивания с получателем\копией\скрытой копией не было при выборе кого-то
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 29 мар 2016, 16:32

MrIch писал(а):Почему у вас тут в Action стоит AgentTicketForward1C
Так сделано, потому что мы создали новый модуль AgentTicketForward1C на основе уже существующего AgentTicketForward. После его создания должна была появиться кнопка Forward1C, но не появилась(((
По вашей подсказке допилили файл AgentTicketZoom.pm, добавив туда кусок кода (в сообщении ранее прикрепляла).
MrIch писал(а):Достаточно в имеющемся про форвард добавить два пуша, выглядеть так будет:
Это ничего не даёт, появившийся дубль кнопки "Переслать" обращается к действию модуля обычного Форварда, а надо, чтобы к новому модулю.
Ко всему прочему, вопросов только прибавляется, как, например, распознать Action?
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение MrIch » 29 мар 2016, 16:46

Вот про второй модуль я был не в курсе).
То что у вас при заполнении получателя, идет отсылка сразу и в получателя, и в копию, и в скрытую копию искать скорее всего нужно в новом вашем модуле.
Честно, настолько глубоко не уходил, мне хватало банального изменения существующих кнопок под свои нужды.
Единственное, что могу предложить это искать в /opt/otrs все, что касается AgentTicketForward, вникать в это и при необходимости делать аналогичный кусок для вашего модуля AgentTicketForward1C
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 29 мар 2016, 17:50

Угу, там я все уже пересмотрела, сейчас по памяти могу сказать, что AgentTicketForward встречается только в двух pm-файлах:
AgentTicketForward.pm и AgentTicketZoom.pm. Может новый Action добавляется где-нибудь в Core.Agent.TicketAction.js? :?
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 31 мар 2016, 14:14

Что, совсем больше никаких мыслей на этот счёт? :o
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение alexus » 31 мар 2016, 14:21

Тут вариант совета не подходит. Надо просто сделать и всё. Пишите запрос по контактам ниже.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение MrIch » 31 мар 2016, 14:29

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

grep -iRI "AgentTicketForward" /opt/otrs/
Судя по выводу, Core.Agent.TicketAction.js единственное что еще может быть, ибо остальные результаты вывода верхней команды не столь важны имхо
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

Вольха Редная
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 22 апр 2015, 09:52
Откуда: Москва

Re: Добавить кнопку в Action=AgentTicketZoom

Сообщение Вольха Редная » 31 мар 2016, 15:49

MrIch, Алексей, спасибо за комментарии и уделённое время. Потыкались мы туда-сюда, добавили обязательное динамическое поле в Forward, и отложили этот вопрос.
С уважением, Трофимова Римма
OTRS 4.0.14 my SQL linux server

Ответить