У меня возник вопрос по программированию, связанный с новой функцией, которую я реализую в компоненте темы. Я подготовил короткое видео, чтобы продемонстрировать то, что уже сделано, и где я столкнулся с трудностями.
Вот краткое описание:
Я хочу, чтобы пользователи могли ставить «лайки» на конкретные фрагменты текста внутри постов (в том числе в постах других людей), а не только на пост целиком.
Как только пользователь выделяет текст, он нажимает на новый значок, который, в свою очередь, оборачивает выделенный текст в блок [warp], который я затем использую для стилизации.
Оборачивание происходит путем изменения исходного текста, что создает проблему для пользователей без прав администратора, которые не могут редактировать чужие посты.
Вопросы:
Я ищу способ сохранить свои «метаданные» непосредственно в модели.
Я ищу способ изменить/декорировать текст так, чтобы это мог сделать любой пользователь.
Как и вы, я очень заинтересован в этой функции. Она помогает нам получать мнение сообщества при отборе и цитировании качественного и ценного контента для размещения на нашем ресурсе или для создания общедоступного каталога.
Я реализовал это более безопасным способом, также используя компонент темы.
Цель
Дать пользователям возможность лайкать контент внутри поста, а не только сам пост. Например, пользователи должны иметь возможность выразить, что им нравится конкретное изображение или отрывок текста.
Подход
Поскольку мы работаем с компонентом темы, мне нужно было найти способ сохранять метаинформацию о таком «лайке от пользователя» в каком-то месте, так как, apparently, только настоящие плагины могут изменять базу данных. Изначально я планировал редактировать исходный текст поста, но это оказалось очень запутанным, поскольку мы изменяли посты пользователей, чего не хотели.
В итоге я решил использовать Firebase Firestore для сохранения данных.
Результат
Теперь пользователи могут ставить «сердечки» на изображениях, текстах внутри элементов LI и параграфов P.
Дальнейшие шаги
Я планирую сделать это доступным в виде компонента темы, но часть хранения данных должна обрабатываться разработчиками самостоятельно, если они захотят размещать данные в другом месте.
Если люди будут ставить достаточно много лайков, я скоро выпущу это
Эта функция может быть полезна для очень больших постов, где некоторые части выделяются сильнее других.
Кстати, если есть несколько лайков, можно ли показывать 25% самых лайкнутых, чтобы было понятнее? С большим количеством красных строк текста повсюду это может выглядеть очень запутанно.
Пожалуйста, выпустите эту функцию как можно скорее!
Мне очень нравится функция подсветки на Medium, и теперь я хочу, чтобы она появилась и в Discourse. Иногда мы хотим выразить свои чувства по поводу какого-то текста и сохранить его, чтобы позже просмотреть, как закладку (но сейчас можно сохранить только всю статью целиком)
Привет, ребята! У меня была похожая идея, о которой я рассказывал в этом посте. Есть какие-нибудь новости по этому поводу, @Sören_Geier?
В последние несколько дней я подумывал, что было бы здорово, если бы помимо лайка конкретной части текста для цитируемых фрагментов создавался список ссылок на все ответы на них. Если вы цитируете это слово, оно подсвечивалось бы в оригинальном тексте, и при клике на эту подсветку любой пользователь видел бы превью с количеством ответов, их авторами и т. д. Это был бы отличный способ понять глубину обсуждения в конкретных местах.
Не знаю, достаточно ли я понятно объяснил свою идею, ха-ха, но представляю, что это работало бы похоже на функцию лайка и имело бы те же проблемы с хранением данных.
Я веду переговоры с разработчиками Discourse, чтобы они рассмотрели мой репозиторий с открытым исходным кодом, содержащий функциональность встроенных «сердечек». Я установил это на чистую установку Discourse, и оно сразу заработало.
Текущая версия выглядит гораздо круче, чем в первом видео!
Следите за обновлениями и наберитесь немного терпения.
Привет, есть ли кто-то, кто мог бы написать мне в личные сообщения и помочь подготовить код к публикации для сообщества? У меня уже настроен репозиторий, и я готов поделиться им, но мне нужен человек, который проведёт со мной проверку на работоспособность и посмотрит на проект с другой точки зрения, прежде чем я объявлю об этом широкой аудитории.
Любая помощь будет очень кстати, чтобы я мог продвинуть проект вперёд.