Я пытаюсь изменить поведение по умолчанию кнопки «Создать тему» в Discourse 2.6.1. У меня есть плагин, который модифицирует стандартные действия Ember для запуска моей функции. Это работало корректно в предыдущей версии Discourse (1.8.0), но я не могу понять, как добиться того же результата в новой версии. Код выглядит следующим образом:
const NavigationDefaultController = require('discourse/controllers/navigation/default').default;
const SearchResultsDefaultController = require('discourse/controllers/full-page-search').default;
...
function myFunction() {
КОД ЗДЕСЬ
}
...
NavigationDefaultController.reopen({
actions: {
createTopic: myFunction,
},
});
SearchResultsDefaultController.reopen({
actions: {
createTopic: myFunction,
},
});
Первый контроллер определяет действия для основного сайта (что не работает в новой версии), а второй — действия, которые выполняются при поиске в приложении (и это работает в новой версии).
Я заметил, что кнопки «Создать тему» создаются с использованием действий «createTopic» и «clickCreateTopicButton», но ни одно из них не работает на основном сайте. Нужно ли мне изменить другое действие или использовать другой контроллер?
Спасибо за предложение. Однако, если я не ошибаюсь, этот плагин позволяет добавлять новое пользовательское поле к теме, а я хочу запускать свой собственный JavaScript-код при нажатии на кнопку «Новая тема». Мне кажется, моя проблема связана с тем, какой контроллер Discourse использовать, как называется функция, которая выполняется, и как переопределить эту функцию. Не могли бы вы прояснить этот момент?
Ну, черт. Извините. Я думал, что там есть какой-то JavaScript-код (например, в discourse-topic-custom-fields/assets/javascripts/discourse), который мог бы помочь понять, как это подключить. Я всё ещё не очень силен в фронтенде, так что боюсь, это был мой лучший ответ без помощи.
Отлично! Очень рад, что у вас получилось! Хотя куда именно всё размещать и как это называть, для меня всё ещё остаётся загадкой, но я постепенно разбираюсь.