Aggiungi pulsante aggiuntivo al menu dei post

Ehi.
Sono piuttosto nuovo nella creazione di plugin per Discourse, ma mi chiedevo se qualcuno potesse aiutarmi a spiegare come aggiungere un pulsante aggiuntivo al menu dei post. Per quanto riesco a vedere, questo dovrebbe essere gestito tramite un plugin personalizzato.
Ad esempio, un pulsante “Mi hai fatto ridere” che si comporti in modo simile al pulsante “Mi piace”, registrando quante persone hanno cliccato sul post o sul commento.
Conosco il plugin Retort, ma non risolve il mio problema, poiché sono più interessato a capire come aggiungere questo pulsante.

Ciao,
questa è una questione complessa. Dalla mia esperienza, dovrebbe essere gestita tramite un plugin. Dovrai aggiungere un pulsante aggiuntivo al widget post-menu e creare una migrazione del database per memorizzare le tue reazioni “mi hai fatto ridere”.

Puoi prendere ispirazione dal plugin Discourse Solved:

Anche questo plugin aggiunge un pulsante aggiuntivo al menu dei post e implementa funzionalità memorizzate nel database.

Assicurati di leggere la guida per gli sviluppatori sulla creazione di plugin:

Buona fortuna.

Grazie mille, @zcuric. Ho provato a capire come funziona questo plugin, così come Retort, ma finora senza successo. Continuerò comunque in questa direzione.
Potresti per favore indicarmi come Discourse gestisce il rendering del pulsante Mi piace? Nello specifico, come nasconde il pulsante Mi piace sui propri post? In modo che io possa fare lo stesso per il mio pulsante personalizzato.

@marek Prego. Avrai già letto un po’ il codice, a partire da qui:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/widgets/post-menu.js#L122

Per quanto riguarda il backend, si tratta al 99% di una richiesta API. Non mi sono addentrato molto. Probabilmente si tratta di un endpoint. Il mio parere è che, quando si crea un plugin, sarà necessario definire route REST API con endpoint GET, POST e DELETE che popolino i dati del tuo campo nel database, aggiunto tramite migrazione del database, e tutto ciò verrà realizzato con Rails. Almeno è così che io affronterei la situazione.