Emoji Reactions
Pulsanti di reazione con emoji per i tuoi articoli. Una reazione per lettore, conteggi facoltativi, senza cookie e senza IP grezzi memorizzati.
Estensione
Emoji Reactions
Pulsanti di reazione con emoji per i tuoi articoli. Una reazione per lettore, conteggi facoltativi, senza cookie e senza IP grezzi memorizzati.
Descrizione
Reactions aggiunge ai tuoi articoli pulsanti di reazione con emoji (💗 🤔 😗 per impostazione predefinita). Ogni lettore sceglie una reazione per articolo: un nuovo clic la rimuove, un clic su un’altra la sostituisce.
Funzionalità
- Fino a 6 pulsanti, configurati dalla pagina di amministrazione (
key=emoji:label). - Etichette facoltative accanto a ogni emoji e conteggi pubblici facoltativi.
- Una pagina di amministrazione che elenca i tuoi 10 articoli con più reazioni.
- La pagina di amministrazione segue la lingua dell’amministrazione (inglese o giapponese).
- Nessun database aggiuntivo: i dati risiedono nell’archiviazione EmDash del plugin.
- Non richiede autorizzazioni né accesso alla rete.
Privacy
- I lettori vengono riconosciuti tramite un hash SHA-256 del loro indirizzo IP e del loro User-Agent con un salt casuale per sito. L’IP e lo User-Agent stessi non vengono mai memorizzati.
- Memorizzato per ogni voto: ID dell’articolo, l’hash, la reazione scelta e un timestamp. Nessun cookie.
Nota: il plugin non mostra nulla da solo. Dopo averlo installato, aggiungi il componente
Reactions.astroal modello dei tuoi articoli (vedi Installazione).
Requisiti
- EmDash 1.x su Cloudflare (D1)
- Piano Workers Paid (i plugin in sandbox vengono eseguiti nel binding Worker Loader)
Installazione
1. Installare il plugin
Installa Reactions da questa pagina con Open in EmDash, oppure compilalo dal sorgente:
pnpm install
pnpm run build # dist/
Se compili dal sorgente, aggiungi il pacchetto al tuo sito (pnpm add file:../emdash-plugin-emoji-reactions) ed elencalo in astro.config.mjs sotto sandboxed: [reactions].
2. Abilitare la sandbox dei plugin
I plugin in sandbox richiedono il binding Worker Loader. In wrangler.jsonc (commentato nei modelli):
"worker_loaders": []
Assicurati che src/worker.ts esporti PluginBridge (i modelli *-cloudflare lo fanno già) e che astro.config.mjs imposti sandboxRunner: sandbox().
3. Aggiungere i pulsanti al modello degli articoli (obbligatorio)
Copia site-snippets/Reactions.astro in src/components/ e inseriscilo nella pagina dell’articolo:
---
import Reactions from "../../components/Reactions.astro";
// `post` comes from getEmDashEntry()
---
Usa post.data.id (l’ID del database), non post.id (lo slug). Gli slug cambiano quando un articolo viene rinominato, e gli slug tradotti contengono /, che il plugin rifiuta.
Proprietà: contentId (obbligatoria), heading (una stringa vuota lo nasconde), label (nome accessibile del gruppo di pulsanti). Imposta --rx-accent nel tuo CSS per adattarlo al tuo colore di accento.
4. Scegliere i pulsanti
Apri Reactions nella barra laterale dell’amministrazione e modifica il campo, ad esempio:
love=💗:Love, hmm=🤔:Hmm, whistle=😗:Whoa
Fino a 6 voci. Le chiavi iniziano con una lettera minuscola. I conteggi sono memorizzati per chiave: rinominare una chiave avvia un nuovo pulsante; rimuoverne una la nasconde ma ne conserva i conteggi.
FAQ
I pulsanti non compaiono sul mio sito
- Verifica che
Reactions.astrosia aggiunto al modello dei tuoi articoli. Il plugin stesso non mostra nulla. - Apri la console del browser. Gli errori vengono registrati come
[reactions] state: HTTP 403 CSRF_REJECTED .... - Se hai copiato
dist/nel tuo sito invece di installare il pacchetto, verifica chedist/index.mjscontenga"routes". Senza, EmDash tratta le rotte pubbliche come private e rifiuta le richieste.
Posso nascondere i conteggi?
Sì. Disattiva Show counts nella pagina di amministrazione. I conteggi vengono allora esclusi anche dall’API pubblica, quindi non possono essere letti dalla pagina. Continuano a essere contati e restano visibili a te nella pagina di amministrazione.
Due persone nella mia casa/ufficio contano come un solo lettore
I lettori dietro lo stesso IP con lo stesso browser vengono trattati come uno. È un pulsante di reazione informale, non un sistema di voto.
Si può fare spam con il pulsante?
Ogni lettore ha una reazione per articolo, quindi i clic ripetuti la attivano e disattivano soltanto. Le rotte però sono pubbliche. Se serve, aggiungi una regola di Cloudflare Rate Limiting per /_emdash/api/plugins/reactions/react.
Funziona nello sviluppo in locale?
Sì. Quando non è disponibile alcun IP del client, il browser invia invece un ID casuale conservato in localStorage (rx-visitor).
Sicurezza
Segnalare una vulnerabilità
Segnala i problemi di sicurezza in privato tramite la segnalazione privata di vulnerabilità di GitHub, non nelle issue pubbliche.
A cosa può accedere il plugin
- Nessuna autorizzazione e nessun accesso alla rete. Il plugin non può leggere né modificare i tuoi contenuti, i media, gli utenti o le impostazioni al di fuori della propria archiviazione, e non può chiamare altri servizi.
- Memorizza dati solo nella propria archiviazione EmDash: i conteggi per articolo, un record per voto e le impostazioni dei pulsanti.
Dati memorizzati sui lettori
- Un hash SHA-256 troncato dell’indirizzo IP e dello User-Agent del lettore, combinato con un salt casuale per sito. L’indirizzo IP e lo User-Agent stessi non vengono mai memorizzati.
- Per ogni voto: ID dell’articolo, quell’hash, la reazione scelta e un timestamp. Nessun cookie.
Rotte pubbliche
state (GET) e react (POST) sono pubbliche. Entrambe convalidano l’input: contentId deve corrispondere a [A-Za-z0-9_\-:.], le reazioni devono essere una chiave configurata e i corpi delle richieste sono limitati a 1 KB. La rotta di amministrazione è privata. Per limitare gli abusi, aggiungi una regola di Cloudflare Rate Limiting per /_emdash/api/plugins/reactions/react.
Registro delle modifiche
0.2.1 — 2026-10-18
- Aggiunta l’icona del registro.
0.2.0 — 2026-10-15
Prima versione nel registro dei plugin EmDash.
- Interruttori Show labels e Show counts nella pagina di amministrazione. Le etichette sono nascoste per impostazione predefinita e conservate come suggerimenti e testo per i lettori di schermo. Con i conteggi nascosti, anche l’API pubblica li omette.
- Richiede EmDash 1.x. Le impostazioni dei pulsanti passano a
ctx.settings; i pulsanti salvati nella 0.1.x vengono mantenuti. - La pagina di amministrazione segue la lingua dell’amministrazione (inglese o giapponese). Le etichette predefinite sono ora in inglese (
Love/Hmm/Whoa); le chiavi non cambiano, quindi i conteggi esistenti restano associati. Reactions.astro: registra gli errori nella console del browser invece di nasconderli in silenzio, aggiunge una proprietàlabele la variabile CSS--rx-accent, e documenta il passaggio dipost.data.id.pnpm run testora termina con una compilazione, cosìdist/include sempre le dichiarazioni delle rotte pubbliche.
0.1.0
- Versione iniziale (non pubblicata nel registro).