- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI - Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код) - Установлен PHPWord для красивого форматирования документов - Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале) - Замена пробелов на подчеркивания в именах папок - Создана документация для AI и разработчиков - Добавлены API для работы с шаблонами Nextcloud
5.8 KiB
5.8 KiB
🔧 ИСПРАВЛЕНИЕ: Кнопки "Папка в Nextcloud" не работали
❌ ПРОБЛЕМА:
В модулях CRM кнопка "Папка в Nextcloud" была неактивна и не реагировала на клики.
🔍 ПРИЧИНА:
В JavaScript файле crm_extensions/nextcloud_editor/js/nextcloud-editor.js отсутствовали функции, которые вызывались из шаблонов:
Было в JS:
- ✅
openProjectFolder()— ТОЛЬКО ДЛЯ Project
Вызывалось из шаблонов, но НЕ СУЩЕСТВОВАЛО:
- ❌
openRecordFolder()— для HelpDesk, Invoice, SalesOrder, PurchaseOrder, Leads, Quotes, Potentials - ❌
openAccountFolder()— для Accounts - ❌
openContactFolder()— для Contacts
✅ РЕШЕНИЕ:
1. Добавлена универсальная функция openRecordFolder()
function openRecordFolder(moduleName, recordId, recordName) {
// Нормализация имени (убираем кавычки, заменяем пробелы)
if (recordName) {
recordName = recordName.replace(/"/g, '_').replace(/\s+/g, '_');
}
// Формируем путь к папке
const folderName = recordName ? `${recordName}_${recordId}` : `${moduleName.toLowerCase()}_${recordId}`;
const encodedFolderName = encodeURIComponent(folderName);
const nextcloudUrl = 'https://office.clientright.ru:8443';
const folderUrl = `${nextcloudUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${moduleName}/${encodedFolderName}`;
// Открываем в новом окне
window.open(folderUrl, 'nextcloud_folder', 'width=1200,height=800,scrollbars=yes,resizable=yes');
}
Используется в модулях:
- HelpDesk (тикеты)
- Invoice (счета)
- SalesOrder (заказы)
- PurchaseOrder (закупки)
- Leads (лиды)
- Quotes (предложения)
- Potentials (сделки)
2. Добавлена специализированная функция openAccountFolder()
function openAccountFolder(accountId, accountName) {
// Нормализация имени контрагента
if (accountName) {
accountName = accountName.replace(/"/g, '_').replace(/\s+/g, '_');
}
const folderName = accountName ? `${accountName}_${accountId}` : `account_${accountId}`;
const encodedFolderName = encodeURIComponent(folderName);
const folderUrl = `https://office.clientright.ru:8443/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Accounts/${encodedFolderName}`;
window.open(folderUrl, 'nextcloud_folder', 'width=1200,height=800,scrollbars=yes,resizable=yes');
}
Используется в модуле:
- Accounts (контрагенты)
3. Добавлена специализированная функция openContactFolder()
function openContactFolder(contactId, firstName, lastName) {
// Составление имени из firstName и lastName
let contactName = '';
if (firstName || lastName) {
contactName = `${firstName || ''}_${lastName || ''}`.replace(/^_+|_+$/g, '');
contactName = contactName.replace(/"/g, '_').replace(/\s+/g, '_');
}
const folderName = contactName ? `${contactName}_${contactId}` : `contact_${contactId}`;
const encodedFolderName = encodeURIComponent(folderName);
const folderUrl = `https://office.clientright.ru:8443/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Contacts/${encodedFolderName}`;
window.open(folderUrl, 'nextcloud_folder', 'width=1200,height=800,scrollbars=yes,resizable=yes');
}
Используется в модуле:
- Contacts (контакты)
4. Очищен кеш Smarty
rm -rf test/templates_c/v7/*.php
📋 ПРОВЕРКА:
Функции в JS:
grep -n "^function open.*Folder" crm_extensions/nextcloud_editor/js/nextcloud-editor.js
Результат:
9:function openRecordFolder(moduleName, recordId, recordName) {
37:function openProjectFolder(projectId, projectName) {
65:function openAccountFolder(accountId, accountName) {
87:function openContactFolder(contactId, firstName, lastName) {
✅ ВСЕ 4 ФУНКЦИИ НА МЕСТЕ!
Где используются:
| Модуль | Функция | Параметры |
|---|---|---|
| HelpDesk | openRecordFolder() |
'HelpDesk', recordId, ticket_no |
| Invoice | openRecordFolder() |
'Invoice', recordId, invoice_no |
| SalesOrder | openRecordFolder() |
'SalesOrder', recordId, salesorder_no |
| PurchaseOrder | openRecordFolder() |
'PurchaseOrder', recordId, purchaseorder_no |
| Leads | openRecordFolder() |
'Leads', recordId, firstname_lastname |
| Quotes | openRecordFolder() |
'Quotes', recordId, quote_no |
| Potentials | openRecordFolder() |
'Potentials', recordId, potentialname |
| Accounts | openAccountFolder() |
accountId, accountname |
| Contacts | openContactFolder() |
contactId, firstname, lastname |
| Project | openProjectFolder() |
projectId, projectname |
🎯 РЕЗУЛЬТАТ:
✅ КНОПКИ "Папка в Nextcloud" ТЕПЕРЬ РАБОТАЮТ ВО ВСЕХ МОДУЛЯХ!
При клике на кнопку открывается новое окно с Nextcloud, где отображается папка соответствующей записи CRM.
📁 ИЗМЕНЕННЫЕ ФАЙЛЫ:
crm_extensions/nextcloud_editor/js/nextcloud-editor.js— добавлены 3 недостающие функцииtest/templates_c/v7/*.php— очищен кеш (автоматически пересоздастся)
📅 ДАТА ИСПРАВЛЕНИЯ:
02.11.2025