🔧 Исправления: - Исправлены пути к папкам проектов: теперь /Documents/Project/{Name}_{Id} - Исправлена функция openProjectFolder() во всех JS файлах - Добавлены кнопки создания Word/Excel/PowerPoint из CRM (10 модулей) - Создание файлов напрямую в S3 с автоиндексацией через Redis - Исправлена ошибка 'Class Redis not found' (использован Predis) 📁 Изменённые файлы: - layouts/v7/lib/nextcloud-editor.js - crm_extensions/nextcloud_editor/js/nextcloud-editor.js - layouts/v7/lib/nextcloud-editor-v3.js - crm_extensions/file_storage/api/create_nextcloud_file.php - layouts/v7/modules/*/DetailViewHeaderTitle.tpl (10 модулей) - layouts/v7/modules/Documents/*.tpl (кнопки редактирования) 🎯 Результат: - Кнопка 'Папка в Nextcloud' открывает правильную папку - Создание файлов работает молниеносно (прямо в S3) - Redis события публикуются корректно - OnlyOffice открывается для редактирования Проект 391552 теперь открывается по правильному пути!
10 KiB
10 KiB
Создание файлов в Nextcloud из CRM
Дата: 1 ноября 2025
Цель: Добавить возможность создания новых Office файлов в Nextcloud прямо из CRM
✅ Что сделано
1. Добавлена функция createFileInNextcloud() в JavaScript
Файл: layouts/v7/lib/nextcloud-editor.js
Что делает:
- Запрашивает имя файла у пользователя
- Формирует путь к папке записи
- Редиректит в Nextcloud для создания файла
- Nextcloud создаёт файл и открывает в OnlyOffice
2. Добавлены кнопки создания в 9 модулей
Модули с кнопками:
- ✅ Project (Проекты)
- ✅ Contacts (Контакты)
- ✅ Accounts (Контрагенты)
- ✅ Potentials (Сделки)
- ✅ Leads (Лиды)
- ✅ HelpDesk (Тикеты)
- ✅ Invoice (Счета)
- ✅ Quotes (Коммерческие предложения)
- ✅ SalesOrder (Заказы на продажу)
- ✅ PurchaseOrder (Заказы на закупку)
3. Расположение кнопок
Рядом с кнопкой "Папка в Nextcloud":
[📁 Папка в Nextcloud] [📄] [📊] [📽️]
↑ ↑ ↑
Word Excel PPT
Иконки:
- 📄 fa-file-word-o (синяя) - создать .docx
- 📊 fa-file-excel-o (зелёная) - создать .xlsx
- 📽️ fa-file-powerpoint-o (красная) - создать .pptx
🔄 Как работает
Шаг 1: Пользователь нажимает иконку (например, 📄 Word)
createFileInNextcloud('Project', '12345', 'Договор_с_клиентом', 'docx')
Шаг 2: Появляется диалог
Введите название файла (без расширения):
[Документ_2025-11-01 ] [OK] [Отмена]
Шаг 3: Скрипт формирует путь
Module: Project
Record ID: 12345
Record Name: Договор_с_клиентом
File Name: Документ_2025-11-01
File Type: docx
Nextcloud Path:
/crm/crm2/CRM_Active_Files/Documents/Project/Договор_с_клиентом_12345/Документ_2025-11-01.docx
Шаг 4: Редирект в Nextcloud
https://office.clientright.ru:8443/apps/files/?
dir=/crm/crm2/CRM_Active_Files/Documents/Project/Договор_с_клиентом_12345
&openfile=Документ_2025-11-01.docx
&filetype=docx
Шаг 5: Nextcloud создаёт файл
Nextcloud обнаруживает параметр openfile
↓
Создаёт пустой .docx файл
↓
Открывает в OnlyOffice для редактирования
↓
Пользователь начинает работу! ✅
🎨 Внешний вид
В детальном виде записи (под названием):
┌─────────────────────────────────────┐
│ 🏢 Контрагент: ООО "Ромашка" │
│ ИНН: 1234567890 │
├─────────────────────────────────────┤
│ [📁 Папка в Nextcloud] [📄] [📊] [📽️] │
└─────────────────────────────────────┘
📂 Куда сохраняются файлы
Структура папок по модулям:
/crm/crm2/CRM_Active_Files/Documents/
├── Project/
│ └── Название_проекта_ID/
│ └── Новый_файл.docx ← Создаётся здесь
├── Contacts/
│ └── Имя_Фамилия_ID/
│ └── Новый_файл.xlsx
├── Accounts/
│ └── Название_компании_ID/
│ └── Новый_файл.pptx
├── Invoice/
│ └── Invoice_номер_ID/
│ └── Новый_файл.docx
└── ... и т.д.
Логика:
- Каждая запись → своя папка
- Имя папки =
{RecordName}_{RecordID} - Файлы автоматически привязываются к папке записи
🧪 Как протестировать
Шаг 1: Обнови страницу CRM
Ctrl+F5
Шаг 2: Открой любую запись
Например:
- Проект → откроетсякарточка
- Контакт → откроется карточка
- Контрагент → откроется карточка
Шаг 3: Найди кнопки под названием
[📁 Папка в Nextcloud] [📄] [📊] [📽️]
Шаг 4: Нажми на иконку (например, 📄 Word)
1. Появится диалог с именем файла
2. Введи название (или оставь по умолчанию)
3. Нажми OK
4. Откроется Nextcloud → файл создастся → откроется OnlyOffice! ✅
🎯 Примеры использования
Пример 1: Создание договора для проекта
1. Открой проект "Разработка сайта"
2. Нажми иконку 📄 (Word)
3. Введи: "Договор_на_разработку"
4. Файл создастся в:
/Documents/Project/Разработка_сайта_12345/Договор_на_разработку.docx
5. Откроется OnlyOffice для редактирования
6. Заполни договор
7. Автосохранение → файл в Nextcloud + версия!
Пример 2: Создание таблицы для контакта
1. Открой контакт "Иванов Иван"
2. Нажми иконку 📊 (Excel)
3. Введи: "Расчёт_стоимости"
4. Файл создастся в:
/Documents/Contacts/Иван_Иванов_67890/Расчёт_стоимости.xlsx
5. Заполни таблицу в OnlyOffice
Пример 3: Создание презентации для сделки
1. Открой сделку "Поставка оборудования"
2. Нажми иконку 📽️ (PowerPoint)
3. Введи: "Презентация_продукта"
4. Файл создастся в:
/Documents/Potentials/Поставка_оборудования_11111/Презентация_продукта.pptx
5. Создай презентацию в OnlyOffice
📊 Где видны кнопки
| Модуль | Где кнопки | Иконки |
|---|---|---|
| Project | Детальный вид | 📁 📄 📊 📽️ |
| Contacts | Детальный вид | 📁 📄 📊 📽️ |
| Accounts | Детальный вид | 📁 📄 📊 📽️ |
| Potentials | Детальный вид | 📁 📄 📊 📽️ |
| Leads | Детальный вид | 📁 📄 📊 📽️ |
| HelpDesk | Детальный вид | 📁 📄 📊 📽️ |
| Invoice | Детальный вид | 📁 📄 📊 📽️ |
| Quotes | Детальный вид | 📁 📄 📊 📽️ |
| SalesOrder | Детальный вид | 📁 📄 📊 📽️ |
| PurchaseOrder | Детальный вид | 📁 📄 📊 📽️ |
🔧 Технические детали
Файлы:
1. JavaScript функция:
// layouts/v7/lib/nextcloud-editor.js
function createFileInNextcloud(module, recordId, recordName, fileType) {
// Запрашивает имя файла
// Вызывает create_nextcloud_file.php
// Открывает в новом окне
}
2. PHP скрипт:
// crm_extensions/file_storage/api/create_nextcloud_file.php
// Формирует путь к файлу в Nextcloud
// Редиректит в Nextcloud Files UI
// Nextcloud создаёт файл и открывает редактор
3. Шаблоны (10 файлов):
layouts/v7/modules/*/DetailViewHeaderTitle.tpl
🐛 Если не работает
Проблема 1: Кнопки не появились
# Очистить кеш Smarty
rm -rf /var/www/fastuser/data/www/crm.clientright.ru/test/templates_c/v7/*
# Обновить страницу CRM
Ctrl+F5
Проблема 2: Файл не создаётся
- Проверь что папка записи существует в Nextcloud
- Проверь права доступа
- Посмотри логи: tail -f /var/log/apache2/error.log | grep "CREATE NEXTCLOUD FILE"
Проблема 3: OnlyOffice не открывается
- Проверь что OnlyOffice приложение включено в Nextcloud
- docker exec -u www-data nextcloud-fresh php occ app:list | grep onlyoffice
🎯 Итог
Что работает:
-
✅ Редактирование через CRM
- ⚡ Прямой OnlyOffice (1-2 сек)
- 📚 Через Nextcloud (3-5 сек, с версиями)
-
✅ Создание новых файлов
- 📄 Word (.docx)
- 📊 Excel (.xlsx)
- 📽️ PowerPoint (.pptx)
- Прямо из карточки записи!
- Автоматическое сохранение в правильную папку!
-
✅ Версионирование
- Файлы созданные через Nextcloud имеют историю
- Можно откатить изменения
- Можно посмотреть кто и когда редактировал
Изменённые файлы (всего 11):
- ✅
layouts/v7/lib/nextcloud-editor.js - ✅ 10 шаблонов DetailViewHeaderTitle.tpl
Созданные файлы:
- ✅
crm_extensions/file_storage/api/create_nextcloud_file.php
Обнови страницу CRM (Ctrl+F5) и попробуй создать файл! 🚀
Нажми на любую иконку (📄 📊 📽️) и увидишь магию! ✨