Badge Discourse-Math

Qualcuno può pensare a un modo per assegnare automaticamente un badge personalizzato per chi crea un post che rende un’equazione utilizzando il plugin discourse-math?

Non ho idea di da dove iniziare.

5 Mi Piace

Ciao @agf1997

Concordo sul fatto che il plugin matematico di Discourse sia ben fatto e un ottimo contributo per un sito.

Un approccio potrebbe essere pagare uno sviluppatore di plugin Discourse per modificare il plugin matematico in modo che aggiorni un campo personalizzato nel database quando un membro del forum utilizza il plugin.

In seguito, potrai creare una semplice query al database (nell’area di amministrazione dei badge) per assegnare i badge.

Spero che questo ti sia d’aiuto.

3 Mi Piace

Di certo non è una funzionalità critica per la missione. Stavo solo cercando un modo semplice per evidenziare chi utilizza la funzione di formattazione matematica, per incoraggiare anche gli altri a farne uso.

1 Mi Piace

Ciao @agf1997,

Come ho già detto, per fare ciò avrai bisogno di codice plugin.

Questo significa che hai due opzioni:

  1. Modificare o estendere tu stesso il plugin matematico
  2. Assumere qualcuno per modificare o estendere il plugin matematico per te

Qualsiasi strada tu decida di intraprendere, dovrai modificare o estendere il plugin matematico per aggiornare un campo personalizzato nel database quando un membro del forum utilizza il plugin.

Spero che questo ti sia d’aiuto.

2 Mi Piace

Sì, puoi avere badge per i post Math di successo senza dover modificare il plugin.

Per prima cosa, devi abilitare Badge SQL non può più essere modificato per impostazione predefinita sul tuo sito.

Dopo di ciò, crea un nuovo badge che si attiva con la seguente query:

SELECT user_id, MIN(id) AS post_id, current_timestamp AS granted_at 
FROM badge_posts
WHERE cooked LIKE '%<span class="math">%' AND (:backfill OR id IN (:post_ids) )
GROUP BY user_id
7 Mi Piace

Ciao @Falco

È davvero una bella query per le badge.

Domanda:

Hai una lista di tutti i :symbols di Discourse utilizzabili in una query per le badge per aiutare l’attivazione?

La motivo della mia domanda è che ho notato l’uso di :backfill e :post_id, e quando guardo questo link, vedo altri :symbols di Ruby utilizzati:

Esiste un riferimento conciso per i simboli Ruby di Discourse utilizzabili in una query per le badge?

Ho trovato questo, relativo agli attivatori delle badge (dopo il tuo post sopra), che è stato molto utile:

In quell’articolo di Discourse, vengono menzionati questi helper per l’attivazione:

  • :user_ids
  • :post_ids
  • :backfill

Questi tre sono “tutti quelli esistenti”?

Grazie mille per il tuo aiuto!

3 Mi Piace

@Falco Fantastico! Una domanda veloce… dovrebbe funzionare anche sui post precedenti? Quando faccio clic su “Anteprima badge assegnabili” ricevo “Nessun badge da assegnare”.

Fare clic su “Anteprima con piano di query” mi restituisce:

GroupAggregate  (cost=2021.68..2021.70 rows=1 width=16)
  Group Key: p.user_id
  ->  Sort  (cost=2021.68..2021.68 rows=1 width=8)
        Sort Key: p.user_id
        ->  Nested Loop  (cost=0.28..2021.67 rows=1 width=8)
              Join Filter: (t.category_id = c.id)
              ->  Nested Loop  (cost=0.28..2017.97 rows=1 width=12)
                    ->  Seq Scan on posts p  (cost=0.00..2009.66 rows=1 width=12)
                          Filter: ((deleted_at IS NULL) AND (cooked ~~ '%<span class="math">%'::text) AND (post_type = ANY ('{1,2,3}'::integer[])))
                    ->  Index Scan using topics_pkey on topics t  (cost=0.28..8.30 rows=1 width=8)
                          Index Cond: (id = p.topic_id)
                          Filter: ((deleted_at IS NULL) AND visible)
              ->  Seq Scan on categories c  (cost=0.00..3.35 rows=28 width=4)
                    Filter: (allow_badges AND (NOT read_restricted))