Убрать цитирование ответов больше >

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

Модератор: ykolesnikov

Ответить
lostinbrain
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 08 ноя 2012, 11:14

Убрать цитирование ответов больше >

Сообщение lostinbrain » 08 ноя 2012, 11:20

Приветствую всех. В OTRS имеется цитирование ответов пользователей, по умолчанию знак ">". В админке это Ticket::Frontend::Quote.
Мне необходимо убрать цитирование старше одного письма, то есть убрать все предыдущие ответы с >>, >>>, >>>> и тд, оставить только >. Возможно ли это сделать средствами OTRS?

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

Re: Убрать цитирование ответов больше >

Сообщение alexus » 08 ноя 2012, 13:09

Добрый день!

Размер цитаты можно ограничить только в знаках.
С уважением,
Алексей Юсов

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? Спросите меня как!

lostinbrain
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 08 ноя 2012, 11:14

Re: Убрать цитирование ответов больше >

Сообщение lostinbrain » 08 ноя 2012, 13:43

alexus писал(а):Добрый день!

Размер цитаты можно ограничить только в знаках.
Можете подсказать где это делается?

Насколько я понял убрать >>, >>>, >>>> без вмешательства в код otrs не удастся.

lostinbrain
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 08 ноя 2012, 11:14

Re: Убрать цитирование ответов больше >

Сообщение lostinbrain » 20 ноя 2012, 19:03

Если кому интересно, вот решение:

В папке Kernel/Modules файл AgentTicketCompose.pm

добавляем в него функцию:

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

sub remove_quotes {
    my ($quote_string) = @_;

    return 0 unless $quote_string;

    my @sentences = split( "\n", $quote_string);

    my $result = "";

    foreach my $d (@sentences) {
        next if $d =~ m/^(>>)|(> >)/gm;
        next if $d eq "";

        $result .= $d . "\n";
    }
    return $result;
}
Дальше в коде где строки:

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

            # prepare body, subject, ReplyTo ...
            # rewrap body if exists
            if ( $Data{Body} ) {
                $Data{Body} =~ s/\t/ /g;
                my $Quote = $Self->{ConfigObject}->Get('Ticket::Frontend::Quote');
                if ($Quote) {
                    $Data{Body} =~ s/\n/\n$Quote /g;
                    $Data{Body} = "\n$Quote " . $Data{Body};
у меня они под номерами 828..835, добавляем

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

$Data{Body} = remove_quotes( $Data{Body} );
, чтобы получилось:

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


            # prepare body, subject, ReplyTo ...
            # rewrap body if exists
            if ( $Data{Body} ) {
                $Data{Body} =~ s/\t/ /g;
                my $Quote = $Self->{ConfigObject}->Get('Ticket::Frontend::Quote');
                if ($Quote) {
                    $Data{Body} =~ s/\n/\n$Quote /g;
                    $Data{Body} = "\n$Quote " . $Data{Body};
                    $Data{Body} = remove_quotes( $Data{Body} );

merkushov
OTRS Бывалый
Сообщения: 310
Зарегистрирован: 25 окт 2012, 15:06
Откуда: Воронеж
Поблагодарили: 2 раза

Re: Убрать цитирование ответов больше >

Сообщение merkushov » 21 ноя 2012, 09:29

lostinbrain писал(а):Если кому интересно, вот решение:
Красиво
Меркушов Виктор, perl программист

Ответить