# Начало разработки

# Создание нового плагина

Для создания плагина перейдите в Настройки -> Плагины и нажмите кнопку Создать плагин.

После этого выберите папку, где он будет сохранен и далее заполните информацию о нем.

После нажатия на кнопку Ок в выбранной папке появится новая папка, содержащая плагин, который сразу же установится в режиме разработки.

TIP

Плагин, установленный в режиме разработки, автоматически обновляется при каждом изменении файлов, внутри него

# Структура плагина

Внутри папки с плагином будет создан файл index.json, описывающий структуру плагина. Пример с приведен ниже:

{
  "name": "my-plugin",                       // 1. Служебное имя плагина
  "title": "My plugin",                      // 2. Отображаемое имя плагина
  "version": "1.0.0",                        // 3. Номер версии плагина
  "authors": "Me",                           // 4. Имя автора
  "description": { "@t": "description" },    // 5. Описание 
                                             //    (про @t - см. раздел "Интернационализация") 
  "website": "http://example.com",           // 6. Веб-сайт
  "icon": null,                              // 7. Иконка
  "content": [],                             // 8. Содержимое плагина
  "api": "2.4.0",                            // 9. Номер версии API плагинов программы
  "locale": {                                // 10. Локализованные строки 
    "en": {                                  //     (см. раздел "Интернационализация")
      "description": "My own plugn"
    },
    "ru": {
      "description": "Мой собственный плагин"
    }
  }
}
  1. name - служебное имя плагина - используется для идентификации плагинов, поэтому должно быть уникальной строкой. Пользователь не может установить одноременно два плагина с одним именем

  2. title - отображаемое имя плагина - название плагина, которое пользователь видит в списке плагинов

  3. version - номер версии плагина, отображается в списке при раскрытии плагина. Служит для того, чтобы можно было проверить, установлена ли у пользователя последняя версия плагина или нет

  4. authors - имя автора, отображается в списке при раскрытии плагина.

  5. description - короткое описание плагина, отображается в списке плагинов

  6. website - ссылка на сайт автора плагина

  7. icon - иконка плагина, отображается в списке плагинов. Для иконки используйте png-файл размером 96x96 пикселей. Для того, чтобы вставить ссылку на файл, используйте специальную директиву: {"@urlfile": "icon.png"} - где icon.png это название файла в папке плагина

  8. content - перечень содержимого плагина (см. следующий раздел )

  9. api - номер версии API плагинов. Плагин не может быть активирован на версии IMS Studio, не поддерживающей указанную версию API. Актуальный номер - 2.4.0

  10. locale - служит для создания локализованных плагинов, поддерживающих несколько языков интерфейсов (см. раздел Интернационализация)

# Содержимое плагинов

Плагины представляют собой контейнеры различных сущностей программы (например, FTP-подключений). При установке плагина программа добавляет в перечень стандартных сущностей новые элементы из плагина, при деинсталляции - удаляет.

Каждая сущность описывается следующей структурой:

{
    "type": "ftp",                              // 1. Тип сущности
    "name": "my-connection",                    // 2. Служебное название
    "title": "MyConnection",                    // 3. Отображаемое имя
    "icon": "https://example.com/favicon.ico",  // 4. Иконка
    "content": {                                // 5. Само содержимое
        // ...
    },
    "locale": {                                 // 6. Локализованные строки
    }                                           //    (см. раздел "Интернационализация")
}
  1. type - тип добавляемой сущности. В данный момент поддерживаются следующие:

    • destination - микросток
    • ftp - FTP-подключение
    • submit - процесс сабмита
  2. name - служебное имя сущности

  3. title - отображаемое имя сущности

  4. icon - иконка сущности (обычно ссылка на favicon)

  5. content - само содержимое сущности. Имеет разный формат в зависимости от типа

  6. locale - служит для создания локализованных плагинов, поддерживающих несколько языков интерфейсов (см. раздел Интернационализация)

Для того, чтобы не загромождать файл index.json описание элементов содержимого можно вынести в отдельные файлы и подключать их с помощью директивы {"@jsonfile": "file.json"}, где file.json имя файла с подключаемым содержимым. Например:

// index.json
{
  "name": "my-plugin", 
  // ...
  "content": [
    {"@jsonfile": "content1.json"},
    {"@jsonfile": "content2.json"},
    {"@jsonfile": "content3.json"}
  ],
  // ...
}