Работа с комментариями к объектам
Компонент Комментарии позволяет прикрепить к любой сущности возможность комментирования и хранения истории заметок по данной сущности.
ОБНОВЛЕНИЕ Ноябрь 2021. Добавлены возможности прикрепления файлов и отметки, и обновлены системные процедуры комментариев. Добавлены столбцы в as_comments - https://pastebin.com/N3JLPPJL
Также есть возможность отмечать цветными тегами записи.
Для работы комментариев необходимо указать следующий сниппет:
<div class="as-comments" data-itemid="1234" data-type="{typeCode}" data-inline="1" data-reverse="1"></div>
1. data-itemID - ID некой сущности, к которой привязаны комментарии
2. data-type - код типа комментариев (создается в Панели управления в разделе Типы комментариев)
3. data-inline - если 1, то комментарии выводятся в контейнере (иначе они будут открываться в popover окне при клике на ссылку).
4. data-reserve - если 1, то порядок будет от свежих к старым и окно добавления будет сверху от блока комментариев.
5. data-deleteConfirm - если есть текст, то при удалении комментария будет запрашиваться подтверждение удаления с этим текстом.
Также необходимо в разделе Управление комментариями создать запись с соответствующим typeCode.
Здесь вы можете настроить доступ на просмотр комментариев, возможность добавлять и удалять комментарии.
Также вы можете настроить какие теги будут у данного типа.
Есть опция notifyTag в as_commentTypes по включению тега напоминания.
Если она включена, то вы можете добавлять комментарии с указанием даты напоминания об этой записи (модальное окно с указанием количества дней).
Когда настанет этот день, то вам придет уведомление через систему уведомлений (для этого ежедневно осуществляется поиск по комментам на сегодня и создаются уведомления).
Примечания
Код комментариев typeCode также используется для построения комментариев в компоненте Таблица.
Если data-itemID - пустая строка или “0”, то комментарии не выводятся!
Комментарии можно раскрашивать. При добавлении программно - через хранимую процедуру (параметр @color). Пользователь может красить комментарии через теги.
Пример процедуры (она должна вызываться ежедневно - установка в /syssp):
CREATE PROCEDURE [dbo].falcon_checkNotifyComments
AS
BEGIN
declare @date date
declare @tag nvarchar(128)
set @date = getdate()
set @tag = '#notify'+convert(nvarchar, @date, 120)
DECLARE @id int, @username nvarchar(256), @text nvarchar(max), @created datetime, @itemID nvarchar(128), @type nvarchar(32)
DECLARE cur CURSOR FOR
select top 100 id, username, text, created, itemID, type from as_comments where text like '%'+@tag+'%'
OPEN cur
FETCH NEXT FROM cur
INTO @id, @username, @text, @created, @itemID, @type
WHILE @@FETCH_STATUS = 0
BEGIN
if(@type='client')begin
declare @clientInfo nvarchar(256), @clientID int = try_cast(@itemID as int)
select @clientInfo = '<a href="/client?itemID='+@itemID+'">Клиент '+isnull(shortname,'Без названия')+'</a>:' +@text from crm_clients
inner join ctr_contragents on ctr_contragents.id = crm_clients.contragentID
where crm_clients.instanceID = @clientID
exec [dbo].[as_nt_createNotification]
@additional = N'',
@from = 'system',
@to = @username,
@url = '/',
@text = @clientInfo,
@typeCode = N'client',
@returnID = 0
end
FETCH NEXT FROM cur
INTO @id, @username, @text, @created, @itemID, @type
END
CLOSE cur;
DEALLOCATE cur;
END
Настройка комментариев через SP GetOptions
Более гибкую настройку комментариев можно сделать за счет процедуры comments_{code}_getOptions. Пример:
CREATE PROCEDURE [dbo].[comments_client_getOptions]
@code nvarchar(64),
@itemID nvarchar(128),
@username nvarchar(128)
as begin
-- SELECT 1 CommentType: id, code, viewRoles, addRoles, deleteRoles, canDeleteOwnComments, notifyTag
select *
from as_commentTypes where code = @code
-- SELECT 2 Tags
select * from as_commentTags where typeID in (select id from as_commentTypes where code = @code )
end
SELECT 1 возвращает настройки типа комментариев, а также enableCheck (возможность отмечать комментарии) и enableFiles (прикрепление файлов).
SELECT 2 возвращает теги, привязанные к типу комментариев
В процедуру передается itemID текущей сущности, к которой крепится блок комментариев, таким образом вы сможете управлять блоком более гибко в плане прав и настроек.
ВАЖНО. Если роли доступа поставить пустыми - то это означает, что данная операция будет доступна всем (т.е. отключена будет проверка).
Настройка кнопок Отметить у комментариев
Данная кнопка служит для отслеживания неких заметок в комментариях (чтобы не забыть их сделать или реализовать).
При добавлении есть галочка нужен флажок или нет у добавляемого комментария. При установке флажка у комментария появляется переключатель Да/Нет.
Его можно отмечать и у комментария проставляется дата простановки переключателя и кто это сделал.
Для возможности добавления этих переключателей в GetOptions в SELECT 1 надо установить enableCheck=1.
Также в процедуре проверки прав проверяем право check (может ли данный пользователь устанавливать данный переключатель).
Демостенд комментариев с переключателями - https://demo.web-automation.ru/list/watch/kommentarii-s-flazhkami---111
Прикрепление файлов к комментариям
Для возможности прикрепления файлов необходимо реализовать следующее:
1. В GetOptions в SELECT 1 добавить EnableFiles = 1
2. Создать и настроить 2 менеджера ресурсов {code}CommentView (для вывода загруженных файлов к комментарию), {code}CommentUpload (для поля добавления комментария).
В итоге к комментарию можно будет добавлять файлы.
ВАЖНО. В as_comments должно быть поле guid типа uniqueidentifier (к нему цепляются файлы комментария)
Дополнительная процедура проверки доступа hasRight
Для более тонкой настройки доступа к комментариям вы можете использовать хранимые процедуры вида comments_{typeCode}_hasRight.
На входе string username, string right (view, add, delete, check) и int itemID. На выходе - ResultModel (bool Result, string Msg). Выполняется только в случае, если базовая проверка по ролям прошла успешно.
CREATE PROCEDURE [dbo].[comments_client_hasRight]
@itemID nvarchar(128),
@right nvarchar(64), -- view, add, delete, check
@username nvarchar(128)
as begin
-- WARNING If SP exists - then rights check here (use only we haму access by default roles settings)
-- SELECT 1
select 1 Result, '' Msg
end
SQL коллбек после добавления комментария
После добавления комментария можно реализовать дополнительную хранимую процедуру comments_{code}_afterAdd (например для уведомления пользователя о комментарии). Редактировать ее можно в Управлении типами комментариев.
На входе: @itemID, @code, @text, @username
На выходе: SELECT 1 с result, msg и SELECT 2 Внешние действия
CREATE PROCEDURE [dbo].[comments_client_afterAdd]
@itemID nvarchar(64),
@code nvarchar(32),
@text nvarchar(max),
@username nvarchar(32)
AS
BEGIN
-- выполняется после добавления комментария
insert into as_trace(header, code)
values( @code +' ' + @itemID + ' '+ @username , 'comment')
Select '' Msg, 1 Result
END
Подмена стандартных процедур выборки комментариев
Также вы можете подменить стандартные процедуры GetComments, AddComment, DeleteComment на свои. Это делается на странице /commenttypes. Это может быть полезным, когда вы хотите брать комментарии из другого источника.
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем Настройка уведомлений для личного кабинета на сайте Как настроить чат помощи для пользователей Внедрение чата в личный кабинет пользователя Работа с комментариями к объектам Телеграм боты и отправка сообщений в Telegram в веб-платформе Falcon Space Как создать чат бот ВКонтакте. VK бот для обработки сообщений в группе. Как сделать push уведомление Как отправить Email, SMS или уведомление пользователю Как отправлять SMS с сайта через smsc.ru Отправка email с шаблоном письма Как сделать ежедневную отправку отчета по проекту в групповой чат Telegram? Настройки почты для отправки сообщений с сайта Видеочат. Интеграция с Vox Implant Базовая интеграция с Jitsi Meet (звонки с видео) Отправка СМС через targetsms.ru Как сделать механизм отправки различных писем по шаблону с возможностью редактирования перед отправкой
- Дизайн, стилизация
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы