Формулировка проблемы: необходимо присылать пользователю уведомления о том, что происходит с ежедневником / работами / проектами того пользователя, который делегировал ему соответствующие права.
Используется:
Пользовательские настройки:
делегирование по ежедневнику, работам, проектам;
настройки уведомлений по ежедневнику, работам, проектам;
Уведомления системы по ежедневнику, работам, проектам.
Решение: Для начала условимся, что Пользователь1 - это пользователь, который делегировал права. Пользователь2, в свою очередь, - это пользователь, которому делегировали права.
В раздел конфигуратора «Настройки системы» -> «Параметры
уведомлений» необходимо добавить новую подгруппу опций. Название
подгруппы -
Отправка уведомлений пользователю при наличии делегирования
.
Первая опция -
Отправлять копию уведомления по модулям
,
представляющая собой выпадающий список с возможностью множественного
выбора. Компонент содержит следующие варианты значений,
соответствующий списку модулей, в которых доступно делегирование:
Ежедневник
;
Работы
;
Проекты
.
Вторая опция -
Не присылать уведомления по действиям, совершенным по отношению к пользователю, делегировавшему права
,
представляющая собой флажок (по умолчанию, выключен). Флажок должен
быть недоступен для включения/выключения (независимо от его текущего
состояния), если в опции
Отправлять копию уведомления
не выбрано ни одного
значения. Если для включенного флажка Пользователь2 сам порождает
уведомление Пользователю1, то такое уведомление ему дублировать не
нужно. Для выключенного же флажка - такие уведомления Пользователю2
приходить должны.
Теперь уведомления по модулям должны приходить не только Пользователю1, но и дублироваться Пользователю2 (при этом достаточно наличие делегирования на просмотр). Для этого должны осуществиться все 3 следующих условия:
в опции «Отправлять копию уведомления по модулям» выбрано значение модуля;
для соответствующего модуля из п.1 должно быть настроено уведомление у Пользователя1;
для соответствующего модуля из п.1 должно быть настроено такое же уведомление, как в п.2, у Пользователя2.
В случае, если не выполнено условие №1 или №3, уведомление Пользователю2 не должно сформировываться.
В случае, если не выполнено условие №2, уведомление Пользователю1 не должно сформировываться, но Пользователю2 должно (с учетом соответствующей настройки).
Пример ожидаемого поведения №1
Условие №1: В опции «Отправлять копию уведомления по модулям» выбрано значение «Работа».
Условие №2: Пользователь1 и Пользователь2 подписаны на все уведомления по работам.
Пользователь1 делегирует Пользователю2 права на просмотр работ.
Пользователь3 отправляет Пользователю1 работу на согласование.
Пользователю1 и Пользователю2 на почту пришло уведомление по работе.
Пользователь2 нажимает по ссылке в уведомлении.
В новой вкладке браузера открылся документ из уведомления.
Пользователь1 отменяет делегирование Пользователю2 все права на работы.
Пользователь4 отправляет Пользователю1 работу на согласование.
Только Пользователю1 на почту пришло уведомление по работе.
Пример ожидаемого поведения №2
Условие №1: В опции «Отправлять копию уведомления по модулям» выбрано значение «Работа».
Условие №2: Пользователь1 подписан на уведомление по работам «Добавлен комментарий». Пользователь2 не подписан на данное уведомление.
Пользователь1 делегирует Пользователю2 права на просмотр работ.
Пользователь3 добавляет комментарий к работе от Пользователя1.
Только Пользователю1 на почту пришло уведомление по работе.
Пример ожидаемого поведения №3
Условие №1: В опции «Отправлять копию уведомления по модулям» выбрано значение «Работа». Включен флажок «Не присылать уведомления по действиям, совершенным по отношению к пользователю, делегировавшему права».
Условие №2: Пользователь1 не подписан на уведомление по работам «Добавлен комментарий». Пользователь2 подписан на данное уведомление.
Пользователь1 делегирует Пользователю2 права на просмотр работ.
Пользователь3 добавляет комментарий к работе от Пользователя1.
Только Пользователю2 на почту пришло уведомление по работе.
Сам Пользователь2 добавляет комментарий к работе от Пользователя1.
Ни Пользователю1, ни Пользователю2 на почту не пришло уведомление по работе.
Пример ожидаемого поведения №4
Условие №1: В опции «Отправлять копию уведомления по модулям» выбраны значения «Ежедневник» и «Проекты».
Условие №2: Пользователь1 и Пользователь2 подписаны на все уведомления по ежеденевнику. Пользователь1 подписан на уведомление по проектам «Назначены права на ветку проекта». Пользователь2 не подписан на данное уведомление.
Пользователь1 делегирует Пользователю2 права на просмотр ежедневника и проектов.
Пользователь3 создает Пользователю1 заметку в его ежедневнике.
Пользователю1 и Пользователю2 на почту пришло уведомление по ежедневнику.
Пользователь4 дает Пользователю1 права на какой-либо проект.
Только Пользователю1 на почту пришло уведомление по проекту.
Действия при обновлении системы
При обновлении системы в параметрах уведомлений должна появиться
новая группа опций
Отправка уведомлений пользователю при наличии делегирования
:
Отправлять копию уведомления по модулям
- с
пустым значением;
Не присылать уведомления по действиям, совершенным по отношению к пользователю, делегировавшему права
- опция недоступна для редактирования.
Никаких других изменений, в т.ч. в уведомлениях, произойти не должно.