Работа виджета в разделе интеграций

Оглавление

В маркетплейсе интеграций при клике на виджет открывается модальное окно с настройками. При открытии этого окна система отрисует поля, которые перечислены в разделе settings файла manifest.json.

Колбэк settings

Если вы хотите кастомизировать внешний вид данного окна, для этого есть колбэк settings.

define(['jquery'], function ($) {
  return function () {
    this.callbacks = {
      settings: function ($settings_body, context) {
        // ...
      }
    };
  };
});

Колбэк settings принимает два аргумента. Первый $settings_body – jQuery-элемент, в котором рисуется форма настроек виджета. Второй context – объект, в который могут быть переданы дополнительные параметры в зависимости от того, откуда был вызван показ модального окна настроек виджета.

Если ваш виджет реализует функционал источника сделок и выводится в колонке источников слева в разделе Digital Pipeline, то при клике на такой установленный виджет в context придут следующие данные:

{
  source_id: 12345, // id источника на стороне amoCRM
  external_id: 761527839 // id источника на стороне интеграции
}

❗️ Важно ❗️

Публичные виджеты не должны никак скрывать/влиять на рейтинг и отзывы виджета.

Для всех виджетов, которые загружены в интеграции, запрещены виртуальные клики на кнопку установить.

Колбэк onSave

Также для того, чтобы виджет мог установиться в аккаунт пользователю в нем должен обязательно присутствовать метод onSave, который должен возвращать либо true, либо объект Promise, если при сохранении вам нужно сделать какой-то запрос к себе на сервер.

Данный метод вызывается при щелчке пользователя на кнопке "Установить/Сохранить" в настройках виджета. Можно использовать для отправки введенных в форму данных и смены статуса виджета. Так же этот метод срабатывает при отключении виджета.

Собственная страница настроек

Виджет может иметь собственную страницу настроек (так же как и собственный пункт в левом меню), выглядеть это будет так:

Для этого необходимо в manifest.json указать локейшн "advanced_settings":

{
  ...

  "locations": [
    "advanced_settings"
  ],
  "advanced": {
    "title": "advanced.title"
  },

  ...
}

После установки виджета с таким локейшном в меню раздела "Настройки" появится новый пункт с названием из advanced.title, справа от названия виджета будет указано его название.

При клике пользователя по этому пункту меню будет вызван колбэк виджета "advancedSettings", в котором виджет может отрисовать все необходимые элементы своих настроек на страницу в элемент с ID "list_page_holder". Пример кода:

this.callbacks = {
  advancedSettings: function () {
    $('#list_page_holder').html('Настройки виджета здесь');
  }
}