Глобальные настройки в deploy.json
¶
Глобальные настройки конфигурации приложения включает в себя следующие разделы:
- Пространство имен приложния
"namespace"
- Параметризация
"parametrised"
- Путь к шаблонам
"theme"
- Время кеширования и другие параметры для статичных файлов https://expressjs.com/en/4x/api.html#express.static
"staticOptions"
(работает при NODE_ENV=production) - Наименование вкладки в браузере
"pageTitle"
- Модули приложения
"moduleTitles"
- перейти - Настройка отображения общего системного меню для всех модулей проекта
"explicitTopMenu"
- перейти - Переопределение настроек хранилища сессий
"sessionHandler"
"actualAclProvider"
"aclProvider"
- Настройка HTML атрибутов для отображения и сохранения картинок в атрибуте
"fileStorage"
- перейти - Настройки отображения имени пользователя и аватара во всех модулях проекта
"customProfile"
- перейти - Настройка глубины жадной загрузки
"dataRepo"
- перейти "accounts"
"securedDataRepo"
"ldap"
"auth"
"sendmail"
"nodemailer"
"emailNotifier"
"notifier"
"eventNotifier"
- Настройки интеграции с календарем
"icsMailer"
- перейти "recache"
"fact-creator"
"report-builder"
"projectReportCreator"
Структура которых строится следующим образом:
{
"namespace": "...",
"parametrised": true,
"globals": {
"theme": "...",
"staticOptions": {...},
"pageTitle": "...",
"moduleTitles": {...},
"explicitTopMenu": [...],
"plugins": {
"sessionHandler": {...},
"actualAclProvider": {...},
"aclProvider": {...},
"fileStorage": {...},
"customProfile": {...},
"dataRepo": {...},
"accounts": {...},
"securedDataRepo": {...},
"ldap": {...},
"auth": {...},
"sendmail": {...},
"nodemailer": {...},
"emailNotifier": {...},
"notifier": {...},
"eventNotifier": {...},
"icsMailer": {...}
},
"jobs": {
"recache": {...},
"fact-creator": {...},
"report-builder": {...},
"projectReportCreator": {...}
}
}
}
Модули приложения¶
Для свойства необходимо задать модули, которые будут использованы в приложении в поле «moduleTitles». Также эти же модули будут отображаться в системном меню.
{
"namespace": "crm",
"globals": {
"moduleTitles": {
"registry": "Тех. поддержка",
"report": "Отчеты"
}
}
}
Настройка скрытия модуля в системном меню¶
Для скрытия модуля из системного меню проекта присваиваем этому модулю, в файле deploy.json
, значение null, например "ionadmin": null
.
{
"namespace": "project-management",
"parametrised": true,
"globals": {
"moduleTitles": {
"registry": {
"description": "Проектное управление",
"order": 10,
"skipModules": true
},
"ionadmin": null
}
}
}
Настройка отображения общего системного меню для всех модулей проекта¶
Для того, чтобы в системном меню отображался одинаковый набор пунктов, не зависимо от того, на странице какого модуля находишься - необходимо в deploy.json
файле проекта задать "explicitTopMenu"
на глобальном уровне, с сохранением возможности переопределять "explicitTopMenu"
в registry
.
Пример¶
"globals": {
"explicitTopMenu": [
{
"id":"mytasks",
"url": "/registry/project-management@indicatorValue.all",
"caption":"Мои задачи"
},
{
"id":"projectmanagement",
"url": "/registry/project-management@project",
"caption":"Проектное управление"
},
{
"type": "system",
"name": "gantt-chart"
},
{
"type": "system",
"name": "portal"
},
{
"type": "system",
"name": "geomap"
},
{
"type": "system",
"name": "report"
},
{
"id":"distionary",
"url": "/registry/project-management@classification.okogu",
"caption":"Справочники"
},
{
"id":"mark",
"url": "/registry/project-management@person",
"caption":"Прогресс-индикатор"
}
],
Описание полей¶
"id"
- идентификатор секции навигации"url"
- url секции навигации"caption"
- наименование секции навигации"name"
- системное наименование модуля
Поле «plugins»¶
В данном поле задаются настройки, которые позволяют дополнительно расширить возможности приложения.
Настройка HTML атрибутов для отображения и сохранения картинок в атрибуте¶
"plugins":{
"fileStorage": {
"module": "core/impl/resource/OwnCloudStorage",
"options": {
"url": "https://owncloud.iondv.ru/",
"login": "api",
"password": "apiapi"
}
}
"htmlFiles": {
"module": "core/impl/resource/FsStorage",
"initMethod":"init",
"initLevel": 3,
"options": {
"storageBase": "./htmlFiles",
"urlBase": "/htmlFiles",
"dataSource": "ion://Db",
"log": "ion://sysLog",
"app": "ion://application",
"auth": "ion://auth"
},
"htmlImages": {
"module": "core/impl/resource/ImageStorage",
"initMethod": "init",
"initLevel": 3,
"options": {
"fileStorage": "ion://htmlFiles",
"app": "ion://application",
"auth": "ion://auth",
"log": "ion://sysLog",
"urlBase": "/htmlFiles",
"thumbnails": {
"small": {
"width": 100,
"height": 100
}
}
}
}
}
"modules": {
"registry": {
"globals":
{
"refShortViewDelay": 1000, // количество миллисекунд до появления окна с инфо. Если не указан или 0, или нет shortView представления, то окно не выводится
"defaultImageDir": "images",
"contentImageStorage": "htmlImages"
}
Настройки отображения имени пользователя и аватара во всех модулях проекта¶
Для задания аватара через деплой прописываем связь с изображением. Аватар будет браться из соответствующего атрибута класса, объект которого привязан к текущему системному пользователю.
Пример¶
"customProfile": {
"module": "lib/plugins/customProfile",
"initMethod": "inject",
"options": {
"auth": "ion://auth",
"metaRepo": "ion://metaRepo",
"dataRepo": "ion://dataRepo",
"propertyMap": {
"person@project-management": {
"filter": "user",
"properties": {
"avatar": "foto"
}
}
}
}
}
Настройка глубины жадной загрузки¶
"dataRepo": {
"options": {
"maxEagerDepth": 4
}
}
Настройки интеграции с календарем¶
Интеграция осуществляется следующим образом: модуль по событию отправляет письмо с прикрепленным ics-файлом
, в котором указано событие iCalendar. Outlook воспринимает такое письмо как приглашение на собрание. Яндекс тоже добавляет собрание в календарь.
Конфигурации модуля:
"icsMailer": {
"module": "applications/extensions/lib/icsMailer",
"initMethod": "init",
"initLevel": 2,
"options": {
"dataRepo": "ion://dataRepo",
"transport": {...}, //Настройки smtp-сервера
"defaults": {...}, //Общий настройки всех писем
"listeners": [
{
"component": //Ссылка на слушаемый компонент
"events": {
"...": {// Идентификатор события
"calendar": {...}, //Настройки календаря, несущего событие и передаваемого в ics-вложении
"event": {...}, //Настройки VEVENT, передаваемого в ics-вложении
"filename": "...", //Имя вложенного ics-файла
"letter": {...} //Настройки письма, отправляемого по событию.
}
}
}
]
}
}
- Подробности настройки transport и defaults.
- Подробности настройки letter
- Подробности настройки calendar
- Подробности настройки event
Для настроек letter, event, filename и calendar предусмотрена возможность использовать данные из объекта события, указывая имена свойств через точку refAttr.stringAttr
, либо обернув эту конструкцию в ${refAttr.stringAttr}
когда необходимо использовать шаблон.
Полный пример файла deploy.json