FastComments.com

Додавање интерактивних коментара у линији у документе, књиге и слично

FastComments Collab Chat омогућава корисницима да истицањем и анотирањем било ког текстуалног садржаја на вашем сајту креирају нитима повезане дискусије везане за одређене селекције текста. Корисници могу да означе речи, реченице или целе параграфе како би започели колаборативне разговоре директно унутар вашег садржаја.

Ова функција је идеална за уређивачке повратне информације, окружења за заједничко читање, образовне платформе, преглед докумената и сваку ситуацију у којој желите контекстуалне дискусије везане за одређени текст.

Имајте на уму да су ови документи специфични за функционалност Collab Chat. Можете додати коментарисање за садржаје са многобројним страницама, попут књига, са по једном нити по страници, без коришћења collab chat. FastComments такође не наплаћује по страници или по нити. Collab Chat је посебно када желите да дозволите корисницима да означе текст и коментаришу означени део текста.

Можете видети пример овде.

Примери Internal Link

Основни пример

Најједноставнији начин коришћења Collab Chat-а је да циљате један контејнер садржаја. Овај пример показује како омогућити означавање текста на чланку:

Основни пример Collab Chat
Copy CopyRun External Link
1
2<!DOCTYPE html>
3<html>
4<head>
5 <title>My Article with Collab Chat</title>
6</head>
7<body>
8 <div id="article-content" style="min-height: 500px">
9 <h1>My Article Title</h1>
10 <p>This is a paragraph that users can annotate. Simply highlight any text to start a discussion!</p>
11 <p>You can have multiple paragraphs, and users can highlight text across any of them.</p>
12 </div>
13
14 <script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
15 <script>
16 FastCommentsCollabChat(document.getElementById('article-content'), {
17 tenantId: 'demo'
18 });
19 </script>
20</body>
21</html>
22

Пример са прилагођеним URL ID (по страници књиге, чланку, итд.)

Према подразумеваним подешавањима, Collab Chat користи URL странице у комбинацији са путањом елемента и опсегом текста да идентификује разговоре. Можете обезбедити прилагођени urlId да бисте имали већу контролу над тим како се разговори групишу:

Collab Chat са прилагођеним URL ID
Copy Copy
1
2<script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
3<script>
4 FastCommentsCollabChat(document.getElementById('article-content'), {
5 tenantId: 'demo',
6 urlId: 'book-one-page-2'
7 });
8</script>
9

Ово је корисно ако се структура вашег URL-а промени, а желите да задржите исте разговоре, или ако желите да делите исте анотације разговора преко више страница.

Пример са тамним режимом

Ако ваш сајт има тамну позадину, омогућите подршку за тамни режим како бисте осигурали да кориснички интерфејс ћаскања изгледа исправно:

Collab Chat са тамним режимом
Copy CopyRun External Link
1
2<!DOCTYPE html>
3<html>
4<head>
5 <title>My Article with Collab Chat - Dark Mode</title>
6 <style>
7 body {
8 background-color: #1a1a1a !important;
9 color: #e0e0e0 !important;
10 font-family: system-ui, -apple-system, sans-serif;
11 padding: 20px;
12 margin: 0;
13 }
14 #article-content {
15 max-width: 800px;
16 margin: 0 auto;
17 background-color: #2d2d2d;
18 padding: 20px;
19 border-radius: 8px;
20 }
21 h1 {
22 color: #ffffff !important;
23 }
24 p {
25 color: #e0e0e0 !important;
26 line-height: 1.6;
27 }
28 .fastcomments-collab-chat-top-bar {
29 background-color: #2d2d2d !important;
30 color: #e0e0e0 !important;
31 border-bottom: 1px solid #444 !important;
32 }
33 </style>
34</head>
35<body>
36 <div id="article-content" style="min-height: 500px">
37 <h1>My Article Title</h1>
38 <p>This is a paragraph that users can annotate. Simply highlight any text to start a discussion!</p>
39 <p>You can have multiple paragraphs, and users can highlight text across any of them.</p>
40 </div>
41
42 <script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
43 <script>
44 FastCommentsCollabChat(document.getElementById('article-content'), {
45 tenantId: 'demo',
46 hasDarkBackground: true
47 });
48 </script>
49</body>
50</html>
51

Пример са онемогућеном горњом траком

Према подразумеваним поставкама, Collab Chat приказује горњу траку са бројем корисника и бројем дискусија. Можете је онемогућити:

Collab Chat са онемогућеном горњом траком
Copy CopyRun External Link
1
2<!DOCTYPE html>
3<html>
4<head>
5 <title>My Article with Collab Chat - No Top Bar</title>
6</head>
7<body>
8 <div id="article-content" style="min-height: 500px">
9 <h1>My Article Title</h1>
10 <p>This is a paragraph that users can annotate. Simply highlight any text to start a discussion!</p>
11 <p>You can have multiple paragraphs, and users can highlight text across any of them.</p>
12 </div>
13
14 <script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
15 <script>
16 FastCommentsCollabChat(document.getElementById('article-content'), {
17 tenantId: 'demo',
18 topBarTarget: null
19 });
20 </script>
21</body>
22</html>
23

Пример са повратним позивом за број коментара

Можете пратити када се коментари додају или ажурирају помоћу commentCountUpdated повратног позива:

Collab Chat са повратним позивом за број коментара
Copy Copy
1
2<script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
3<script>
4 FastCommentsCollabChat(document.getElementById('article-content'), {
5 tenantId: 'demo',
6 commentCountUpdated: function(count) {
7 console.log('Total comments:', count);
8 document.getElementById('comment-badge').textContent = count;
9 }
10 });
11</script>
12

Пример са више секција

Можете иницијализовати Collab Chat на више одвојених одељка ваше странице. Сваки одељак ће имати своје независне анотације:

Collab Chat на више секција
Copy Copy
1
2<div id="intro-section">
3 <h2>Introduction</h2>
4 <p>Content for the introduction...</p>
5</div>
6
7<div id="main-section">
8 <h2>Main Content</h2>
9 <p>Content for the main article...</p>
10</div>
11
12<script src="https://cdn.fastcomments.com/js/embed-collab-chat.min.js"></script>
13<script>
14 // Иницијализујте на уводном одељку
15 FastCommentsCollabChat(document.getElementById('intro-section'), {
16 tenantId: 'demo',
17 urlId: 'my-article-intro'
18 });
19
20 // Иницијализујте на главном одељку
21 FastCommentsCollabChat(document.getElementById('main-section'), {
22 tenantId: 'demo',
23 urlId: 'my-article-main'
24 });
25</script>
26

Додавање коментара у реалном времену онлајн књигама Internal Link

Можете иницијализовати Collab Chat по страници ако желите, и имати одвојене нитове по страници, једноставно проследите параметру urlId вредност као што је book-one-page1. Ова конфигурација такође функционише за нормални видгет коментара.

Понашање селекције текста Internal Link

Како одабир текста функционише

Када корисници одаберу текст унутар Collab Chat контејнера, видгет захвата тај избор и омогућава им да покрену дискусију. Избор може бити мали као једна реч или велики као више параграфа који се протежу кроз различите елементе.

Задршка при одабиру

На десктоп уређајима постоји задршка од 3.5 секунде између тренутка када корисник одабере текст и појављивања упита за дискусију. Ово спречава треперење корисничког интерфејса када корисници само истичу текст ради копирања или читања. На мобилним уређајима упит се појављује одмах јер је одабир текста на екрану осетљивом на додир обично намернији.

Јединствени идентификатори разговора

Сваки разговор добија јединствени urlId који комбинује URL странице, путању DOM елемента и серијализовани опсег текста. Ово осигурава да сваки избор текста креира посебан разговор који се може касније поново пронаћи.

Ако у вашој конфигурацији обезбедите прилагођени urlId, он ће се комбиновати са путањом елемента и опсегом текста да би се креирао коначни идентификатор.

Визуелно истицање

Када за одређени избор текста постоји дискусија, тај текст добија визуелно истицање. Истицање је реализовано коришћењем позадинских боја и појављује се при проласку курсора или када је повезани прозор ћаскања отворен.

Систем истакнућа ради тако што обмотава одабрани текст у посебан елемент који се може стилски прилагодити. Овај приступ осигурава да истакнућа остану тачна чак и када је основна HTML структура сложена.

Позиционирање прозора ћаскања

Када корисник кликне на истакнуто или креира нову белешку, прозор ћаскања се појављује близу одабраног текста. Видгет аутоматски израчунава најбољу позицију за овај прозор на основу расположивог простора у приказу (viewport).

Систем позиционирања користи CSS класе попут to-right, to-left, to-top и to-bottom да означи у ком правцу се прозор ћаскања треба проширити од истакнутог текста. На мобилним уређајима (екрани ширине мање од 768px), прозор ћаскања увек се појављује преко целог екрана за бољу употребљивост.

Димензије прозора ћаскања

Прозори ћаскања на десктопу имају ширину од 410px са размаком од 20px и визуелну стрелицу од 16px која показује на истицање текста. Ове димензије су фиксне ради доследног понашања, али можете прилагодити изглед помоћу CSS-а.

Одабири преко више елемената

Корисници могу одабрати текст који обухвата више HTML елемената, на пример истицање од средине једног параграфа до почетка другог. Систем серијализације опсега то правилно обрађује и истаћи ће сав одабрани текст чак и преко граница елемената.

Компатибилност са прегледачима

Систем одабира текста користи стандардни API window.getSelection() који је подржан у свим модерним прегледачима. За старије верзије Internet Explorer-а користи се document.selection као резервна опција за компатибилност.

Постојаност одабира

Када се за одабир текста креира разговор, та белешка остаје и ако се страница освежи. Серијализовани опсег и DOM пут омогућавају видгету да обнови истакнућа на истом месту када се корисници врате на страницу.

Ово поуздано функционише све док садржај ваше странице остане стабилан. Ако промените текст или реструктурирате HTML, постојеће белешке можда више неће бити правилно поравнане са текстом. Из тог разлога најбоље је избегавати велике измене садржаја на страницама са активним белешкама, или размислити о миграцији белешки када су измене садржаја неопходне.

Прилагођавање Internal Link

Подршка за тамни режим

Динамичан тамни режим

Ако је тамни режим на вашој страници управљан додавањем класе .dark на body елемент, Collab Chat UI ће аутоматски поштовати то без потребе за поновном инициализацијом. Стилови видгета су дизајнирани да реагују на присуство ове класе.

Пример CSS за тамни режим
Copy Copy
1
2/* Ваш CSS за тамни режим */
3body.dark {
4 background: #1a1a1a;
5 color: #ffffff;
6}
7

Прилагођавање стилова помоћу CSS-а

Можете прилагодити изглед означења, прозора за ћаскање и других елемената користећи CSS. Видгет додаје специфичне класе на које можете циљати у вашем стилском листу.

Означавање текста користи FastComments систем за стилизовање коментарских балона, тако да ће сва прилагођавања која сте применили на стандардни коментарски видгет такође утицати на Collab Chat.

Прилагођавање горње траке

Горња трака приказује број корисника који су на мрежи и број дискусија. Можете прилагодити њену позицију тако што ћете као topBarTarget доставити прилагођени елемент:

Прилагођена локација горње траке
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: document.getElementById('my-custom-header')
5});
6

Или га у потпуности онемогућите тако што ћете га поставити на null:

Онемогући горњу траку
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: null
5});
6

Понашање на мобилним уређајима

На екранима у ширини мањој од 768px, Collab Chat се аутоматски пребацује на мобилно-оптимизовани распоред. Прозори за ћаскање се појављују преко целог екрана уместо да леже поред текста, а кашњење при селекцији је уклоњено ради непосредније интеракције.

Ово понашање је уграђено и не захтева никакву конфигурацију. Видгет аутоматски детектује величину екрана и прилагођава се.

Изглед прозора за ћаскање

Прозори за ћаскање су ширине 410px на десктопу са стрелицом од 16px која показује на истакнути текст. Прозори се позиционирају аутоматски на основу расположивог простора у видљивом прозору, користећи позиционирајуће класе као што су to-right, to-left, to-top, и to-bottom.

Можете додати прилагођени CSS да прилагодите боје, фонтове, размаке или друга визуелна својства ових прозора. Прозори за ћаскање користе исту структуру компоненти као стандардни FastComments видгет, па наслеђују сва глобална прилагођавања која сте применили.

Локализација

Collab Chat подржава све исте опције локализације као стандардни FastComments видгет. Поставите опцију locale да бисте приказали текст корисничког интерфејса на различитим језицима:

Поставите локал
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 locale: 'es' // Шпански
5});
6

FastComments подржава десетине језика. Поставка локала утиче на сав текст корисничког интерфејса укључујући упите, дугмад и текст места за унос (placeholder).

Наслеђене опције прилагођавања

Пошто Collab Chat проширује стандардни коментарски видгет, он наслеђује све опције прилагођавања од основног видгета. Ово укључује прилагођене CSS класе, прилагођене преводе, прилагођавање аватара, форматирање датума и још много тога.

Погледајте главну документацију за прилагођавање FastComments за комплетну листу доступних опција прилагођавања.

Рад са прилагођеним фонтовима

Ако ваша страница користи прилагођене фонтове, Collab Chat UI ће наследити те фонтове из CSS-а ваше странице. Можда ћете морати да креирате правило за прилагођавање видгета и @import-ујете било које фонтове у прилагођеном CSS-у у том правилу ако желите да лебдећи прозор за ћаскање користи исте фонтове.

Синхронизација уживо Internal Link

Ажурирања у реалном времену

Collab Chat користи WebSocket везе за синхронизацију свих разговора у реалном времену међу свим повезаним корисницима. Када неко направи нову анотацију, дода коментар или обрише дискусију, сви остали корисници који гледају исту страницу виде ажурирање одмах без освежења.

Како ради синхронизација преко WebSocket-а

Када иницијализујете Collab Chat, видгет успоставља WebSocket везу са FastComments серверима. Ова веза остаје отворена током корисничке сесије и слуша ажурирања везана за текућу страницу.

WebSocket систем користи три типа broadcast порука за Collab Chat. The new-text-chat догађај се активира када неко направи нову анотацију на страници. The updated-text-chat догађај се активира када неко ажурира постојећу конверзацију. The deleted-text-chat догађај се активира када неко обрише анотацију.

Broadcast ID System

Да би се спречили ефекти еха где корисници виде своје акције које им се враћају назад, свака измена укључује јединствени broadcastId. Када корисник креира или ажурира анотацију, њихов клијент генерише UUID за ту операцију. Када WebSocket емитује ажурирање назад свим клијентима, изворни клијент игнорише ажурирање јер се поклапа са његовим broadcastId.

Ово обезбеђује глатку интеракцију где корисници виде своје измене одмах у корисничком интерфејсу без чекања на рунд-трип преко сервера, а истовремено осигурава да сви остали корисници добију ажурирање.

Број корисника уживо

Горња трака приказује број корисника који тренутно гледају страницу. Овај број се ажурира у реалном времену како корисници приступају и напуштају страницу. Број корисника се обезбеђује преко исте WebSocket везе и аутоматски се увећава/смањује на основу догађаја повезивања и прекида везе.

Отпорност везе

Ако WebSocket веза падне услед мрежних проблема или одржавања сервера, видгет аутоматски покушава поновно успостављање везе. Током периода поновног повезивања, корисници и даље могу да интерагују са постојећим анотацијама, али неће видети ажурирања у реалном времену од других корисника док се веза не поново успостави.

Када се веза поново успостави, видгет синхронизује стање како би осигурао да нису пропуштена никаква ажурирања. Ово се дешава транспарентно без потребе за интервенцијом корисника.

Напомене о пропусном опсегу

WebSocket поруке су лагане и садрже само основне информације потребне за синхронизацију стања. Креирање нове анотације обично користи мање од 1KB пропусног опсега. Систем такође укључује интелигентно груписање порука како би се смањила учесталост порука током периода високе активности.

Ваше метрике коришћења у FastComments контролној табли прате pubSubMessageCount и pubSubBandwidth тако да можете пратити активност синхронизације у реалном времену на вашим сајтовима.

Синхронизација између картица

Ако корисник има исту страницу отворену у више прегледачких картица, ажурирања у једној картици појављују се одмах у другим картицама. Ово функционише кроз исти WebSocket механизам синхронизације и не захтева додатну конфигурацију.

Безбедност

WebSocket поруке се преносе преко сигурних веза (WSS) и укључују валидацију тенанта како би се осигурало да корисници примају само ажурирања за конверзације за које су овлашћени. Сервер валидаује све операције пре него што их емитује како би спречио неовлашћен приступ или манипулацију.


Имате питања?

То је све за FastComments Collab Chat! Ако имате било каквих питања, треба вам помоћ са имплементацијом, или имате предлоге за функције, молимо вас обавестите нас испод или обратите се нашем тиму за подршку.

За живе примере, погледајте Govscent.org који користи Collab Chat у продукцији.