Distintivo Discourse-Math

Alguém consegue pensar em uma maneira de conceder automaticamente um emblema personalizado ao fazer uma postagem que renderiza uma equação usando o plugin discourse-math?

Não tenho ideia de por onde começar com isso

5 curtidas

Olá @agf1997

Concordo que o plugin de matemática do Discourse é muito bem feito e uma ótima adição para um site.

Uma abordagem seria contratar um desenvolvedor de plugins do Discourse para modificar o plugin de matemática para você, atualizando um campo personalizado no banco de dados quando um membro do fórum usar o plugin.

Em seguida, você poderia criar uma consulta fácil no banco de dados (na área de administração de emblemas) para emitir emblemas.

Espero que isso ajude.

3 curtidas

Certamente não é um recurso crítico para a missão. Eu apenas buscava uma maneira simples de destacar pessoas que usam o recurso de formatação matemática, para incentivar outros a também utilizá-lo.

1 curtida

Olá @agf1997

Você precisará de código de plugin para isso, como mencionei.

Isso indica que você tem duas opções:

  1. Modificar ou estender o plugin de matemática você mesmo
  2. Contratar alguém para modificar ou estender o plugin de matemática para você

Qualquer que seja a direção que você decidir seguir, precisará modificar ou estender o plugin de matemática para atualizar um campo personalizado no banco de dados quando um membro do fórum usar o plugin.

Espero que isso ajude.

2 curtidas

Sim, você pode ter medalhas para postagens de Math bem-sucedidas sem precisar modificar o plugin.

Primeiro, você precisará habilitar a opção Badge SQL não pode mais ser editado por padrão no seu site.

Depois disso, crie uma nova medalha que seja acionada pela seguinte consulta:

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 curtidas

Olá @Falco

Essa é uma consulta de emblema muito boa.

Pergunta:

Você tem uma lista de todos os :symbols do Discourse que podem ser usados em uma consulta de emblema para ajudar a acionar?

A razão pela qual pergunto é que vi que você usou :backfill e :post_id, e quando olho para este link, vejo outros :symbols do Ruby usados:

Existe uma referência concisa para os símbolos Ruby do Discourse que podem ser usados em uma consulta de emblema?

Eu encontrei isso, relacionado a gatilhos de emblema (após sua postagem acima), que foi muito útil:

Nesse artigo do Discourse, são mencionados esses helpers de gatilho:

  • :user_ids
  • :post_ids
  • :backfill

Esses três são “todos eles”?

Muito obrigado pela sua ajuda!

3 curtidas

@Falco Incrível! Uma pergunta rápida… isso deve funcionar em posts anteriores? Quando eu clico em “Pré-visualizar distintivos concedidos”, recebo a mensagem “Nenhum distintivo para atribuir.”

Ao clicar em “Pré-visualizar com plano de consulta”, obtenho:

GroupAggregate  (custo=2021.68..2021.70 linhas=1 largura=16)
  Chave de Agrupamento: p.user_id
  ->  Sort  (custo=2021.68..2021.68 linhas=1 largura=8)
        Chave de Ordenação: p.user_id
        ->  Nested Loop  (custo=0.28..2021.67 linhas=1 largura=8)
              Filtro de Junção: (t.category_id = c.id)
              ->  Nested Loop  (custo=0.28..2017.97 linhas=1 largura=12)
                    ->  Seq Scan on posts p  (custo=0.00..2009.66 linhas=1 largura=12)
                          Filtro: ((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  (custo=0.28..8.30 linhas=1 largura=8)
                          Condição de Índice: (id = p.topic_id)
                          Filtro: ((deleted_at IS NULL) AND visible)
              ->  Seq Scan on categories c  (custo=0.00..3.35 linhas=28 largura=4)
                    Filtro: (allow_badges AND (NOT read_restricted))