FastComments.com

Collab Chat

Dodajte inline žive komentare u dokumente, knjige, itd

FastComments Collab Chat omogućava korisnicima da istaknu i dodaju beleške na bilo koji tekstualni sadržaj na vašem veb-sajtu, kreirajući tematske diskusije povezane sa određenim izabranim delovima teksta. Korisnici mogu izabrati reči, rečenice ili cele pasuse da započnu kolaborativne razgovore direktno u vašem sadržaju.

Ova funkcija je idealna za uređivačke povratne informacije, kolaborativna okruženja za čitanje, obrazovne platforme, pregled dokumenata i svaku situaciju u kojoj želite kontekstualne diskusije vezane za određeni tekst.

Note that these docs are specific to the Collab Chat functionality. You can add commenting for content with lots of pages, like Knjige, with thread-per-page, without using collab chat. FastComments also does not charge per-page or per-thread. Collab Chat is specifically when you want to allow users to select text and comment on the highlighted section of text.

You can see primer ovde.

Primeri Internal Link

Osnovni primer

Najjednostavniji način korišćenja Collab Chat-a je da ciljate jedan sadržajni kontejner. Ovaj primer pokazuje kako omogućiti tekstualne anotacije na članku:

Osnovni primer 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

Primer sa prilagođenim URL ID-jem (po stranici knjige, članku, itd.)

Po default-u, Collab Chat koristi URL stranice u kombinaciji sa putem elementa i opsegom teksta za identifikaciju razgovora. Možete navesti prilagođeni urlId da biste imali veću kontrolu nad načinom grupisanja razgovora:

Collab Chat sa prilagođenim URL ID-jem
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

Ovo je korisno ako se struktura vaših URL-ova menja, ali želite da zadržite iste razgovore, ili ako želite deliti iste anotacije razgovora preko više stranica.

Primer sa tamnim režimom

Ako vaš sajt ima tamnu pozadinu, omogućite podršku za tamni režim kako bi UI četa izgledao ispravno:

Collab Chat sa tamnim režimom
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

Primer sa onemogućenom gornjom trakom

Po default-u, Collab Chat prikazuje gornju traku sa brojem korisnika i brojem diskusija. Možete je onemogućiti:

Collab Chat bez gornje trake
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

Primer sa povratnim pozivom broja komentara

Možete pratiti kada se komentari dodaju ili ažuriraju koristeći commentCountUpdated callback:

Collab Chat sa povratnim pozivom broja komentara
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

Primer sa više sekcija

Možete inicijalizovati Collab Chat na više odvojenih sekcija vaše stranice. Svaka sekcija će imati svoje nezavisne anotacije:

Collab Chat na više sekcija
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 // Inicijalizuj na uvodnom odeljku
15 FastCommentsCollabChat(document.getElementById('intro-section'), {
16 tenantId: 'demo',
17 urlId: 'my-article-intro'
18 });
19
20 // Inicijalizuj na glavnom odeljku
21 FastCommentsCollabChat(document.getElementById('main-section'), {
22 tenantId: 'demo',
23 urlId: 'my-article-main'
24 });
25</script>
26

Dodavanje komentara uživo u onlajn knjige Internal Link

Možete inicijalizovati Collab Chat po stranici ako želite i imati odvojene niti po stranici, jednostavno prosledite parametru urlId vrednost kao book-one-page1. Ova konfiguracija takođe radi za standardni widget za komentare.

Ponašanje pri izboru teksta Internal Link

Kako funkcioniše izbor teksta

Kada korisnici izaberu tekst unutar kontejnera Collab Chat, vidžet zabeleži taj izbor i omogućava im da započnu diskusiju. Izbor može biti mali kao jedna reč ili obilniji kao više pasusa koji obuhvataju različite elemente.

Odgoda pri izboru

Na desktop uređajima postoji odgoda od 3,5 sekunde između trenutka kada korisnik izabere tekst i pojave upita za diskusiju. Ovo sprečava treperenje UI-ja kada korisnici samo ističu tekst da bi ga kopirali ili pročitali. Na mobilnim uređajima upit se pojavljuje odmah jer je izbor teksta na touch ekranima obično namerniji.

Jedinstveni ID-evi konverzacija

Svaka konverzacija dobija jedinstveni urlId koji kombinuje URL stranice, DOM putanju elementa i serijalizovani opseg teksta. Ovo osigurava da svaki izbor teksta kreira posebnu konverzaciju koju kasnije možete ponovo pronaći.

Ako u svojoj konfiguraciji obezbedite prilagođeni urlId, on će biti kombinovan sa element path i text range da bi se kreirao finalni identifikator.

Vizuelna isticanja

Kada za određeni izbor teksta postoji diskusija, taj tekst dobija vizuelno isticanje. Isticanje je realizovano korišćenjem pozadinskih boja i pojavljuje se pri prelasku miša ili kada je povezani chat prozor otvoren.

Sistem isticanja radi tako što obavije izabrani tekst u poseban element koji se može stilizovati. Ovakav pristup obezbeđuje da isticanja ostanu precizna čak i kada je osnovna HTML struktura kompleksna.

Pozicioniranje chat prozora

Kada korisnik klikne na isticanje ili kreira novu anotaciju, chat prozor se pojavljuje u blizini izabranog teksta. Vidžet automatski izračunava najbolju poziciju za ovaj prozor na osnovu raspoloživog prostora u viewportu.

Sistem pozicioniranja koristi CSS klase kao što su to-right, to-left, to-top i to-bottom da označi u kom pravcu bi chat prozor trebalo da se proširi od isticanja. Na mobilnim uređajima (ekrani manje od 768px širine), chat prozor se uvek prikazuje preko celog ekrana radi bolje upotrebljivosti.

Dimenzije chat prozora

Chat prozori su široki 410px na desktopu sa razmakom od 20px i vizuelnom strelicom od 16px koja pokazuje ka istaknutom tekstu. Ove dimenzije su fiksne kako bi se obezbedilo dosledno ponašanje, ali izgled možete prilagoditi pomoću CSS-a.

Selekcija preko više elemenata

Korisnici mogu izabrati tekst koji obuhvata više HTML elemenata, na primer isticanje od sredine jednog pasusa do početka drugog. Sistem serijalizacije opsega pravilno obrađuje ovakve situacije i istaknuće sav izabrani tekst čak i preko granica elemenata.

Kompatibilnost sa pregledačima

Sistem za izbor teksta koristi standardni window.getSelection() API koji je podržan u svim modernim pregledačima. Za starije verzije Internet Explorera koristi se fallback na document.selection radi kompatibilnosti.

Očuvanje selekcije

Kada se za izbor teksta kreira konverzacija, ta anotacija ostaje čak i ako se stranica ponovo učita. Serijalizovani opseg i DOM putanja omogućavaju vidžetu da obnovi isticanja na tačno istom mestu kada se korisnici vrate na stranicu.

Ovo funkcioniše pouzdano sve dok sadržaj vaše stranice ostane stabilan. Ako promenite tekstualni sadržaj ili restrukturirate svoj HTML, postojeće anotacije možda više neće biti pravilno poravnate sa tekstom. Iz tog razloga, najbolje je izbegavati velike promene sadržaja na stranicama sa aktivnim anotacijama, ili razmotriti migraciju anotacija kada su promene sadržaja neophodne.

Prilagođavanje Internal Link

Podrška za tamni režim

Dinamički tamni režim

Ako se tamni režim vašeg sajta kontroliše dodavanjem .dark klase na body element, Collab Chat UI će to automatski poštovati bez potrebe za ponovnom inicijalizacijom. Stilovi vidžeta dizajnirani su da reaguju na prisustvo ove klase.

Primer CSS-a za tamni režim
Copy Copy
1
2/* Your dark mode CSS */
3body.dark {
4 background: #1a1a1a;
5 color: #ffffff;
6}
7

Prilagođeni stilovi pomoću CSS-a

Možete prilagoditi izgled isticanja teksta, prozora za ćaskanje i drugih elemenata pomoću CSS-a. Vidžet dodaje specifične klase koje možete ciljati u svom stilskom listu.

Isticanje teksta koristi sistem stilizovanja komentara FastComments, tako da će sve prilagodbe koje ste primenili na standardni vidžet za komentare uticati i na Collab Chat.

Prilagođavanje gornje trake

Gornja traka prikazuje broj korisnika na mreži i broj diskusija. Možete prilagoditi njenu poziciju tako što ćete obezbediti prilagođeni element kao topBarTarget:

Prilagođena lokacija gornje trake
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: document.getElementById('my-custom-header')
5});
6

Ili je potpuno onemogućite postavljanjem na null:

Onemogućavanje gornje trake
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 topBarTarget: null
5});
6

Ponašanje na mobilnim uređajima

Na ekranima širine manje od 768px, Collab Chat automatski prelazi na mobilni optimizovani raspored. Prozori za ćaskanje se pojavljuju preko celog ekrana umesto da lebde pored teksta, a kašnjenje pri selekciji se uklanja radi brže interakcije.

Ovo ponašanje je ugrađeno i ne zahteva nikakvu konfiguraciju. Vidžet automatski detektuje veličinu ekrana i prilagođava se u skladu s tim.

Izgled prozora za ćaskanje

Prozori za ćaskanje su široki 410px na desktopu sa strelicom od 16px koja pokazuje na istaknuti tekst. Prozori se automatski pozicioniraju na osnovu dostupnog prostora u vidnom polju, koristeći klase pozicioniranja poput to-right, to-left, to-top i to-bottom.

Možete dodati prilagođeni CSS da biste prilagodili boje, fontove, razmake ili druge vizuelne osobine ovih prozora. Prozori za ćaskanje koriste istu strukturu komponenti kao standardni FastComments vidžet, tako da nasleđuju sve globalne prilagodbe koje ste primenili.

Lokalizacija

Collab Chat podržava sve iste opcije lokalizacije kao standardni FastComments vidžet. Postavite opciju locale da biste prikazali tekst UI na različitim jezicima:

Podešavanje lokalizacije
Copy Copy
1
2FastCommentsCollabChat(element, {
3 tenantId: 'demo',
4 locale: 'es' // Spanish
5});
6

FastComments podržava desetine jezika. Podešavanje lokalizacije utiče na sav tekst UI, uključujući upite, dugmad i tekst rezervisanog mesta.

Nasleđene opcije prilagođavanja

Pošto Collab Chat proširuje standardni vidžet za komentare, nasleđuje sve opcije prilagođavanja osnovnog vidžeta. To uključuje prilagođene CSS klase, prilagođene prevode, prilagođavanje avatara, formatiranje datuma i mnogo više.

Pogledajte glavnu FastComments dokumentaciju za prilagođavanje za kompletnu listu dostupnih opcija prilagođavanja.

Rad sa prilagođenim fontovima

Ako vaš sajt koristi prilagođene fontove, Collab Chat UI će naslediti te fontove iz CSS-a vaše stranice. Možda ćete morati da kreirate pravilo prilagođavanja vidžeta i da @import-ujete fontove u prilagođeni CSS u tom pravilu ako želite da lebdeći prozor za ćaskanje koristi iste fontove.

Sinhronizacija uživo Internal Link

Ažuriranja u realnom vremenu

Collab Chat koristi WebSocket veze da sinhronizuje sve razgovore u realnom vremenu među svim povezanim korisnicima. Kada neko napravi novu anotaciju, doda komentar ili obriše diskusiju, svi ostali korisnici koji gledaju istu stranicu odmah vide ažuriranje bez osvežavanja.

Kako funkcioniše WebSocket sinhronizacija

Kada inicijalizujete Collab Chat, vidžet uspostavlja WebSocket vezu sa FastComments serverima. Ova 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. Događaj new-text-chat se aktivira kada neko napravi novu anotaciju na stranici. Događaj updated-text-chat se aktivira kada neko ažurira postojeći razgovor. Događaj deleted-text-chat se aktivira kada neko obriše anotaciju.

Sistem broadcast ID-jeva

Da bi se sprečili efekti odjeka gde korisnici vide sopstvene akcije koje im se vraćaju, svako ažuriranje sadrži jedinstveni broadcastId. Kada korisnik kreira ili ažurira anotaciju, njegov klijent generiše UUID za tu operaciju. Kada WebSocket emituje ažuriranje svim klijentima, klijent koji je pokrenuo operaciju ignoriše ažuriranje jer se poklapa sa sopstvenim broadcastId.

Ovo obezbeđuje glatku interakciju gde korisnici odmah vide svoje promene u UI-ju bez čekanja na povratni put kroz server, a istovremeno se obezbeđuje 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 kako korisnici dolaze i odlaze. Broj korisnika se dostavlja kroz istu WebSocket vezu i automatski se povećava/smanjuje na osnovu događaja povezivanja i prekida veze.

Otpornost veze

Ako se WebSocket veza prekine zbog problema sa mrežom ili održavanja servera, vidžet automatski pokušava da se ponovo poveže. Tokom perioda ponovnog povezivanja, korisnici i dalje mogu da komuniciraju sa postojećim anotacijama, ali neće videti ažuriranja u realnom vremenu od drugih korisnika dok se veza ne uspostavi ponovo.

Kada se veza ponovo uspostavi, vidžet se resinhronizuje da bi se obezbedilo da nijedno ažuriranje nije promašeno. Ovo se dešava transparentno, bez potrebe za intervencijom korisnika.

Razmatranja o propusnom opsegu

WebSocket poruke su lagane i sadrže samo osnovne informacije potrebne za sinhronizaciju stanja. Kreiranje nove anotacije obično koristi manje od 1KB propusnog opsega. Sistem takođe uključuje inteligentno grupisanje kako bi smanjio učestalost poruka tokom perioda visoke aktivnosti.

Vaše metrike korišćenja u FastComments kontrolnoj tabli prate pubSubMessageCount i pubSubBandwidth tako da možete pratiti aktivnost sinhronizacije u realnom vremenu na svojim sajtovima.

Sinhronizacija između tabova

Ako korisnik ima istu stranicu otvorenu u više tabova pregledača, ažuriranja u jednom tabu se odmah pojavljuju u ostalim tabovima. Ovo funkcioniše kroz isti mehanizam WebSocket sinhronizacije i ne zahteva nikakvu dodatnu konfiguraciju.

Bezbednost

WebSocket poruke se prenose preko sigurnih veza (WSS) i uključuju validaciju tenanta kako bi se obezbedilo da korisnici primaju samo ažuriranja za razgovore koje imaju ovlašćenje da vide. Server validira sve operacije pre emitovanja kako bi sprečio neovlašćen pristup ili manipulaciju.

Imate pitanja?

To je sve za FastComments Collab Chat! Ako imate bilo kakvih pitanja, treba vam pomoć pri implementaciji, ili imate predloge za funkcionalnosti, javite nam se ispod ili kontaktirajte naš tim za podršku.

Za primere uživo, pogledajte Govscent.org koji koristi Collab Chat u produkciji.