FastComments.com

Dodajte inline komentare uživo u dokumente, knjige itd.

FastComments Collab Chat omogućava korisnicima da označe i komentarišu bilo koji tekstualni sadržaj na vašoj web-stranici, stvarajući rasprave u nitima vezane za određene odabire teksta. Korisnici mogu odabrati riječi, rečenice ili čitave odlomke da započnu kolaborativne razgovore direktno u okviru vašeg sadržaja.

Ova funkcionalnost je savršena za uređivačke povratne informacije, okruženja za zajedničko čitanje, obrazovne platforme, pregled dokumenata i svaku situaciju u kojoj želite kontekstualne diskusije vezane za određeni dio teksta.

Imajte na umu da su ovi dokumenti specifični za funkcionalnost Collab Chat. Možete dodati komentare za sadržaj koji ima mnogo stranica, poput knjiga, koristeći nit-po-stranici, bez korištenja Collab Chat-a. FastComments također ne naplaćuje po stranici ili po niti. Collab Chat je posebno namijenjen kada želite omogućiti korisnicima da odaberu tekst i komentarišu označeni dio teksta.

Možete vidjeti primjer ovdje.

Примери 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 callback:

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 секунде између тренутка када корисник одабере текст и када се појави позив за дискусију. Ово спречава треперење корисничког интерфејса када корисници једноставно истичу текст да би га копирали или прочитали. На мобилним уређајима позив се појављује одмах јер је одабир текста на уређајима на додир обично намернији.

Јединствени ID-ови разговора

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

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

Визуелна истакања

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

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

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

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

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

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

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

Селекције кроз више елемената

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

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

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

Постојаност селекције

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

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

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

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

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

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

Пример 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 да бисте приказали UI текст на различитим језицима:

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

FastComments подржава десетине језика. Подешавање локала утиче на сав UI текст, укључујући упитнике, дугмад и текст у плејсхолдерима.

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

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

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

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

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

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

Ažuriranja u realnom vremenu

Collab Chat koristi WebSocket veze za sinhronizaciju svih razgovora u realnom vremenu među svim povezanim korisnicima. Kada neko kreira novu anotaciju, doda komentar ili obriše diskusiju, svi ostali korisnici koji gledaju istu stranicu vide ažuriranje odmah bez osvježavanja.

Kako WebSocket sinhronizacija radi

Kada inicijalizujete Collab Chat, widget uspostavlja WebSocket vezu sa FastComments serverima. Ta veza ostaje otvorena tokom trajanja korisničke sesije i sluša ažuriranja vezana za trenutnu stranicu.

WebSocket sistem koristi tri tipa broadcast poruka za Collab Chat. new-text-chat događaj se pokreće kada neko kreira novu anotaciju na stranici. updated-text-chat događaj se pokreće kada neko ažurira postojeći razgovor. deleted-text-chat događaj se pokreće kada neko obriše anotaciju.

Sistem Broadcast ID-a

Da bi se spriječili efekti odjeka gdje korisnici vide svoje vlastite akcije emitovane nazad sebi, svako ažuriranje sadrži jedinstveni broadcastId. Kada korisnik kreira ili ažurira anotaciju, njihov klijent generiše UUID za tu operaciju. Kada WebSocket emituje ažuriranje nazad svim klijentima, klijent koji je inicirao akciju ignoriše ažuriranje jer se poklapa sa njegovim vlastitim broadcastId.

Ovo osigurava glatku interakciju gdje korisnici vide svoje promjene odmah u UI bez čekanja na povratni put preko servera, a istovremeno osigurava da svi ostali korisnici dobiju ažuriranje.

Broj korisnika uživo

Gornja traka prikazuje broj korisnika koji trenutno gledaju stranicu. Ovaj broj se ažurira u realnom vremenu dok se korisnici pridružuju i napuštaju. Broj korisnika se prenosi preko iste WebSocket veze i automatski se povećava/smanjuje na osnovu događaja povezivanja i prekida veze.

Otpornost veze

Ako WebSocket veza padne zbog mrežnih problema ili održavanja servera, widget automatski pokušava ponovo uspostaviti vezu. Tokom perioda ponovnog povezivanja, korisnici i dalje mogu komunicirati sa postojećim anotacijama, ali neće vidjeti ažuriranja u realnom vremenu od drugih korisnika dok veza ne bude ponovo uspostavljena.

Kada se veza ponovo uspostavi, widget vrši resinhronizaciju kako bi osigurao da nijedno ažuriranje nije propušteno. Ovo se dešava transparentno bez potrebe za intervencijom korisnika.

Razmatranja propusnosti

WebSocket poruke su lake i sadrže samo osnovne informacije potrebne za sinhronizaciju stanja. Kreiranje nove anotacije obično koristi manje od 1KB propusnosti. Sistem takođe uključuje inteligentno grupisanje poruka kako bi se smanjila frekvencija poruka tokom perioda velike aktivnosti.

Vaši metrički podaci u FastComments kontrolnoj tabli prate pubSubMessageCount i pubSubBandwidth tako da možete pratiti aktivnost sinhronizacije u realnom vremenu na vašim stranicama.

Sinhronizacija između tabova

Ako korisnik ima istu stranicu otvorenu u više tabova preglednika, ažuriranja u jednom tabu pojavljuju se odmah u ostalim tabovima. Ovo radi preko istog WebSocket mehanizma sinhronizacije i ne zahtijeva dodatnu konfiguraciju.

Sigurnost

WebSocket poruke se prenose preko sigurnih veza (WSS) i sadrže validaciju zakupca (tenant) kako bi se osiguralo da korisnici primaju samo ažuriranja za razgovore koje su ovlašteni vidjeti. Server validira sve operacije prije nego što ih emitira kako bi spriječio neovlašteni pristup ili manipulaciju.

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

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

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