Скрыть функциональность на странице

Основы

Действия по скрытию функциональности на странице, которые позволяет выполнять Creatio 8 Atlas:

  • Скрыть функциональность на этапе разработки.
  • Скрыть функциональность без права доступа.

Скрыть функциональность на этапе разработки 

Для проверки состояний функциональности в Creatio 8 Atlas используется сервис sdk.FeatureService.

Чтобы скрыть на странице функциональность на этапе разработки:

  1. На шаге 1 алгоритма кастомизации страницы Freedom UI при необходимости добавьте на страницу компонент, который содержит функциональность на этапе разработки.
  2. На шаге 2 алгоритма кастомизации страницы Freedom UI настройте скрытие на странице функциональности на этапе разработки.

    1. Подключите сервис проверки состояний функциональности sdk.FeatureService. Подключение сервиса аналогично описанному в алгоритме отображения значения системных переменных.
    2. В секцию viewModelConfig добавьте атрибут, который хранит информацию. Добавление атрибута аналогично описанному в алгоритме настройки условия отображения поля.
    3. В секции viewConfigDiff привяжите свойство visible к соответствующему атрибуту модели. Привязка свойства аналогична описанной в алгоритме настройки условия отображения поля.
    4. В секцию handlers добавьте пользовательскую реализацию обработчика системного запроса crt.HandlerViewModelInitRequest. Обработчик выполняется при инициализации View модели.

      1. Создайте экземпляр сервиса проверки состояния функциональности из @creatio-devkit/common.
      2. Получите состояние функциональности по ее коду и запишите его в соответствующий атрибут.

      Пример обработчика запроса crt.HandlerViewModelInitRequest, который получает состояние функциональности с кодом SomeFeatureCode и записывает его в атрибут SomeAttributeName, представлен ниже.

      Секция handlers

Подробный пример настройки скрытия функциональности на этапе разработки приведен в статье Скрыть на странице функциональность на этапе разработки.

Скрыть функциональность без права доступа 

Для проверки прав доступа в Creatio 8 Atlas используется сервис sdk.RightsService.

Чтобы скрыть на странице функциональность без права доступа:

  1. На шаге 1 алгоритма кастомизации страницы Freedom UI при необходимости добавьте на страницу компонент, который содержит функциональность, для которой настроены права доступа.
  2. На шаге 2 алгоритма кастомизации страницы Freedom UI настройте скрытие на странице функциональности без права доступа.

    1. Подключите сервис проверки прав доступа sdk.RightsService. Подключение сервиса аналогично описанному в алгоритме отображения значения системных переменных.
    2. В секцию viewModelConfig добавьте атрибут, который хранит информацию. Добавление атрибута аналогично описанному в алгоритме настройки условия отображения поля.
    3. В секции viewConfigDiff привяжите свойство visible к соответствующему атрибуту модели. Привязка свойства аналогична описанной в алгоритме настройки условия отображения поля.
    4. В секцию handlers добавьте пользовательскую реализацию обработчика системного запроса crt.HandlerViewModelInitRequest. Обработчик выполняется при инициализации View модели.

      1. Создайте экземпляр сервиса проверки прав доступа из @creatio-devkit/common.
      2. Получите информацию о наличии прав доступа пользователя на выполнение соответствующего действия.
      3. Запишите результат проверки в соответствующий атрибут.

      Пример обработчика запроса crt.HandlerViewModelInitRequest, который проверяет наличие прав доступа на выполнение системной операции с кодом SomeOperationCode и записывает результат проверки в атрибут SomeAttributeName, представлен ниже.

      Секция handlers

Подробный пример настройки скрытия функциональности без права доступа приведен в статье Скрыть на странице функциональность без права доступа.

Скрыть на странице функциональность на этапе разработки
Средний

Пример. На странице записи пользовательского раздела Feature Service скрыть пользовательскую кнопку Функциональность (Feature). Кнопка содержит функциональность на этапе разработки.

1. Настроить интерфейс страницы 

  1. Добавьте разрабатываемую функциональность, которую планируется скрыть.

    1. Перейдите на страницу Функциональность (Feature) и заполните свойства функциональности:

      • Код функциональности (Feature code) — "UsrShowMyButton".
      • Имя функциональности (Feature name) — "Show My Button".
    2. Нажмите кнопку Добавить функциональность (Create feature).
  2. Используя шаблон Данные и бизнес-процессы (Records & business processes), создайте пользовательское приложение Feature Service. Для этого воспользуйтесь инструкцией, которая приведена в статье Создать пользовательское приложение.
  3. В рабочей области страницы приложения Feature Service откройте страницу Страница записи Feature Service (Feature Service form page).
  4. Удалите поле Название (Name), которое по умолчанию добавлено на страницу Страница записи Feature Service (Feature Service form page).
  5. Добавьте кнопку, которая содержит функциональность на этапе разработки.

    1. На панель инструментов Freedom UI дизайнера добавьте компонент типа Кнопка (Button).
    2. На панели действий Freedom UI дизайнера нажмите на кнопку и на панели настройки заполните свойства кнопки:

      • Заголовок (Title) — "Функциональность" ("Feature").
      • Стиль (Style) — выберите "Основной" ("Primary").
  6. На панели действий Freedom UI дизайнера нажмите на кнопку . После сохранения настроек страницы открывается исходный код страницы Freedom UI.

2. Настроить скрытие функциональности на этапе разработки 

Бизнес-логика настраивается в дизайнере клиентского модуля. В этом примере настроим скрытие функциональности на этапе разработки.

  1. Подключите сервис проверки состояния функциональности sdk.FeatureService. Для этого добавьте в AMD-модуль зависимость @creatio-devkit/common.

    Зависимости AMD-модуля
    /* Объявление AMD-модуля. */
    define("UsrAppFeatureService_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"] /**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
            ...
        };
    });
    
  2. В секцию viewModelConfig добавьте атрибут ShowMyButton, который хранит информацию о состоянии функциональности.

    Секция viewModelConfig
    viewModelConfig: /**SCHEMA_VIEW_MODEL_CONFIG*/{
        "attributes": {
            ...,
            /* Атрибут, который хранит состояние функциональности. */
            "ShowMyButton": {}
        }
    }/**SCHEMA_VIEW_MODEL_CONFIG*/,
    
  3. В секции viewConfigDiff привяжите свойство visible элемента FeatureButton к атрибуту ShowMyButton модели.

    Секция viewConfigDiff
    viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
        {
            "operation": "insert",
            "name": "FeatureButton",
            "values": {
                ...,
                /* Свойство, которое определяет видимость поля. Привязано к значению атрибута ShowMyButton. */
                "visible": "$ShowMyButton"
            },
            ...
        }
    ]/**SCHEMA_VIEW_CONFIG_DIFF*/,
    
  4. В секции handlers добавьте пользовательскую реализацию обработчика системного запроса crt.HandlerViewModelInitRequest. Обработчик выполняется при инициализации View модели.

    1. Создайте экземпляр сервиса проверки состояния функциональности из @creatio-devkit/common.
    2. Получите состояние функциональности с кодом UsrShowMyButton и запишите его в атрибут ShowMyButton.
    Секция handlers
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "crt.HandleViewModelInitRequest",
            /* Пользовательская реализация обработчика системного запроса. */
            handler: async (request, next) => {
                /* Создает экземпляр сервиса проверки состояния функциональности из @creatio-devkit/common. */
                const featureService = new sdk.FeatureService();
                /* Получает состояние функциональности UsrShowMyButton и записывает его в атрибут ShowMyButton. */
                request.$context.ShowMyButton = await featureService.getFeatureState('UsrShowMyButton');
                /* Вызывает следующий обработчик, если такой есть, и возвращаем его результат. */
                return next?.handle(request);
            }
        }
    ] /**SCHEMA_HANDLERS*/,
    
    Полный исходный код схемы страницы
  5. На панели инструментов дизайнера клиентского модуля нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера с функциональностью на этапе разработки:

  1. Перейдите на страницу приложения Feature Service и нажмите Запустить приложение (Run app).
  2. На панели инструментов приложения Feature Service нажмите Добавить (New).

В результате выполнения примера на странице приложения Feature Service скрыта кнопка Функциональность (Feature), которая содержит функциональность на этапе разработки.

Чтобы посмотреть результат выполнения примера с разработанной функциональностью:

  1. Включите функциональность с кодом UsrShowMyButton.

    1. Перейдите на страницу Функциональность (Feature).
    2. В реестре страницы подключите функциональность Show My Button.
    3. Нажмите кнопку Сохранить изменения (Save changes) и обновите страницу.
  2. Обновите страницу приложения Feature Service.
  3. На панели инструментов приложения Feature Service нажмите Добавить (New).

В результате выполнения примера на странице приложения Feature Service отображается кнопка Функциональность (Feature), которая содержит разработанную функциональность.

Скрыть на странице функциональность без права доступа
Средний

Пример. На странице записи пользовательского раздела Rights Service скрыть кнопку Импорт данных из Excel (Excel data import), если пользователь не имеет прав на импорт данных из Excel.

1. Настроить интерфейс страницы 

  1. Используя шаблон Данные и бизнес-процессы (Records & business processes), создайте пользовательское приложение Rights Service. Для этого воспользуйтесь инструкцией, которая приведена в статье Создать пользовательское приложение.
  2. В рабочей области страницы приложения Rights Service откройте страницу Страница записи Rights Service (Rights Service form page).
  3. Удалите поле Название (Name), которое по умолчанию добавлено на страницу Страница записи Rights Service (Rights Service form page).
  4. Добавьте кнопку, которая запускает импорт данных из Excel.

    1. На панель инструментов Freedom UI дизайнера добавьте компонент типа Кнопка (Button).
    2. На панели действий Freedom UI дизайнера нажмите на кнопку и на панели настройки заполните свойства кнопки:

      • Заголовок (Title) — "Импорт данных из Excel" ("Excel data import").
      • Стиль (Style) — выберите "Основной" ("Primary").
  5. На панели действий Freedom UI дизайнера нажмите на кнопку . После сохранения настроек страницы открывается исходный код страницы Freedom UI.

2. Настроить скрытие функциональности без права доступа 

Бизнес-логика настраивается в дизайнере клиентского модуля. В этом примере настроим скрытие функциональности без права доступа.

  1. Подключите сервис проверки прав доступа sdk.RightsService. Для этого добавьте в AMD-модуль зависимость @creatio-devkit/common.

    Зависимости AMD-модуля
    /* Объявление AMD-модуля. */
    define("UsrAppRightsService_FormPage", /**SCHEMA_DEPS*/["@creatio-devkit/common"] /**SCHEMA_DEPS*/, function/**SCHEMA_ARGS*/(sdk)/**SCHEMA_ARGS*/ {
            ...
        };
    });
    
  2. В секцию viewModelConfig добавьте атрибут CanImportFromExcel, который хранит информацию о правах доступа пользователя.

    Секция viewModelConfig
    viewModelConfig: /**SCHEMA_VIEW_MODEL_CONFIG*/{
        "attributes": {
            ...,
            /* Атрибут, который хранит информацию о правах доступа пользователя. */
            "CanImportFromExcel": {}
        }
    }/**SCHEMA_VIEW_MODEL_CONFIG*/,
    
  3. В секции viewConfigDiff привяжите свойство visible элемента ExcelDataImportButton к атрибуту CanImportFromExcel модели. Свойство visible определяет видимость кнопки.

    Секция viewConfigDiff
    viewConfigDiff: /**SCHEMA_VIEW_CONFIG_DIFF*/[
        {
            "operation": "insert",
            "name": "ExcelDataImportButton",
            "values": {
                ...,
                /* Свойство, которое определяет видимость кнопки. Привязано к значению атрибута CanImportFromExcel. */
                "visible": "$CanImportFromExcel"
            },
            ...
        }
    ]/**SCHEMA_VIEW_CONFIG_DIFF*/,
    
  4. В секции handlers добавьте пользовательскую реализацию обработчика системного запроса crt.HandlerViewModelInitRequest. Обработчик выполняется при инициализации View модели.

    1. Создайте экземпляр сервиса проверки прав доступа из @creatio-devkit/common.
    2. Получите информацию о наличии прав доступа на системную операцию CanImportFromExcel для пользователя.
    3. Запишите результат в атрибут CanImportFromExcel.
    Секция handlers
    handlers: /**SCHEMA_HANDLERS*/[
        {
            request: "crt.HandleViewModelInitRequest",
            /* Пользовательская реализация обработчика системного запроса. */
            handler: async (request, next) => {
                /* Создает экземпляр сервиса проверки прав доступа из @creatio-devkit/common. */
                const rightService = new sdk.RightsService();
                /* Получает информацию о наличии прав доступа на системную операцию CanImportFromExcel для пользователя. */
                const canImportFromExcel = await rightService.getCanExecuteOperation('CanImportFromExcel');
                /* Записывает результат в атрибут CanImportFromExcel. */
                request.$context.CanImportFromExcel = canImportFromExcel;
                /* Вызывает следующий обработчик, если такой есть, и возвращаем его результат. */
                return next?.handle(request);
            },
        }
    ] /**SCHEMA_HANDLERS*/,
    
    Полный исходный код схемы страницы
  5. На панели инструментов дизайнера клиентского модуля нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера с отсутствующими правами доступа:

  1. Войдите в приложение под пользователем, у которого нет прав на импорт данных из Excel, например, добавив нового или отобрав права у существующего пользователя. Для добавления пользователя воспользуйтесь инструкцией, которая приведена в статье Добавить пользователей. Для настройки прав доступа воспользуйтесь инструкцией, которая приведена в статье Настроить права доступа на системные операции. За импорт данных из Excel отвечает системная операция Импорт из Excel (Excel import, код CanImportFromExcel).
  2. Перейдите на страницу приложения Rights Service и нажмите Запустить приложение (Run app).
  3. На панели инструментов приложения Rights Service нажмите Добавить (New).

В результате выполнения примера на странице приложения Rights Service скрыта кнопка Импорт данных из Excel (Excel data import), которая запускает импорт данных из Excel.

Чтобы посмотреть результат выполнения примера с наличием прав доступа:

  1. Обновите страницу приложения Rights Service.
  2. На панели инструментов приложения Rights Service нажмите Добавить (New).

В результате выполнения примера на странице приложения Rights Service отображается кнопка Импорт данных из Excel (Excel data import), которая запускает импорт данных из Excel.