Пожелание: визуальный индикатор «пользователь получил значок за этот пост»

Мы стремимся поощрять пользователей помогать друг другу. Мы решили начать выдавать специальную значок «Пользователи помогают пользователям» (u-h-u) тем, кто первым отвечает и чей ответ направлен на помощь.

Поскольку мы хотим, чтобы такое поведение проявлялось как можно чаще, я сделал так, чтобы этот значок можно было получить несколько раз.

Поскольку на данный момент только человеческий интеллект способен оценить, был ли ответ пользователя попыткой помочь или просто «я тоже», этот значок присваивается вручную.

Привлечение людей неизбежно вносит точку отказа, и я понял, что очень легко можно присвоить значок u-h-u одному и тому же пользователю или посту многократно. Ничто этому не препятствует. Для значков, которые можно получить только один раз, они исчезают из выпадающего списка для награждения, но этот — нет.

Поэтому, по нескольким причинам (включая подкрепление для других пользователей), я считаю, что было бы хорошо иметь что-то вроде этого:

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

13 лайков

Это повторяющийся запрос. Наша функция «Связанные темы» отображает его по ссылкам:

11 лайков

Я сначала поискал. :flushed:

7 лайков

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

К тому же новый раздел «Связанные темы» для вашей новой темы работает гораздо лучше простого поиска и может найти темы, которые поиск бы не обнаружил :smile:

10 лайков

Получается, плагин мог бы искать значки для тем и добавлять их в сериализатор? Это, пожалуй, может быть затратно, хотя я пока не изучал, как именно будет выглядеть такой запрос.

4 лайка

Я думаю, это один JOIN с таблицей user_badge, так как в ней содержатся post_ids. Это не должно быть слишком затратно.

3 лайка

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

2 лайка

Я закрыл остальные два в пользу этого и направил их сюда.

Одна вещь, которую Сэм предложил в другой теме, — это добавить уведомление от сотрудников к посту, за который была получена ручная значок, чтобы подчеркнуть его и отметить, что значок уже получен:

4 лайка

Но подождите! Кажется, есть ещё один. Похоже, я хотел это ещё в 2016 году. Возможно, я был первым! :rofl:

8 лайков

Мой сценарий использования таков: я создаю темы «Книжный клуб», и каждый, кто прочитает книгу и обсудит её, должен получить значок «Книжный клуб». Значок можно выдавать многократно, так как у нас каждый месяц новая книга.

Это не может быть полностью автоматическим или массовым через API, поскольку любой, кто напишет «Я не хочу читать эту книгу», технически будет участником темы, а я не хочу давать им значок.

Что я делаю сейчас: читаю обсуждение, и каждый раз, когда кто-то пишет, что закончил книгу и оставил отзыв, я вручную выдаю ему значок. Это приемлемое решение, хотя и занимает немного времени.

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

Короче говоря, если кому-то выдан значок за конкретное сообщение, возможно ли отображать этот значок рядом с этим сообщением? Все необходимые данные для этого уже есть, кажется, это не должно быть слишком сложно? Это действительно помогло бы вести учёт!

P.S. По связанному вопросу: похоже, есть ошибка, из-за которой поле «Причина» на самом деле не заполняется. Я точно выдал значок непосредственно за сообщение, но «Причина» не отображается:

1 лайк

@Shauny, я перенёс ваш пост в эту существующую тему #feature request, чтобы они были сгруппированы вместе. :slight_smile:

Возможно, стоит открыть отдельную тему для этого, чтобы её не упустили. :+1:

3 лайка

Я работаю над добавлением этого здесь, если кто-то хочет помочь протестировать! :slightly_smiling_face:

7 лайков

Отображаются ли все значки, выдаваемые в связи с постами?

Особенно в первых постах легко активируется несколько значков. Например, ссылка на другую тему, размещённая на отдельной строке, достаточна для получения значков «Первая ссылка», «Первая цитата» и «Первая onebox». Поэтому было бы полезно иметь возможность исключать такие значки. На самом деле, я бы предпочёл решение по принципу opt-in, поскольку, думаю, мне хотелось бы исключить большинство значков.

Как система может «лайкнуть» собственный пост? Отображаются ли значки, полученные другими пользователями за действия с постом (например, добавление реакции), рядом с именем автора поста? Что происходит, если многие пользователи получают значок «Первый лайк» за один и тот же пост?

5 лайков

Вау! Это невероятно верное замечание. Похоже, это должно быть настройкой значка.

2 лайка

Спасибо за ранний отзыв!

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

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

Ой, хорошо заметили! Я получал все значки, заработанные для поста, а не только те, которые получил автор поста за этот пост.

5 лайков

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

Во-первых, я добавил цвета типов значков к самим значкам, но мне кажется, что при прокрутке темы это может выглядеть немного слишком отвлекающе:

Что вы думаете? Выглядит нормально или слишком много?

Также я ещё раз подумал о том, как исключить отдельные значки. Мне кажется, что для этого не нужно добавлять целую новую опцию, поэтому я добавил CSS-класс к каждому значку на основе его slug (ссылки), чтобы вы могли выбрать скрытие их индивидуально через CSS вашей темы. Например:

.topic-meta-data .user-badge-button-first-onebox {
  display: none;
}

Это позволяет любому желающему получить тонкую настройку. Вместо того чтобы включать или выключать всё сразу, вы можете решить, на какие значки обратить внимание! :grinning_face_with_smiling_eyes:

.topic-meta-data .user-badge-button-first-onebox {
  animation: blinker 1s step-start infinite;
}

@keyframes blinker {
  50% {
    opacity: 0;
  }
}
4 лайка

А как насчёт всех тех администраторов, которые не являются программистами? Аргумент «это можно скрыть с помощью CSS» работает для многих функций Discourse, но при этом часто всё равно добавляют соответствующий параметр. Я считаю, что должна быть возможность отключить это без использования CSS. При этом я всё же предпочёл бы решение по принципу opt-in, поскольку мне нравится идея подчёркивания конкретных бейджей, но мне бы не понравилось видеть все бейджи «первый xxx» повсюду во всех сообществах Discourse. И я боюсь, что многие администраторы не станут отключать эту функцию, особенно если для этого требуются знания CSS.

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

Мне нравятся цвета, потому что иначе нет никакой разницы между хорошими и отличными темами. Кроме того, цвета могут быть полезны для пользовательских многоцветных изображений, которые были загружены. Но я понимаю вашу обеспокоенность по поводу визуального шума. У плагина реакций есть параметр:

discourse reactions desaturated reaction panel

Снижает визуальный шум реакций, отображая их в ненасыщенном виде до наведения курсора

Многие подобные параметры могли бы работать и здесь. Хотя это тоже можно реализовать с помощью CSS :slight_smile:

5 лайков

Мне нравится цвет.

Касательно CSS — я просто в восторге от того, что появилась возможность отключать некоторые из них.
Было бы лучше, если бы это было опциональное, не связанное с CSS, решение? Безусловно!

Но я здесь нищий. :sweat_smile:

3 лайка

Я не думаю, что администраторам нужно быть программистами, чтобы изменять CSS темы (см.: огромная экосистема тем MySpace в былые времена). Скорее, я считаю, что мы должны стремиться дать администраторам возможность экспериментировать, чтобы сделать свой сайт по-настоящему уникальным.

Выбрать явное включение для каждого значка вполне возможно:

// Скрыть все значки по умолчанию.
.user-badge-buttons > span {
    display: none;
}

// Показать значок «Первая цитата».
.user-badge-buttons > .user-badge-button-first-quote {
    display: revert;
}

Я полностью согласен, спасибо, что обратили на это внимание! Я добавил немного отступа между щитом и значками, чтобы визуально разделить их.

Отлично, тогда оставим всё как есть! :slightly_smiling_face:

2 лайка

Также стоит упомянуть, что добавить пользовательский CSS на свой сайт относительно легко, даже не обладая специальными техническими знаниями: Making custom CSS changes on your site. Если документация для этой функции индикатора бейджа сможет включать примеры CSS для использования, то любому администратору сайта будет довольно тривиально скопировать/вставить то, что ему нужно, и при необходимости внести правки.

2 лайка