Добавление системы комментариев на сайте

Смотреть видео

Компонент Комментарии позволяет прикрепить к любой сущности возможность комментирования и хранения истории заметок по данной сущности.

ОБНОВЛЕНИЕ Ноябрь 2021. Добавлены возможности прикрепления файлов и отметки, и обновлены системные процедуры комментариев. Добавлены столбцы в as_comments - https://pastebin.com/N3JLPPJL

Также есть возможность отмечать цветными тегами записи.

Для работы комментариев необходимо указать следующий сниппет:
<div class="as-comments" data-itemid="falcon-space--rabota-s-kommentariyami" 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, то порядок будет от свежих к старым и окно добавления будет сверху от блока комментариев.


Также необходимо в разделе Управление комментариями создать запись с соответствующим typeCode
Здесь вы можете настроить доступ на просмотр комментариев, возможность добавлять и удалять комментарии. 
Также вы можете настроить какие теги будут у данного типа.

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

Примечания

Код комментариев typeCode также используется для построения комментариев в компоненте Таблица.

Если data-itemID - пустая строка или “0”, то комментарии не выводятся!

Комментарии можно раскрашивать. При добавлении программно - через хранимую процедуру (параметр @color). Пользователь может красить комментарии через теги. 

Настройка комментариев через 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. Это может быть полезным, когда вы хотите брать комментарии из другого источника. 

Falcon Space - функциальная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы