В последних выпусках Discourse мы полностью удалили Discourse.SiteSettings из JavaScript-приложения. Единственные места, где вы его встретите, — это для обратной совместимости.
Мы делаем это в рамках нашей миграции на Ember CLI, а также потому, что это правильный шаг: Discourse.XYZ по сути является глобальной переменной, что означает, что наши зависимости разбросаны повсюду.
Если вы разработчик плагинов или тем и используете Discourse.SiteSettings в своём коде, самое время начать думать о миграции.
Как обновить ваш JavaScript-код:
-
Если ваша ссылка относится к Контроллеру, Роуту, Модели, Компоненту или Виджету, вы можете использовать
this.siteSettings. -
Если ваш файл находится в инициализаторе, вы можете получить настройки сайта через параметр контейнера:
let siteSettings = container.lookup('site-settings:main');. -
Если ваш файл содержит тесты QUnit, вы можете использовать
this.siteSettings, но ОБРАТИТЕ ВНИМАНИЕ: ваш метод теста должен быть обычной функцией, а не стрелочной функцией, чтобыthisработал корректно:QUnit.test("тестирование чего-либо", function(assert) { this.siteSettings; // сработает }); QUnit.test("тестирование чего-либо", assert => { this.siteSettings; // НЕ сработает });В большинстве случаев вы можете заменить
assert => {наfunction(assert) {, и всё будет работать корректно. -
Если ваш код находится в хелпере, существует новая функция
helperContext(), которую можно импортировать и использовать для получения настроек сайта в вашей функции-хелпере. Пожалуйста, используйте это только в реальных хелперах!import { helperContext } from "discourse-common/lib/helpers"; function myHelper(x) { let siteSettings = helperContext().siteSettings; } -
Если вы встраиваете код Discourse через тег script, вы можете получить доступ к настройкам сайта через контейнер:
<script type="text/discourse-plugin" version="0.1"> let siteSettings = api.container.lookup('site-settings:main'); </script>
Я пока не добавил предупреждения об устаревании для Discourse.SiteSettings, потому что считаю, что сейчас их будет слишком много, чтобы они были действительно полезными, из-за всех существующих тем и плагинов, которые ещё не обновлены. Как только значительная часть этого кода будет обновлена, я добавлю предупреждения, чтобы их было легче отловить.