6.4 KiB
OnlyOfficeTemplates
Модуль генерации документов из DOCX-шаблонов с подстановкой полей CRM (аналог PDFMaker). Результат — PDF (по умолчанию) или DOCX. При сохранении в Документы в формате DOCX документ можно редактировать через OnlyOffice (кнопка «Nextcloud» / open_file_v2).
Возможности
- Шаблоны DOCX хранятся в отдельной папке S3 (
crm2/OnlyOfficeTemplates/templates/). - Редактирование по аналогии с PDFMaker: слева — метаданные (имя, модуль), справа — OnlyOffice Document Editor; документ сохраняется в S3 через callback Document Server.
- Плейсхолдеры в шаблоне:
{{fieldname}}для полей записи,{{ModuleName__fieldname}}для связанных модулей (Account, Contact и т.д.). - В виджете карточки записи: выбор шаблона, формата (PDF/DOCX), действия «Скачать» и «Сохранить в Документы».
- При выборе PDF результат конвертируется через OnlyOffice Conversion API.
- Модуль портативный: можно развернуть в другом инстансе CRM без привязки к текущему
crm_extensions.
Требования
- PHP с расширениями: zip, xml, curl (или allow_url_fopen для Conversion API).
- Composer-зависимости:
phpoffice/phpword,aws/aws-sdk-php(уже в корне проекта). - Доступ к S3-совместимому хранилищу и (для PDF) к OnlyOffice Document Server (Conversion API).
Установка
- Скопируйте папку
modules/OnlyOfficeTemplatesиlayouts/v7/modules/OnlyOfficeTemplatesв целевой CRM. - Настройте переменные окружения или конфиг (см. раздел «Конфигурация»).
- Выполните установку БД и виджетов одним из способов:
- Через скрипт (рекомендуется):
php modules/OnlyOfficeTemplates/install.php
из корня CRM (или откройте в браузере соответствующий URL с правами администратора). - Через Module Manager: упакуйте модуль в zip с
manifest.xmlи импортируйте.
- Через скрипт (рекомендуется):
- Добавьте шаблоны: загрузите DOCX в S3 в папку
{OOT_S3_PREFIX}/templates/{id}/{filename}.docxи добавьте запись вvtiger_oot_templates(имя, модуль, s3_key, file_name, owner), либо используйте экшен UploadTemplate (см. ниже).
Конфигурация
Модуль читает настройки из:
- Внешний конфиг (если есть):
crm_extensions/file_storage/config.php— используются S3-данные оттуда. - Переменные окружения (.env в
crm_extensionsили в корне):S3_ACCESS_KEY,S3_SECRET_KEY,S3_ENDPOINT,S3_BUCKET— доступ к S3.OOT_S3_PREFIX— префикс папки модуля в S3 (по умолчаниюcrm2/OnlyOfficeTemplates).OOT_ONLYOFFICE_CONVERT_URL— URL Conversion API (напримерhttps://office.example.com:9443/ConvertService.ashxили/converter).ONLYOFFICE_DOCUMENT_SERVERилиOOT_ONLYOFFICE_DOCUMENT_SERVER— URL OnlyOffice Document Server для редактора (напримерhttps://documentserver). Нужен для экрана редактирования шаблона (слева форма, справа OnlyOffice). Document Server должен иметь доступ по HTTP(S) к CRM (для загрузки документа и callback).OOT_DOCUMENT_SECRET— секрет для подписи URL документа (рекомендуется в продакшене). Если задан, в ссылку на документ добавляется токен; без него GetDocument доступен без проверки.OOT_DOCUMENTS_S3_PREFIX— префикс для файлов, сохраняемых в Документы (по умолчаниюcrm2/CRM_Active_Files/Documents).
Без OnlyOffice Conversion API доступна только выдача DOCX (формат PDF не будет работать). Без Document Server редактирование шаблона в OnlyOffice недоступно, но можно загружать готовые DOCX через «Загрузить файл».
Редактирование и загрузка шаблонов
- Через OnlyOffice (как в PDFMaker): «Добавить шаблон» → создаётся черновик → открывается экран: слева имя и модуль, справа OnlyOffice Document Editor. Документ по сохранению/закрытию отправляется в S3 через callback. Список шаблонов: имя — ссылка на редактирование.
- Загрузить файл: кнопка «Загрузить файл» открывает форму: имя, модуль, выбор DOCX; отправка в
UploadTemplate. - Вручную: загрузите DOCX в S3 по пути
{OOT_S3_PREFIX}/templates/{template_id}/{имя_файла}.docxи вставьте запись вvtiger_oot_templates.
Структура БД
vtiger_oot_templates— id, name, module, s3_key, file_name, owner, created_at, settings (JSON, опционально).vtiger_oot_templates_seq— при необходимости для генерации id (опционально).
Портативность
Модуль не изменяет ядро CRM и не зависит от наличия crm_extensions. Все пути и ключи задаются через конфиг/переменные окружения. В другом инстансе достаточно задать свои S3_, OOT_ и (при необходимости) ONLYOFFICE_* и выполнить установку (install.php или импорт пакета).