Соблюдайте настройки видимости всех автоматических групп

(Запрос функции от одного человека — это отчёт об ошибке для другого… :upside_down_face:)

Страница индекса «Группы» (например, /groups или /g) должна учитывать настройки видимости автоматических групп и отображать их соответствующим образом. Это работает для группы Moderators, но не для остальных. Причина — жёстко заданное исключение в GroupsController.index(), из-за которого другие автоматические группы никогда не появляются на странице индекса для пользователей, не являющихся сотрудниками, независимо от настроек видимости.

Такое исключительное поведение проблематично как минимум по двум причинам:

  1. Если администратор хочет сделать автоматические группы доступными для индексации обычными пользователями, это ему не позволяет.
  2. Разрыв между настройкой видимости и фактической видимостью опасным образом запутывает. В частности, создаётся впечатление, что настройка игнорируется или не имеет значения для автоматических групп (например, «Ну ладно, похоже, автоматические группы всегда доступны только сотрудникам, что бы я ни настраивал…»), хотя на самом деле настройка продолжает контролировать доступ к страницам конкретных групп (например, /g/trust_level_0) и их спискам участников.

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

Я предлагаю просто удалить 6 строк кода из app/controllers/groups_controller.rb, реализующих это поведение.

Если считается, что по умолчанию необходимо иметь «чистую» страницу индекса для новых установок Discourse, то лучшим решением было бы установить настройки видимости автоматических групп по умолчанию как «только для сотрудников» при их первоначальном создании системой. установить фильтр по умолчанию на странице индекса на «неавтоматические» для пользователей, не являющихся сотрудниками.

(Настройка видимости — это контроль доступа — значение по умолчанию должно соответствовать разумному уровню доступа, независимо от того, как выглядит страница индекса.)

К сведению, эта тема является продолжением обсуждения:

7 лайков

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

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

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

5 лайков

Так что не решается ли это легко следующим образом:

  • сделать «Автоматические группы» доступными в выпадающем списке фильтров для неадминистраторов?
  • установить фильтр по умолчанию (как для администраторов, так и для обычных пользователей) так, чтобы он исключал автоматические группы;
  • убедиться, что /g/trust_level_0?asc=true использует ту же логику авторизации, что и /g?type=automatic (сейчас первый работает, а второй выдаёт сообщение «Нет видимых групп»).

Дополнительная просьба: если перейти к /g через /admin, то панели меню администратора внезапно исчезают. Это раздражает. Как насчёт того, чтобы добавить эти панели на эту страницу, если к /g обращается администратор?

4 лайка

Обсуждение этой проблемы есть в теме #ux: Groups Tab in Admin Inconsistent With Other Tabs

3 лайка

Да, как говорится, «очевидно»… Я отредактировал своё первоначальное предложение, чтобы учесть это. «Видимость» — это механизм контроля доступа, и к нему следует относиться соответствующим образом (например, интерфейс должен прозрачно отражать состояние этого контроля, а не подстраивать сам контроль под внешний вид интерфейса).

Действительно! Я не заметил, что опция «автоматические» недоступна в выпадающем списке фильтров для неперсонала. (Она исключается тем же блоком кода из шести строк, который скрывает автоматические группы — значит, удаление этого кода решит и эту проблему.)

На уровне бэкенда код уже определяет фильтр «non_automatic», однако, похоже, он никогда не предлагается никому (ни персоналу, ни обычным пользователям) в выпадающем списке фильтров.

2 лайка

Когда вы говорите «индексировать автоматические группы для пользователей, не являющихся сотрудниками», вы имеете в виду разрешить таким пользователям получать доступ к фильтру автоматических групп и видеть их?

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

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

Это выглядит как хороший список задач. Спасибо, что сформулировали это таким образом.

2 лайка

В приведённом выше цитировании я конкретно имею в виду «показывать автоматические группы на странице индекса /g, когда её просматривают не-сотрудники». Независимо от настроек фильтра, автоматические группы (кроме «Модераторов») в настоящее время не разрешено отображать на странице индекса /g для не-сотрудников.

В более позднем сообщении (предшествующем этому) я также выступаю за предоставление опции «Автоматические группы» в выпадающем списке фильтра для всех пользователей, а не только для сотрудников. Я не вижу веских причин скрывать её от не-сотрудников. (Обратите внимание, что независимо от того, что отображается в выпадающем меню, фильтр всё равно доступен любому пользователю, который может ввести правильное ключевое слово в адресную строку.)

Обратите внимание, что я отредактировал своё предложение по умолчанию по упрощению интерфейса до вашего сообщения; вы процитировали исходную версию. Исправленный/текущий текст моего первого сообщения (без зачёркиваний для краткости) выглядит так:

2 лайка

В настоящее время на новом сайте список пользователей выглядит следующим образом.

Если кратко своими словами, запрос состоит в том, чтобы изменить каталог групп по адресу /g следующим образом:

  1. также отображать фильтр «Автоматические группы» для участников;
  2. отображать все автоматические группы участникам при выборе фильтра;
  3. исключить автоматические группы из вида по умолчанию по адресу /g.

Мне кажется, что пункт (3) должен применяться ко всем пользователям, а не только к участникам. Одна из наших целей — обеспечить администраторам и модераторам максимально похожий на опыт участников интерфейс, чтобы снизить путаницу.

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

Для администратора:

Для участника:

Я бы переформулировал это с точки зрения необходимых изменений и немного пересмотрел приоритеты:
A. прекратить исключение автоматических групп из индекса для пользователей, не являющихся сотрудниками
B. прекратить исключение фильтра «Автоматические группы» из выпадающего меню для пользователей, не являющихся сотрудниками
C. добавить в выпадающее меню фильтр «Неавтоматические группы» для всех пользователей
D. включить фильтр «Неавтоматические группы» по умолчанию на странице /g

Моя формулировка пунктов C и D по сравнению с пунктом 3 не случайна: я считаю, что интерфейс должен быть максимально прозрачным в отношении применяемой фильтрации. Если фильтр не выбран, интерфейс должен отображать нефильтрованный вид, то есть показывать все группы, видимые/доступные пользователю.

Пункт 3 можно интерпретировать как «когда фильтр не выбран, тихо применять фильтр non_automatic», но я считаю, что это всё равно будет запутанно. Если фильтр не выбран, то и фильтрация не должна применяться. И наоборот, если фильтрация применяется, она должна быть названа и очевидна для пользователя.

Если копнуть глубже в детали: часть проблемы выбора фильтра связана с тем, как подсказка «Фильтр по типу группы» была втиснута в метку элемента меню «Фильтр не выбран». Я считаю, что в конечном итоге будет понятнее, если элемент «Фильтр не выбран» будет называться «Все группы». Затем добавьте дополнительный элемент «Неавтоматические группы», и вы сможете сделать любой из них элементом по умолчанию. Таким образом, (a) будет понятно, когда пользователь видит отфильтрованный список, и (b) будет понятно, как переключиться на нефильтрованный вид.

Если бы это зависело от меня, я бы назвал элементы меню фильтрации так:

  • Все группы
  • Группы, в которых я состою (так как Мои группы неоднозначно.)
  • Группы, которыми я владею
  • Публичные группы
  • Приватные группы (так как Закрытые звучит как «закрыты» или «больше не используются».)
  • Автоматические группы
  • Неавтоматические группы

Кроме того, я бы изменил строку подсказки в текстовом поле с «Все группы» на «фильтр по названию группы».

И… я бы поменял местами выпадающее меню и текстовое поле!
discourse-filter-pulldown-then-textbox

2 лайка

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

Все это хорошие предложения, кроме того, что я считаю «Автоматические» и «Неавтоматические» громоздкими, слишком техническими названиями, которые не очень понятны. Поскольку автоматические группы связаны с привилегиями, которые люди получили или им были предоставлены, может быть, мы сможем придумать название, которое это отражает?

1 лайк

Только что зашел с той же мыслью: было бы лучше, если бы по умолчанию отображалось то, что сейчас называют «Публичные + Закрытые группы», и при этом появилась бы такая опция. А также убрать двусмысленность вокруг «Мои группы», которую можно понять как «Группы, которыми я владею», и «Закрытые группы», которые могут звучать так, будто они больше не активны, — это тоже кажется разумным.

Звучит это очень похоже на:

  • Системные группы
  • Группы пользователей, «Публичные и частные группы» или просто «Группы»

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

Также было бы полезно давать человеко-читаемые псевдонимы для «Автоматических/Системных групп». Например, в некоторых языках предпочитают заглавные буквы в начале, как в поле «Полное имя» в обычных группах. Кроме того, предоставление им опциональных, логичных текстов описания по умолчанию могло бы сделать их менее «техническими», если администратор сайта не решит объяснить их в описании через меню «Управление».

Возможно, также можно было бы добавить какое-то визуальное различие между «Автоматическими» и «Неавтоматическими» группами, например, иконку или лёгкую серую заливку их блоков, или что-то подобное.

4 лайка

Мне нравятся системные группы!

4 лайка

“Автоматические” звучит так, будто речь идёт о деталях реализации — пользователи автоматически добавляются в группы. С точки зрения обычного пользователя это кажется не совсем логичным. Кроме того, это не совсем точно: пользователи не автоматически добавляются в группы сотрудников. Возможно, наиболее точное название для таких групп — «предварительно созданные группы», но это ужасное название.

Группы «Системные» звучат нормально, но как насчёт того, чтобы разделить автоматические группы на «Уровни доверия» и «Сотрудники»? Фильтр типов групп мог бы выглядеть так:

  • Мои группы
  • Группы, которыми я владею
  • Публичные группы
  • Закрытые группы
  • Уровни доверия
  • Сотрудники

При необходимости можно добавить настройку сайта trust level groups public, которая определяла бы, отображаются ли группы уровней доверия на странице групп.

3 лайка

Отделить сотрудников сайта — отличная идея. Люди, возможно, по достоинству оценят возможность увидеть здесь список модераторов и администраторов. В противном случае им нужно знать, что нужно перейти на страницу /about.

3 лайка

Возвращаюсь к теме ещё раз… Пожалуйста, добавьте меня в число пользователей/администраторов, которым не нужен фильтр «Показать всё, кроме системных/автоматических групп». Само наличие этих групп не кажется особенно отвлекающим.

В любом случае, мой приоритет — обеспечить возможность использования настоящего нефильтрованного варианта «Все группы», и я лично предпочитаю простоту: сделать его фильтром по умолчанию для страницы /groups.