Итак, я наткнулся на идею позволить пользователям с правами на редактирование постов (TL4 и выше) выделять текст и преобразовывать его в блок кода.
После изучения некоторых частей кода плагина Discourse AI и анализа данных, передаваемых в используемый мной выходной порт плагина, я написал код для получения выделенного текста и обертки его в блоки кода с помощью выходного порта quote-share-buttons-before.
Теперь же я немного застрял. Плагин checklist (каким-то образом) делает это с помощью аргумента postDecorator в функции checklistSyntax, через который они получают модель (я полагаю, это модель post?), используя метод .getModel(). Как именно этот аргумент передается, я не знаю, но мне кажется, что в моей настройке он недоступен.
Если в плагине checklist действительно используется модель поста, то я не могу найти, где находится простая функция сохранения save, используемая в:
await postModel.save({
raw: newRaw,
edit_reason: i18n("checklist.edit_reason"),
});
в файле models/post.js, если только я что-то не понимаю неправильно.
В настоящее время я использую this.args.outletArgs.data.editPost(this.post) (если память не изменяет, это находится в models/topic.js, но поправьте меня, если я ошибаюсь), что открывает только композер для редактирования поста, а не редактирует его напрямую.
Итак, мой вопрос таков: как можно редактировать пост так же, как это делает плагин checklist, без лишних хлопот? Существует ли способ сделать это, если я размещаю кнопку в выходном порте, а не использую api.decorateCookedElement, как это делает checklist? Желательно без использования REST API?
Мой репозиторий:
Спасибо!