Текст js.composer.reply_placeholder, по-видимому, привязан к тексту в редакторе при создании темы, хотя он предназначен именно для ответов.
Как воспроизвести?
Это можно увидеть, сравнив изменённую версию текста-заполнителя с тем, что отображается в редакторе.
Возможные решения
Одно из решений — изменить имя заполнителя, однако нам очень хотелось бы иметь возможность настраивать заполнители для ответов и создания тем отдельно.
Зачем нужны отдельные заполнители для создания тем и ответов?
Как показано ниже, мы начали использовать следующий текст-заполнитель для новых тем. Однако такая подсказка не имеет смысла в контексте ответа.
Если решение этой проблемы позволит задать отдельные заполнители как для ответов, так и для создания тем, мы сможем предоставлять улучшенную контекстную подсказку (JIT) для всех пользователей (что было бы замечательно для сообществ поддержки, подобных нашему).
Отличная находка. Быстро попробовал, и кажется, что это очень хорошо разделяет ответ и создаёт плейсхолдеры. Хотелось бы увидеть это изменение в ядре, но я очень рад использовать изменения, предложенные Джо. Спасибо за ссылку, @Moin.
В качестве дополнения: фрагмент кода, опубликованный Джо, не работал как ожидалось с нашей новой кнопкой создания темы. Когда пользователь создавал новую тему, находясь внутри другой темы, он получал текст для ответа.
Ниже представлен альтернативный подход, который:
Отображает плейсхолдер для новых тем, независимо от того, создается ли тема на странице категорий или внутри другой темы
Отображает отдельный плейсхолдер для ответов
<script type="text/discourse-plugin" version="0.8">
// Пользовательские плейсхолдеры
const placeHolderForReplies = `При помощи другим:
1. Опишите, в чём, по вашему мнению, заключается проблема
2. Расскажите, что, по вашему мнению, им следует сделать
3. Покажите, как это сделать (фрагменты кода, изображения и т.д.)
4. Добавьте ссылки и источники`;
const placeHolderForNewTopics = `Введите здесь.
1. Расскажите, что вы пытаетесь сделать.
2. Расскажите, что вы уже пробовали.
3. Опубликуйте логи ошибок в виде фрагментов кода.`;
// Импорт необходимых модулей
const discourseComputed = require("discourse-common/utils/decorators").default;
const currentLocale = I18n.currentLocale();
I18n.translations[currentLocale].js.composer.custom_reply_placeholder = placeHolderForReplies;
I18n.translations[currentLocale].js.composer.custom_topic_placeholder = placeHolderForNewTopics;
api.modifyClass("component:composer-editor", {
@discourseComputed("composer.replyingToTopic", "composer.creatingTopic")
replyPlaceholder(replyingToTopic, creatingTopic) {
// Определяем, является ли композитор для ответа или создания новой темы
if (creatingTopic) {
return "composer.custom_topic_placeholder"; // Плейсхолдер для новой темы
} else if (replyingToTopic) {
return "composer.custom_reply_placeholder"; // Плейсхолдер для ответа
}
return this._super(...arguments); // Возврат к стандартному поведению
}
});
</script>