Коллекции

:information_source: Сводка Пользовательские коллекции связанных тем
:hammer_and_wrench: Ссылка на репозиторий https://github.com/Alteras1/discourse-collections
:open_book: Руководство по установке Как установить плагины в Discourse

Предпросмотр

Мобильная версия

Коллекции

Этот плагин позволяет пользователям создавать коллекции тем, которые отображаются при просмотре соответствующих тем. Коллекции могут включать любые URL-адреса и будут видны на всех связанных темах. Коллекции можно организовывать в разделы, и любые изменения в коллекции отражаются на всех связанных темах. Нет ограничений на связь тем, поэтому пользователи могут создавать коллекции через категории/теги.

Заголовок и описание

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

Разделы

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

Подколлекции

Пользователи также могут создавать подколлекции, которые отображаются только для одной темы, позволяя пользователям добавлять релевантные URL-адреса (например, конкретные сообщения или внешние ресурсы) только для этой темы. Добавленные URL-адреса тем не будут связаны.

Разрешения

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

Демонстрация разрешений

Настройки

Название Описание
collections enabled Включить/отключить плагин. По умолчанию: true
collection by topic owner Разрешить автору темы создавать коллекции. По умолчанию: true
collection by topic owner allow groups Ограничить авторов тем, которые могут создавать коллекции. Ограничивает collection by topic owner. По умолчанию: TL1
collection modification by allowed groups Группы, имеющие право создавать/изменять любые коллекции. По умолчанию: Admin Moderators TL4.
sections in subcollection Разрешить заголовки разделов в подколлекциях. По умолчанию: true

Альтернативы

Этот плагин во многом вдохновлен (и в какой-то момент был основан на) плагине Discourse Doc Categories. Хотя плагин Doc Categories имеет хороший механизм индексации и отличное отображение, его дизайн был ориентирован на страницы в стиле вики, где всё собрано в одной категории. Аналогично, индексация зависит от форматированного текстового ввода в отдельной теме, что имеет свои плюсы и минусы.

Компонент темы DiscoTOC - automatic table of contents также позволяет организовывать ссылки вне тела сообщения, но ограничен одной темой.

Если ваша цель — просто организация в стиле вики, то Discourse Doc Categories будет более подходящим вариантом. Если вам нужно, чтобы только некоторые страницы имели связанные темы, то лучше выбрать DiscoTOC - automatic table of contents.

Примечания

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

Существовал альтернативный сценарий, когда это был бы просто компонент темы, где индексация осуществлялась бы через введенные пользователем div-блоки с URL-адресами других сообщений. Однако после разработки 90% инструментов, мастеров и кода для этого я понял, что это того не стоит, и пользователи, скорее всего, пропустят все написанные руководства и будут жаловаться на то, почему что-то не работает. Поэтому этот путь был заброшен. Честно говоря, это не плохое решение, так как оно было бы гораздо более легковесным, чем плагин, но это возложило бы на пользователей лишнюю нагрузку по обеспечению правильного форматирования не только в одном сообщении, но и в нескольких.

В настоящее время я пометил это как experimental, так как я еще не на 100% определился с функциями интерфейса (например, иконки) и системой разрешений. Кроме того, мне нужно добавить автоматизированные модульные тесты.

21 лайк

К сведению: все видео не работали :thinking: (iPad)

1 лайк

Хм, я думал, что iOS Safari поддерживает WebM…

Я заменил видео на MP4. Спасибо!

5 лайков

Можно ли включить «публичные» коллекции, как в Discourse Docs?

1 лайк

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

5 лайков

Обновлен плагин с поддержкой эмодзи и цветных квадратов в боковой панели!

5 лайков

Это выглядит действительно потрясающе. И абсолютно превосходная документация — я голосую за это как за лучший #plugin с документацией на meta.discourse.org!!

Вы думали о том, чтобы расширить его, чтобы он также охватывал списки тем?

Часто бывает очень полезно иметь коллекцию ссылок по категориям или по тегам. Например, это может быть приватная категория, посвящённая конкретной группе, которая также использует другие инструменты (например, несколько папок в Google Docs, портал местного самоуправления, связанный канал чата и групповой почтовый ящик). Было бы идеально, если бы модераторы категорий могли управлять этим.

3 лайка

Спасибо большое!

Это определённо то, о чём я раньше размышлял, но, на мой взгляд, это плохо впишется в текущую концепцию организации тем, управляемую пользователями. Для уровня категорий и тегов это не совсем подходит, так как управление пришлось бы ограничить только модераторами. Изначальный сценарий использования заключался в создании ссылок на связанные темы, которые слишком велики для 1–2 тем, но слишком малы для отдельного тега или категории.

Отображение индексов тем в боковой панели для категорий можно реализовать с помощью плагина Discourse Doc Categories, хотя для этого потребуется иной способ настройки. Конечно, неудобно использовать два плагина для выполнения очень похожих задач, но, на мой взгляд, изначальная философия каждого из них достаточно различается, чтобы оправдать отдельные подходы.

Добавление расширения совместимости для плагина Private Topics Plugin — очень интересная идея с точки зрения пользователя. Мне стоит это обдумать…

Остаётся только уровень по тегам. Создание pull-запроса для плагина Discourse Doc Categories (или разработка нового плагина/темы) для тегов — возможный вариант, но в данный момент я об этом не думаю. Возможно, в будущем.

На самом деле, это, вероятно, отлично подойдёт для моего случая. Не уверен, однако, насколько он гибкий (поэкспериментирую с ним на этой неделе).

Звучит очень интересно. Какой сценарий использования вы имеете в виду?

Для обычных пользователей категория с включённой функцией «Частные темы» будет отображать только их собственные темы. Поэтому я могу представить, что это один из немногих случаев, когда имеет смысл разрешить плагину Collections переносить коллекцию с уровня тем на уровень категории для каждого пользователя.

На форуме, в котором я участвую, есть частная категория, которую пользователи используют как личное пространство для черновиков и тестирования. Там создаётся очень много тем, поэтому здесь иногда происходит организация тем самими пользователями.

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

Как это может быть не тем самым?

1 лайк

Думаю, вы не можете создавать категории.

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

Я начал работу над компонентом темы, чтобы добавить последовательную навигацию для коллекций, такую как ← Назад и Вперед →, а также пагинацию в модальном окне…

Вот мой рабочий репозиторий:

3 лайка

Очень актуально, сегодня займусь этим, и, похоже, это был последний недостающий компонент.

@Alteras У меня баг с крестиком закрытия модального окна в окне «Создать коллекции». На него можно навести курсор и нажать, но модальное окно не закрывается до перезагрузки страницы.

1 лайк

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

Меня интересует решение заменять содержимое поста вместо простого перенаправления пользователя на тему.

Мне очень нравится идея использовать ← Назад и Вперед → над таймлайном для навигации по темам без необходимости использовать боковую панель. Возможно, это можно разместить рядом с таймлайном, как оглавление, чтобы к нему можно было легко получить доступ в длинных первых постах, не прокручивая страницу вверх… Или, возможно, просто добавить декоративные элементы к верхнему и нижнему посту…

Если вы не против, я хотел бы изучить возможность внедрения некоторых из этих идей непосредственно в плагин, возможно, с дополнительными настройками сайта для администраторов. Конечно, я не возражаю против создания компонента темы на основе плагина, что даст пользователям больше возможностей для настройки. Дайте знать, если вам понадобится помощь с вашим компонентом темы. Вы должны иметь возможность получать информацию о текущей отображаемой коллекции из сервиса Ember service:collection-sidebar, не анализируя DOM.

Хм… это действительно странно. Мне не удаётся воспроизвести эту проблему. Недавно я внес некоторые изменения в плагин, чтобы устранить проблемы с устаревшими функциями, возможно, это повлияло на работу? Пожалуйста, проверьте, обновлён ли плагин. Также поделитесь деталями вашей конфигурации (браузер, мобильное устройство/десктоп, версия Discourse).

2 лайка

У меня устаревшая версия, возможно, поэтому. Я всё ещё был на коммите от 6 ноября.
ETA: Не обращайте внимания, обновление решило проблему.

1 лайк

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

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

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

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

Пожалуйста, делайте!

Я также вижу возможность адаптировать этот TC или, в ином случае, предоставить такие типы навигации и отображения для категорий документации :page_with_curl:

2 лайка

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

  1. Кнопка «Коллекции» видна даже если пользователь не входит в разрешённые группы. При попытке создать коллекцию возникает ошибка Internal Server Error (она корректно отображается в виде красной полосы в модальном окне).
  2. В боковой панели коллекций кнопка внизу предлагает исходный вариант «Создать коллекцию». Чтобы управлять коллекцией, приходится использовать кнопку в исходном посте. Было бы очень полезно иметь опцию «Управление» сразу в кнопке боковой панели коллекций.
  3. Возможно ли разделить права доступа для коллекций и подколлекций? Подколлекции могли бы быть чрезвычайно полезны для пользователей, которые хотят самостоятельно группировать темы, без широкого воздействия, которое коллекция оказывает на все связанные темы.

Наконец, как этот плагин обрабатывает ситуацию, когда две коллекции ссылаются на одну и ту же тему? А если это две подколлекции? Это подталкивает меня к поддержке предложения №3 для более удобного управления пересекающимися целями пользователей, которым нравится функция коллекций.

РЕДАКТИРОВАНО: Я понял, что пункт №1 связан с ошибкой при изменении коллекции разрешёнными группами, которая допускает темы, не принадлежащие пользователю. Тем не менее, более понятное сообщение об ошибке было бы полезно!

1 лайк

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

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

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


Хм… Мне кажется, что лучше было бы создать отдельный плагин, представляющий собой просто папки закладок, которые можно просматривать публично или приватно… «Личные коллекции»? «Библиотека закладок»? «Плейлисты тем»? Или, возможно, я просто расширю этот плагин. Но базовый код и философия этих двух функций были бы совершенно разными… Немного жаль, что название «Коллекции» довольно широкое и может интерпретироваться множеством способов.

3 лайка