Расширения Portal

Модули и готовые решения

Готовые расширения для Portal: чат, шаблоны разделов и другое. Установка из админки портала — без ручной сборки инфраструктуры. Ниже также есть материалы для разработчиков, которые делают свои пакеты.

Для разработчиков и интеграторов

Portal поддерживает функциональные модули — ZIP-архивы .portalmod, в которых вы описываете всё необходимое для развёртывания решения у заказчика одним действием. Не нужно отдельно создавать узлы, списки и библиотеки в админке и по очереди загружать расширения: платформа прочитает module.json и развернёт инфраструктуру автоматически.

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

Что входит в один пакет

.portalpart

WebPart на C# — UI и логика страниц. Hot deploy: обновление без остановки портала.

.portalevent

Event Receiver — реакция на создание, изменение и удаление элементов списков.

.portaltimer

Timer Job — фоновые задачи по расписанию: синхронизация, отчёты, уведомления.

Узлы и навигация

Разделы портала, пункты бокового меню, страницы с WebPart — декларативно в module.json.

Списки и библиотеки

Поля, lookup-связи, библиотеки документов и изображений — схема данных создаётся при установке.

Контент и provisioner

Демо-записи, файлы в библиотеках, пользователи — через seed/ или C# provisioner для сложных сценариев.

Структура архива

my-solution.portalmod (ZIP)
├── module.json          # манифест: узлы, списки, зависимости
├── packages/
│   ├── widget.portalpart
│   ├── on-change.portalevent
│   └── nightly.portaltimer
├── seed/                # опционально: начальные данные
└── provisioner/         # опционально: C# для сложной логики

Установка у заказчика

  1. Соберите .portalmod локально или скачайте готовый из каталога.
  2. На портале заказчика откройте Админка → Модули (или вызовите POST /api/v1/modules/install).
  3. Загрузите один файл — платформа создаст узлы, списки, библиотеки, страницы, зарегистрирует расширения и при необходимости выполнит provisioner.
  4. Повторная установка той же версии пропускается; новая версия обновляет модуль с миграцией данных.

Зависимости между модулями задаются в requires — например, модуль «Дни рождения» требует предварительно установленную «Адресную книгу».

Каталог

Готовые модули Korport

Бесплатные модули — скачивание и установка с korport.ru. Платные — разовая лицензия модуля; на карточке — цена и покупка онлайн.

Показываем весь каталог. Можно оставить только бесплатные или только платные.

demo.banners · v1.0.0 · .portalmod

Баннеры (демо)

Карусель баннеров с демо-изображениями

Карусель баннеров с демо-слайдами. Модуль для тех, кто смотрит, как устроен .portalmod: поставили один файл — появились список, библиотека картинок и веб-часть на странице.

contoso.hello-widget · v2.0.2 · .portalpart

Hello Widget

Минимальный пример C# WebPart с настраиваемым заголовком и цветом

Минимальный WebPart на C#: заголовок и цвет акцента задаются в свойствах веб-части. С него начинают, когда собирают свой .portalpart и хотят увидеть горячую замену без остановки портала.

contoso.list-change-handler · v2.0.3 · .portalevent

List Change Handler

Логирует изменения элементов списка; context.GetListItemAsync / GetListItemSnapshotAsync

Пример Event Receiver: пишет в журнал создание, изменение и удаление элемента. В обработчике текущий список и элемент берутся из контекста, без отдельного запроса по UUID. Удобно как образец, когда свой приёмник только начинается.

contoso.heartbeat · v1.0.1 · .portaltimer

Contoso Heartbeat

Пример Timer Job — лог + опциональный PortalListItem по sampleListId

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

korport.helpdesk · v3.0.19 · .portalmod

Helpdesk

Заявки IT, канбан, база знаний, справочники и уведомления службы поддержки

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

korport.base.address-book · v1.3.3 · .portalmod

Адресная книга

Оргструктура и сотрудники из AD-профилей; фото — аватары пользователей портала

Раздел открывается по адресу /address-book. Старый префикс /portal в ссылках меню и карточки больше не используется.

korport.base.org-structure · v1.0.3 · .portalmod

Оргструктура

Дерево подразделений из адресной книги с ленивой загрузкой и переходом из карточки сотрудника

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

korport.base.birthdays · v1.0.6 · .portalmod

Дни рождения

Именинники из адресной книги, WebPart и виджет

Ссылки с виджета ведут на корень портала, без префикса /portal. Карусель и состав именинников те же, что в 1.0.5.

korport.base.meeting-rooms · v1.0.9 · .portalmod

Переговорные

Бронирование переговорных комнат, виджет занятости и полноразмерный таймлайн

Пакет собран под корень сайта «/». Бронирование комнат и таймлайн работают как в 1.0.8, адреса без префикса /portal.

korport.base.tasks · v1.1.4 · .portalmod

Задачи

Планирование задач: таймлайн и канбан с цветными колонками, приоритеты-бейджи, задачи подчинённых по полю «Руководитель»

Пакет перенумеровали вместе с переходом портала на адреса без /portal. Канбан, таймлайн и поле руководителя те же, что в 1.1.3.

korport.base.comms-shell · v1.0.2 · .portalmod

Каркас коммуникаций

Корневой узел новостей и объявлений (без отдельной landing-страницы — виджеты на главной портала)

Каркас оставили родителем коммуникаций, когда рядом появились Helpdesk и переговорные. Своей ленты у него по-прежнему нет.

korport.base.news · v1.0.3 · .portalmod

Новости

Лента корпоративных новостей с рубриками

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

korport.base.announcements · v1.0.3 · .portalmod

Объявления

Важные объявления с подтверждением прочтения

Подтверждение прочтения работает как в 1.0.2. Версию подняли при сборке каталога, отдельных сценариев не добавляли.

korport.base.home-widgets · v1.0.0 · .portalmod

Виджеты главной

Погода и курсы валют для домашней страницы портала

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

korport.base.portal-home · v1.0.26 · .portalmod

Главная портала

Домашняя страница портала с поиском, именинниками, задачами, заявками Helpdesk, переговорными, новостями и объявлениями

Все ссылки «ещё» с главной идут без префикса /portal: адресная книга, именинники, заявки, переговорные, новости и объявления. Раскладка виджетов та же.

korport.comms.chat · v0.2.0 · .portalmod

Корпоративный чат

Мессенджер внутри Portal: личные и групповые чаты, каналы отделов, файлы и звонки. Если собеседник не в сети, личный звонок остаётся в переписке как пропущенный. Переписка хранится на вашей инфраструктуре.

Если собеседник не в сети, личный звонок остаётся в переписке как пропущенный, а не пропадает. Чат открывается со страницы узла. В закрытом контуре модуль можно поставить файлом, если он уже есть в локальной лицензии. Для кнопок звонка по-прежнему нужен LiveKit.

korport.workflows · v1.1.0 · .portalmod

Рабочие процессы

Portal Flows: визуальная автоматизация списков и библиотек — триггеры элементов и файлов, условия, согласования, email и уведомления, права, HTTP, расписание. Требует платформу Portal с движком workflows (миграции 063+, 085).

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

korport.forms · v1.0.1 · .portalmod

Формы

Portal Forms: визуальный конструктор layout форм элементов списка (new/view/edit), кастомные JS-скрипты и веб-часть встраивания формы.

Конструктор форм элемента списка: отдельные макеты для создания, просмотра и правки. На форму можно повесить свой скрипт и встроить её веб-частью на другую страницу, не только в стандартное окно списка.

korport.kedo · v2.0.39 · .portalmod

КЭДО

Кадровый ЭДО без КриптоПро и токенов: корпоративная УНЭП на ГОСТ, подпись и ознакомление с ЛНА. При отправке выбирается работодатель из справочника юрлиц. Архив с подписями содержит отсоединённый PKCS#7 (.p7s): его проверяют КриптоПро и OpenSSL с ГОСТ. Отзыв УНЭП в UI и напоминания админам об истечении сертификата. Данные процесса — списки Portal; криптография — platform SDK. Маршрут: parallel/sequential, forward/decline/cancel. Portal Flows: отправка, ожидание подписи, ветки.

Если в компании несколько юрлиц, работодателя выбирают при отправке документа и ЛНА. Он остаётся на пакете, в цифровом следе и в архиве. Удостоверяющий центр по-прежнему один на портал: его можно перевыпустить, когда сменилось название или подходит десятилетний срок. Старый сертификат центра сохраняется для уже подписанных документов, действующие УНЭП сотрудников при этом перевыпускаются.

korport.vacations · v2.0.5 · .portalmod

Планирование отпусков

График отпусков на год, заявки, согласование руководителем и HR, таймлайн по отделам, учёт остатков и приказы в КЭДО на подпись. Данные — списки Portal; логика — WebPart, Event Receivers и Timer Job модуля.

Приказ уходит в КЭДО с работодателем. Если юрлицо одно, оно подставляется само. Если их несколько, берётся организация из настроек отпусков, а не пустое поле в пакете.

korport.learning · v1.0.9 · .portalmod

Обучение сотрудников

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

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

korport.sales · v1.0.15 · .portalmod

Продажи

Воронка сделок, следующий шаг и тишина, KPI, личный зачёт и кубок отделов продаж. Настройки — списки Portal.

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