Добавить плагин в выбор формы создания задачи

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

Карточка плагина среди форм создания задачи

Для боковой панели создания задачи предусмотрен отдельный слот drawer.issue.create.form. Его карточка также появляется среди форм, но плагин открывается внутри панели. Если плагин должен работать в обоих местах, объявите оба слота в манифесте.

Слот issue.create.form работает на десктопной странице создания задачи. В мобильной версии карточка плагина не показывается. Компактный выбор формы /issueCard/create также не показывает плагины.

Подключите слоты

Создайте проект командой weavix create и выберите шаблон issue.create.form. Шаблон добавит оба слота. Если проект уже существует, добавьте нужные слоты в manifest.json:

{
  "permissions": {
    "data": ["tracker:issues:write"]
  },
  "slots": {
    "tracker": {
      "issue.create.form": [
        {
          "entrypoint": "index.html",
          "contextLevel": "full",
          "title": {"ru": "Создать задачу с плагином", "en": "Create an issue with a plugin"}
        }
      ],
      "drawer.issue.create.form": [
        {
          "entrypoint": "index.html",
          "contextLevel": "full",
          "title": {"ru": "Создать задачу с плагином", "en": "Create an issue with a plugin"}
        }
      ]
    }
  }
}

Это фрагмент манифеста: сохраните остальные обязательные поля вашего проекта. Для создания задачи через API Трекера плагину нужно разрешение tracker:issues:write. Оно не расширяет права пользователя: задача создается в пределах его доступа. Подробнее о полях манифеста — в разделе Конфигурация плагина.

Шаблон содержит заготовку интерфейса, но не создает задачу. Добавьте необходимые поля и вызов API в код плагина.

Подключите плагин к очереди и откройте страницу создания задачи с этой очередью. Карточка плагина появится рядом с обычными формами. В заголовке открытого плагина показаны его название и метка «Плагин». Подробнее о подключении — в разделе Публикация плагина.

Страница плагина после выбора его карточки

Получите контекст выбранной очереди

При открытии плагина задача еще не создана. В базовом контексте ключ выбранной очереди доступен как entityId. Если в манифесте указан contextLevel: "full", получите ключ через slotContext.queue:

const { slotContext } = useTrackerPluginContext<'issue.create.form'>('full');
const queue = slotContext?.queue;

Для drawer.issue.create.form полный контекст дополнительно содержит необязательные поля:

  • defaultFields?: Record<string, string> — значения полей, переданные при открытии боковой панели;
  • sourceUrlParams?: Record<string, unknown> — параметры, которые вызывающий экран передает обычной форме создания задачи. Например, календарь проекта может передать проект.

Если эти значения нужны в сценарии создания, плагин должен применить их сам. Трекер не подставляет их в задачу, созданную плагином.

Завершите работу плагина

Создайте задачу через API Трекера. Для слота боковой панели после успешного создания передайте ключ задачи в hostApi.close({ issueKey }): вызывающий экран получит результат и закроет панель. Вызов hostApi.close() без результата вернет пользователя к выбору формы.

На отдельной странице issue.create.form вызов hostApi.close() возвращает к выбору формы; специальный результат создания для этого слота не предусмотрен. Если в плагине есть несохраненные данные, вызовите hostApi.preventClose(true). При попытке уйти со страницы, сменить очередь или закрыть панель Трекер запросит подтверждение.