Добавить поддержку «личных заметок» в постах

Поддерживает ли Discourse концепцию личной заметки, прикрепленной к сообщению нештатным пользователем и видимой только автору этой заметки?

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

1 лайк

Разве личные сообщения (ЛС) не работают для этого? ЛС от поста пользователя ссылаются на этот пост.

Я использую ЛС для себя как своего рода блокнот, особенно если хочу сослаться на пост.

Закладки позволяют отметить цель. Значок закладки подсвечивается на теме или ответе после установки.


3 лайка

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

Похоже, закладки не предназначены для использования форматирования в пояснении к закладке. Как только вы нажмёте клавишу Enter (например, чтобы начать новый абзац), закладка будет создана.

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

Это выглядит как блестящая идея. Если бы я был на вашем месте, я бы написал плагин для поддержки этого…

4 лайка

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

Вы можете использовать черновики и/или предложить сделать этот плагин общедоступным:

2 лайка

Черновики очень ненадёжны, так как в теме может быть только один. Если кто-то начинает писать пост в такую тему, черновик перезаписывается без предупреждения.

3 лайка

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

1 лайк

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

2 лайка

Мне нравится функция заметок пользователей, и мои модераторы тоже. Мы используем её очень часто.

Мне кажется, что плагин с названием вроде «Липкие заметки пользователей» мог бы быть довольно полезным. :thinking:

1 лайк

Судя по тому, как реализованы заметки пользователей, их будет сложно адаптировать для личных стикеров. (Текст заметки хранится в виде JSON-массива в таблице plugin_store_notes, поэтому неясно, поддерживает ли он какое-либо форматирование. Внутренние рекламные объявления также хранятся в этой таблице, но используют HTML-форматирование.)

Кроме того, похоже, что нет возможности редактировать заметки пользователей. Предположительно, их можно удалить и разместить заново, но это изменит временную метку.

1 лайк

Я бы предложил создать таблицу с тремя ключами:
id, post_id, user_id (чтобы пользователь мог записывать данные только к одному посту),
а затем, в зависимости от вашей задумки, можно либо напрямую сохранять данные в этой таблице, либо публиковать заметки пользователя как отдельный пост (так, чтобы при отключении плагина оригинальные заметки оставались сохранёнными).

1 лайк

или, возможно, использовать пользовательское поле (которое Topic поддерживает).

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

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

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

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

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

1 лайк

Ещё один вариант, который должен быть частью ядра, — это добавить флаг ‘sticky_note’ в таблицу постов.

1 лайк

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

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

  • Включена только для выбранных групп.
    Это отлично сработает в связке с плагинами subscriptions и ai, так что, например, подписчики получат возможность создавать свои собственные заметки с помощью ИИ.
  • Переключатели ограничений.
    Чтобы снизить нагрузку на сервер, для каждой группы можно установить лимиты. Например: группа A может иметь 5 ГБ дискового пространства в своём блокноте, а группа B — 10 ГБ.
  • Упорядоченная структура.
    Структура этого плагина могла бы быть похожа на структуру Microsoft OneNote, где каждый блокнот мог бы содержать несколько разделов.
  • Совместимость с файлами.
    Пользователи смогут прикреплять файлы к заметкам: PDF, MP3 и т. д., а также будет встроенный простой просмотрщик PDF.
  • Более тесная интеграция с Discourse AI.
    Бот ИИ сможет автоматически суммировать целые обсуждения в чате или личных сообщениях и сохранять сводку на страницу блокнота и так далее.
  • Реально ли это?
    Учитывая огромное количество приложений для ведения заметок с открытым исходным кодом, таких как Obsidian и Joplin, я предполагаю, что разработка этой функции может начаться быстро и легко. needless to say, это имеет потенциал для хорошей выручки — связка форум/ИИ/блокнот!

Дайте знать, что вы об этом думаете! Может быть, мы сможем детализировать идею и разработать более проработанное предложение!

3 лайка

В идеале я бы хотел иметь возможность синхронизировать заметки, созданные на Discourse, с моими локальными заметками в формате Markdown. Базовая реализация этого могла бы включать кнопку «Скачать заметку» на Discourse, которая генерировала бы файл .md из raw-содержимого темы заметки. Название файла могло бы быть установлено как <название темы заметки>.md.

3 лайка

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