Хорошо, я делюсь ответом Discourse Helper для тех, кто заинтересован и обладает необходимыми знаниями для этого ![]()
Я считаю, что это необходимо для улучшения UI/UX (модернизации наших форумов), таких как редактор сообщений, ИИ и последние улучшения, которые мы наблюдали.
Используемый английский язык очень нейтральный и простой, и это имеет смысл, но в моем случае переводы на испанский по умолчанию не очень хороши.
Редактирование строк в интерфейсе Discourse допустимо, но отнимает много времени, и я просто хочу делегировать эту задачу.
Я понимаю, что невозможно загрузить все строки как JSON-файл, но отредактированные тексты?
Загрузка всех текстов на всех языках и редактирование файла должно быть обходным путем, чтобы получить желаемый результат за 1/5 времени.
Высокоуровневая структура плагина
-
Создание каркаса плагина
-
Используйте:
rake plugin:create[custom-site-texts-group]
-
-
Бэкенд: Расширение прав доступа
-
Переопределите соответствующий контроллер, например
Admin::SiteTextController, чтобы разрешить членам вашей пользовательской группы(групп) доступ к конечным точкам редактирования текстов. -
Вы можете использовать что-то подобное:
add_to_class(:admin_constraint, :matches?) do |request| user = ... # загрузить текущего пользователя из запроса return true if user.admin? # Проверка членства в вашей группе group_id = Group.find_by(name: 'yourgroupname')&.id return user.group_ids.include?(group_id) endЭто лишь иллюстрация — вам необходимо найти правильную проверку прав доступа и убедиться, что она ограничена только редактированием локализации, а не полным доступом администратора.
-
-
Фронтенд: Предоставление UI членам группы
-
Используйте PluginAPI для внедрения UI для членов вашей группы там, где у администраторов есть «Настройка текстов сайта».
-
Скройте этот UI для других пользователей.
-
-
Безопасность
- Перепроверьте права доступа в любых переопределенных действиях контроллера и маршрутах. Никогда не доверяйте проверкам на стороне клиента.