Значок Discourse-Math

Может, кто-нибудь подскажет, как автоматически выдавать специальный значок за создание поста, в котором с помощью плагина discourse-math отображается уравнение?

Не знаю, с чего начать.

Привет, @agf1997

Согласен, плагин для математики в Discourse сделан отлично и станет отличным дополнением для сайта.

Один из подходов — нанять разработчика плагинов для Discourse, чтобы он модифицировал математический плагин под ваши нужды: обновлял бы пользовательское поле в базе данных, когда участник форума использует этот плагин.

Затем вы сможете создать простой запрос к базе данных (в панели управления значками) для выдачи значков.

Надеюсь, это поможет.

Это, безусловно, не критически важная функция. Я просто искал простой способ выделить людей, использующих функцию математической верстки, чтобы поощрить других тоже её использовать.

Привет, @agf1997

Для этого потребуется код плагина, как я уже упоминал.

Это означает, что у вас есть два варианта:

  1. Изменить или расширить плагин math самостоятельно.
  2. Нанять кого-то, кто изменит или расширит плагин math за вас.

Какой бы путь вы ни выбрали, вам нужно будет изменить или расширить плагин math, чтобы обновлять пользовательское поле в базе данных, когда участник форума использует этот плагин.

Надеюсь, это поможет.

Да, вы можете настроить значки для успешных публикаций с формулами Math без необходимости модифицировать плагин.

Сначала вам нужно включить SQL-запросы для значков больше нельзя редактировать по умолчанию на вашем сайте.

После этого создайте новый значок, который срабатывает по следующему запросу:

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

Привет, @Falco!

Очень хороший запрос для бейджа.

Вопрос:

Есть ли у вас список всех символов Ruby :symbols, которые можно использовать в запросе для бейджа, чтобы помочь с триггерами?

Я спрашиваю, потому что вижу, что вы использовали :backfill и :post_id, а когда я смотрю по этой ссылке, то вижу другие используемые символы Ruby:

Есть ли краткая справка по символам Ruby в Discourse, которые можно использовать в запросе для бейджа?

Я нашёл это, связанное с триггерами бейджей (после вашего сообщения выше), что было очень полезно:

В этой статье Discourse упомянуты следующие помощники для триггеров:

  • :user_ids
  • :post_ids
  • :backfill

Эти три — это «все из них»?

Огромное спасибо за вашу помощь!

@Falco Отлично! Быстрый вопрос… должно ли это работать для предыдущих постов? Когда я нажимаю «Предпросмотр выданных бейджей», я получаю «Нет бейджей для назначения».

При нажатии «Предпросмотр с планом запроса» я получаю:

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))