Слоты

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

Контекст запуска плагина

Контекст запуска плагина определяется слотом, в котором он находится. Контекст содержит следующую информацию:

  • Текущая тема Трекера.
  • Текущий язык Трекера.
  • Контекст слота — это данные из окружения страницы, в которой запущен плагин. Например, в слоте issue.action вернется информация по открытому тикету. Формат контекста максимально приближен к типам публичного API.

Уровень контекста слота задается параметром contextLevel в manifest.json. Подробнее об уровнях контекста — в разделе Уровни контекста слота.

Доступные точки интеграции

Расширение доступных точек интеграции

Мы постоянно добавляем доступные точки интеграции. Вы можете оставить заявку на добавление нового слота через обращение в саппорт .

Слот определяет, где и как пользователь будет запускать ваш плагин. Правильный выбор — это не про технику, а про то, в какой момент пользователю нужна ваша функциональность и где он будет ее искать.

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

Блок-схема как выбрать слот для плагина

schema

Глобальные

Слот Описание Формат окна Контекст слота
navigation Глобальная панель навигации слева, раздел Приложения Плагин открывается отдельной страницей и имеет свой url Пустой объект
attachment.viewer.action Галерея. Кнопка в действиях Модальное окно Данные вложения

Плагин как самостоятельный инструмент — navigation

Пользователь приходит в Трекер не работать с конкретным тикетом, а использовать ваш инструмент: импортировать данные, посмотреть отчет, провести массовую операцию. Он идет в левую панель — туда, где Задачи, Проекты, Дашборды.

Это ваш слот, если:

  • Плагин решает задачу независимо от конкретного тикета или очереди.

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

  • Результат работы — список, отчет или форма, а не действие над сущностью.

Не этот слот, если плагин всегда нужен в контексте тикета — пользователь не будет искать его в навигации.

Формат: отдельная страница со своим URL. Это самый просторный формат — можно строить полноценный интерфейс.

image.png

Действие над вложением — attachment.viewer.action

Пользователь смотрит на файл в галерее вложений и хочет что-то с ним сделать: отредактировать изображение, распознать текст, конвертировать. Он находится внутри просмотрщика и не хочет из него уходить.

Это ваш слот, если:

  • Плагину нужен конкретный файл — его тип, содержимое, URL.

  • Действие логически связано с просмотром файла, а не с тикетом в целом.

image.png

Страница тикета

Слот Описание Формат окна Контекст слота
issue.action Меню Действия справа сверху на странице задачи. Модальное окно Данные открытого тикета
issue.block Область под описанием в тикете. Плагин встраивается в область ниже связей тикета в раскрываемой секции Данные открытого тикета
issue.tab Плагин в виде таба на странице тикета. Плагин встраивается в список табов. Имеет свой url в контексте тикета. Данные открытого тикета
issue.comment.action Действия с комментарием. Модальное окно Данные комментария
issue.editor.action Редактор текста. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные открытого тикета

Слоты для боковой панели тикета

Тикет может открываться не только на отдельной странице, но и в боковой панели поверх текущего экрана. В боковой панели меньше места, поэтому для нее предусмотрены отдельные слоты:

Слот Аналог на странице тикета
drawer.issue.action issue.action
drawer.issue.tab issue.tab
drawer.issue.block issue.block

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

Пользователь хочет совершить действие с тикетом — issue.action

Пользователь смотрит на тикет и хочет что-то с ним сделать: отправить, сгенерировать, запустить процесс. Он потянется в меню Действия — туда, где уже живут похожие команды вроде Создать подзадачу или Скопировать задачу.

Это ваш слот, если:

  • Плагин запускается по намерению пользователя, а не показывает данные автоматически.

  • Результат действия не нужно постоянно видеть на странице.

  • Сценарий линейный: запустил → получил результат → закрыл.

Не этот слот, если пользователь должен видеть данные плагина каждый раз, когда открывает тикет — тогда смотрите issue.block.

Формат: модальное окно, внутри один сценарий

image.png

Данные плагина нужны при каждом открытии тикета — issue.block

Пользователь открывает тикет и контекст из вашего плагина помогает ему работать — он видит статус деплоя, связанные PR, данные из внешней системы. Ему не нужно ничего запускать, данные просто есть.

Это ваш слот, если:

  • Плагин показывает состояние или данные, а не выполняет действие.

  • Информация актуальна всегда, когда пользователь смотрит на тикет.

  • Нет явного триггера запуска — плагин полезен сам по себе.

Не этот слот, если данные нужны редко или плагин требует ввода параметров перед показом — тогда смотрите issue.action или issue.tab.

Формат: встроенная раскрываемая секция ниже блока связей. Пользователь может свернуть, если не нужна прямо сейчас.

Важно про высоту: блок загружается вместе со страницей тикета. Не делайте его огромным — высота должна быть оправдана содержимым, иначе блок будет визуально «продавливать» страницу.

image.png

Сложный инструмент внутри тикета — issue.tab

Пользователь работает с тикетом и ему нужен полноценный инструмент: много данных, своя навигация, объемная таблица. Он привычно идет на вкладку — как Комментарии или История.

Это ваш слот, если:

  • Контент плагина не помещается в блок или модалку без потери удобства.

  • Пользователю нужно переключаться между плагином и страницей тикета.

  • Есть собственная логика внутри: фильтры, список, несколько состояний.

Не этот слот, если функциональность простая — таб создает ощущение, что там будет что-то большое. Пустой или почти пустой таб выглядит как ошибка.

Формат: встроенная область в контексте тикета.

image.png

Действие применяется к конкретному комментарию — issue.comment.action

Пользователь читает комментарий и хочет что-то с ним сделать: создать задачу, перевести, отправить. Он потянется к «⋯» рядом с комментарием — это естественное место для действий с конкретным сообщением.

Это ваш слот, если:

  • Плагину нужен текст, автор или дата конкретного комментария.

  • Действие имеет смысл только для одного комментария, а не для тикета в целом.

Формат: модальное окно, внутри один сценарий

image.png

Действие вставляет контент в редактор — issue.editor.action

Пользователь пишет комментарий или описание и хочет вставить готовый контент: шаблон, сгенерированный текст, данные из внешней системы. Он видит кнопку в нижней панели редактора — рядом с Призвать и Шаблоны — и запускает плагин, не покидая редактор.

Это ваш слот, если:

  • Плагин генерирует или подбирает текст, который нужно вставить в поле ввода.

  • Результат работы плагина — фрагмент текста или разметки, а не отдельное действие над тикетом.

  • Пользователь запускает плагин в момент написания, а не после.

Не этот слот, если плагин выполняет действие над тикетом целиком — тогда смотрите issue.action.

Формат: всплывающее окно с привязкой к кнопке. После завершения работы плагин вставляет результат в конец текущего содержимого редактора.

image.png

Страница очереди

Слот Описание Формат окна Контекст слота
queue.action Меню Действия справа сверху на странице очереди. Модальное окно Данные открытой очереди
queue.tab Плагин в виде таба на странице очереди. Плагин встраивается в список табов. Имеет свой url в контексте очереди. Данные открытой очереди

Пользователь хочет совершить действие с очередью — queue.action

Пользователь смотрит на очередь и хочет что-то с ней сделать: запустить процесс, сгенерировать отчет, выполнить массовую операцию. Он потянется в меню Действия — туда, где уже живут похожие команды.

Это ваш слот, если:

  • Плагин запускается по намерению пользователя, а не показывает данные автоматически.

  • Результат действия не нужно постоянно видеть на странице.

  • Сценарий линейный: запустил → получил результат → закрыл.

Формат: модальное окно, внутри один сценарий

image.png

Сложный инструмент внутри очереди — queue.tab

Пользователь работает с очередью и ему нужен полноценный инструмент: много данных, своя навигация, объемная таблица. Он привычно идет на вкладку — как на другие табы страницы очереди.

Это ваш слот, если:

  • Контент плагина не помещается в модалку без потери удобства.

  • Пользователю нужно переключаться между плагином и страницей очереди.

  • Есть собственная логика внутри: фильтры, список, несколько состояний.

Не этот слот, если функциональность простая — таб создает ощущение, что там будет что-то большое. Пустой или почти пустой таб выглядит как ошибка.

Формат: встроенная область в контексте очереди.

image.png

Автоматизации

Слот Описание Формат окна Контекст слота
trigger.create.action Страница триггера. Создание действия. UI-плагины для упрощения формы создания вебхука, не имеют дополнительной логики. Появляется новый тип действия, форму действия предоставляет плагин Ключ очереди
trigger.edit.action Страница триггера. Редактирование действия. UI-плагины для упрощения формы редактирования вебхука, не имеют дополнительной логики. Появляется новый тип действия, форму действия предоставляет плагин Ключ очереди и данные действия

Новый тип действия в триггере — trigger.create.action + trigger.edit.action

Администратор настраивает автоматизацию и хочет добавить действие, которого нет в стандартном списке: отправить уведомление в свою систему, запустить вебхук с кастомными параметрами. Он выбирает тип действия из списка — плагин появляется там как новая опция.

Это ваши слоты, если:

  • Плагин добавляет новый тип автоматического действия, а не работает с пользователем в реальном времени.

  • Нужна форма настройки: пользователь задает параметры один раз при создании триггера.

Важно: эти два слота почти всегда идут в паре. Если вы даете возможность создать действие, пользователь должен уметь его и отредактировать — иначе при изменении триггера он увидит пустую форму.

Формат: встроенная форма внутри страницы триггера. Стилистически должна выглядеть как нативная часть автоматизации, без лишних рамок и заголовков.

image.png

image.png

Проект

Слот Описание Формат окна Контекст слота
project.action Страница проекта. Кнопка Меню проекта Модальное окно Данные проекта
project.tab Плагин в виде таба на странице проекта. Плагин встраивается в список табов. Имеет свой url в контексте проекта. Данные проекта
project.block Область под описанием проекта. Плагин встраивается в область ниже связей проекта в раскрываемой секции Данные проекта
project.editor.action Редактор комментариев в проекте. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные проекта

Портфели

Слот Описание Формат окна Контекст слота
portfolio.action Страница портфеля. Кнопка Меню портфеля проектов Модальное окно Данные портфеля
portfolio.tab Плагин в виде таба на странице портфеля. Плагин встраивается в список табов. Имеет свой url в контексте портфеля. Данные портфеля
portfolio.block Область под описанием портфеля. Плагин встраивается в область ниже связей портфеля в раскрываемой секции Данные портфеля
portfolio.editor.action Редактор комментариев в портфеле. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные портфеля

Цели

Слот Описание Формат окна Контекст слота
goal.action Страница цели. Кнопка Меню цели Модальное окно Данные цели
goal.tab Плагин в виде таба на странице цели. Плагин встраивается в область ниже списка табов. Имеет свой url в контексте цели. Данные цели
goal.block Область под описанием цели. Плагин встраивается в область ниже связей цели в раскрываемой секции Данные цели
goal.editor.action Редактор комментариев в цели. Кнопка в нижней панели редактора. Всплывающее окно с привязкой к кнопке Данные цели

project.action / portfolio.action / goal.action

Пользователь работает с проектом, портфелем или целью и хочет совершить действие в этом контексте. Механика одинаковая: кнопка «⋯» в правом верхнем углу страницы, модальное окно.

Выбирайте слот по тому, какие данные нужны плагину:

  • Нужен ID и параметры проекта → project.action.

  • Нужны данные портфеля → portfolio.action.

  • Нужны данные цели → goal.action.

Если плагин универсальный и должен работать во всех трех контекстах — можно указать все три слота одновременно.

image.png

Действие вставляет контент в редактор комментариев — project.editor.action / portfolio.editor.action / goal.editor.action

Пользователь пишет комментарий в проекте, портфеле или цели и хочет вставить готовый контент: шаблон, сгенерированный текст, данные из внешней системы. Он видит кнопку в нижней панели редактора — рядом с Призвать и Шаблоны — и запускает плагин, не покидая редактор.

Это ваш слот, если:

  • Плагин генерирует или подбирает текст, который нужно вставить в поле ввода.

  • Результат работы плагина — фрагмент текста или разметки, а не отдельное действие над сущностью.

  • Пользователь запускает плагин в момент написания комментария, а не после.

Не этот слот, если плагин выполняет действие над сущностью целиком — тогда смотрите project.action, portfolio.action или goal.action.

Формат: всплывающее окно с привязкой к кнопке. После завершения работы плагин вставляет результат в конец текущего содержимого редактора.

Выбирайте слот по тому, в контексте какой сущности находится редактор:

  • Редактор комментариев в проекте → project.editor.action.

  • Редактор комментариев в портфеле → portfolio.editor.action.

  • Редактор комментариев в цели → goal.editor.action.

Контекст слота содержит данные соответствующей сущности — проекта, портфеля или цели.

Доски

Слот Описание Формат окна Контекст слота
board.tab Страница доски, таб доски Контент на странице Данные доски