Эскалация заявок при обновлении журнала


#1

Добрый день!

Делаем свой iTop до этого момента вроде все получалось где то своими силами, где то с помощью форума, но сейчас уперся в проблему.

Нужно сделать так чтобы когда Исполнитель заявки отвечал на запрос т.е. обновлял public_log в портале юзера эта заявка подсвечивалась цветом и поднималась в списке заявок, а после прочтения юзером флаг снимался и подсветка гасла.

Начал реализовывать.

Добавил новое поле в таблицу UserRequest “public_log_flag” дал ему 2 значения " yes" и “no”.
Далее добавил тригер на обновление журнал и дописал туда, при обновлении журнала public_log_flag = yes. Это работает.

Теперь пытаюсь найти обратную связь.
Нужно чтобы при открытии подсвеченной заявки подсветка убиралась примерно так, как это реализовано “вконтакте”. Но ни как не могу найти функцию которая отвечает за вызов формы просмотра тикета при нажатии на ссылку типа: “R-00000”, что бы добавить обратный сигнал public_log_flag = no. Перекопал гору кода, но все в пустую


#2

Сам спросил, сам нашел решение, но теперь другой вопрос, можно ли скопировать модуль datamodels/portal-base в extantions и сделать так чтобы скопированный модуль заменял стандартный. Нужно для того чтобы в дальнейшем была возможность менять css, возможно править что-то в коде и т.д.


#3

По пробую еще раз) может в этот раз у кого то найдется ответ). В исходниках нашел класс ObjectController, в котором есть функция EditAction, как я понял это она отвечает за вызов формы редактирования тикета через портал пользователя и если вставить туда код на снятие флага то все работает, но я не хочу править исходный код.

а, но не нашел как обратиться к порталу пользователя через модуль, чтобы не затрагивать исходники


#4

По пробую еще раз) может в этот раз у кого то найдется ответ).

Предыстория все та же. Пытаюсь реализовать выделение цветом заявок в которых был обновлен журнал. Для удобства пользователя. Чтобы в списке заявок можно было легко идентифицировать тикеты с ответом.

Добавил поле Public_log_flag сделал его логическим да - нет. Сделал условие поднятие флага в положение “да”. Реализовал условия выделения тикетов цветом если есть флаг “да”. Последним шагом осталось опустить флаг в положение “нет” в тот момент когда юзер с портала пользователя открывает данный тикет. Вот тут и зарыта собака, не могу разобраться, как сделать это правильно, не затрагивая исходный код.

Прочесывая исходники нашел класс ObjectController, в котором есть функция EditAction, как я понял это она отвечает за вызов формы редактирования тикета. Казалось бы, то что нужно, но не знаю, как обратиться к этой функции через модуль. Потом появилась идея сделать тригер, который отслеживал бы обращение к форме через портал пользователя. Но не знаю, как задать условие срабатывания тригера т.к ни в одном из интерфейсов не нашел подходящую функцию.

Помогите найти свет в конце этого кода )


#5

это не оно?
https://www.itophub.io/wiki/page?id=2_4_0%3Acustomization%3Aportal_overview#action_rules


#6

Я так понял эта тема по настройке внешнего вида портала. До этого еще предстоит дойти, пока настраиваем функционал.
Может я как то криво объяснил. Сейчас пользователь когда заходит на портал -> мои заявки он видит белый список заявок по порядку, а уведомление об ответах приходят только на почту. Наш пр. мндж. хочет, чтобы заявки на которые был получен ответ поднимались вверх в списке и окрашивались цветом 2/3 работы я сделал (описывал выше) осталось сделать эффект “прочитано” грубо говоря когда юзер клацает на “реф” R-000000 флаг переключался в значение "нет " тем самым убирая подсвечивание заявки. Я нашел функцию EditAction в одном из классов портала добавил в исходники :
$oObject -> Set(‘public_log_flag’,‘no’);
$oObject -> DBUpdate()
Все работает, но теперь нужно найти способ, как сделать это не затрагивая исходники. Вот тут мне и понадобилась помощь)


#7

Видимо, это я криво объяснил. По ссылке описание action_rules – правил, которые применяются при определенных действиях над тикетом. С помощью такого правила, например, текущий юзер устанавливается в качестве инициатора тикета при сохранении тикета. Возможно, этот функционал можно использовать и для твоей задачи.


#8

Посмотрел, что такое за action_rule. Создал свои action, указал там rule, описал этот rule в action_rules, все скомпилировал, не заработало. Потом перечитал пост в wiki еще раз, оказалось, что action применимы только в CreateBrick и BrowseBrick. А тот Brick, в который я пытался вставить – ManageBrick… Снова тупик.

Но там же в wiki вычитал про twig может быть через него, как то возможно это реализовать? Или это просто обработчик шаблона?