Работа с комментариями к объектам
Компонент Комментарии позволяет прикрепить к любой сущности возможность комментирования и хранения истории заметок по данной сущности.
ОБНОВЛЕНИЕ Ноябрь 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 (для поля добавления комментария, с правом загрузки файлов).
Код объекта (сущности-entity, не путать с кодом типа ресурса) у этих двух менеджеров должен быть одинаковый.
В итоге к комментарию можно будет добавлять файлы.
ВАЖНО. В 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. Это может быть полезным, когда вы хотите брать комментарии из другого источника.
JS коллбек после добавления комментария
as.commentcallbacks[{commentcode} + "_add"] = function(params,data){
console.log("addComment", params, data)
}
Как изменить формат времени создания комментария
Для этого в процедуре GetComments (глобальной as_comments_getComments или для конкретного типа comments_{code}_getComments) в выдаваемой модели комментария необходимо добавить строковое поле CreatedText (по умолчанию его нет).
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
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта