Работа с Extensions

Менеджер работы с расширениями функционала и навигации предназначен для проверки включенных расширений у пользователя в конфигурации. Информацию о подключенных расширениях можно использовать для разработки интерфейса, например, в случае подключенного расширения отобразить блок в вёрстке, либо выполнить метод.

Использование Extensions

Контрол предназначен для реализации сценариев, зависящих от включенных расширений у пользователя. Для проверки состояния расширения необходимо использовать EngineUser/Extensions:Extensions.

Контрол работает как в старом так и в новом окружении.

Получить информацию о расширении контрола можно с помощью метода get. Использовать в своем контроле можно следующим образом:

import { Control } from 'UI/Base';
import { Extensions } from 'EngineUser/Extensions';
    
   class MyControl extends Control {
      _beforeMount() {
         this.extensionsPresto = Extensions.get('PRESTO');
      }
   }

Пример использования в шаблоне:

<!-- WML -->
<Example.MyControl>
   <ws:if data="{{ extensionsPresto }}">
      <!-- Отображаем блок для пользователей с включенной конфигурацией PRESTO -->
   </ws:if>
   <ws:else>
      <!-- Отображаем блок для пользователей с выключенной конфигурацией PRESTO -->
   </ws:else>
   <!-- Остальное содержимое контрола -->
</Example.MyControl>

Все Wasaby шаблоны страниц online.sbis.ru уже содержат внутри себя данный контрол, поэтому, если страница строится на них, можно использовать в своих контролах EngineUser/Extensions:Extensions без дополнительной обертки.

Если создали свой шаблон страницы, необходимо дополнительно обернуть приложение в EngineUser/Extensions:Loader, иначе EngineUser/Extensions:Extensions работать не будет.

Сделать это можно следующим образом:

<!-- Обертка для Extensions -->
<EngineUser.Extensions:Loader>
   <SbisEnvUI.Bootstrap>
      <!-- Page Content -->
   </SbisEnvUI.Bootstrap>
</EngineUser.Extensions:Loader>

FAQ

  • Почему при вызове метода get из EngineUser/Extensions:Extensions всегда вовзращается undefined? Возможны следующие причины:
  • Ваш код вызывается раньше чем инициализируются Extensions. Для решения этой проблемы необходимо в настройках предзагрузки в dependencies добавить ключ 'extensions' (подробнее в статье).
  • В метод передан некорретный идентфикатор расширения.