🔧 Исправления: - Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
316 lines
10 KiB
Markdown
316 lines
10 KiB
Markdown
# Создание файлов в Nextcloud из CRM
|
||
|
||
**Дата:** 1 ноября 2025
|
||
**Цель:** Добавить возможность создания новых Office файлов в Nextcloud прямо из CRM
|
||
|
||
---
|
||
|
||
## ✅ Что сделано
|
||
|
||
### 1. Добавлена функция `createFileInNextcloud()` в JavaScript
|
||
|
||
**Файл:** `layouts/v7/lib/nextcloud-editor.js`
|
||
|
||
**Что делает:**
|
||
- Запрашивает имя файла у пользователя
|
||
- Формирует путь к папке записи
|
||
- Редиректит в Nextcloud для создания файла
|
||
- Nextcloud создаёт файл и открывает в OnlyOffice
|
||
|
||
---
|
||
|
||
### 2. Добавлены кнопки создания в 9 модулей
|
||
|
||
**Модули с кнопками:**
|
||
1. ✅ **Project** (Проекты)
|
||
2. ✅ **Contacts** (Контакты)
|
||
3. ✅ **Accounts** (Контрагенты)
|
||
4. ✅ **Potentials** (Сделки)
|
||
5. ✅ **Leads** (Лиды)
|
||
6. ✅ **HelpDesk** (Тикеты)
|
||
7. ✅ **Invoice** (Счета)
|
||
8. ✅ **Quotes** (Коммерческие предложения)
|
||
9. ✅ **SalesOrder** (Заказы на продажу)
|
||
10. ✅ **PurchaseOrder** (Заказы на закупку)
|
||
|
||
---
|
||
|
||
### 3. Расположение кнопок
|
||
|
||
**Рядом с кнопкой "Папка в Nextcloud":**
|
||
|
||
```
|
||
[📁 Папка в Nextcloud] [📄] [📊] [📽️]
|
||
↑ ↑ ↑
|
||
Word Excel PPT
|
||
```
|
||
|
||
**Иконки:**
|
||
- 📄 **fa-file-word-o** (синяя) - создать .docx
|
||
- 📊 **fa-file-excel-o** (зелёная) - создать .xlsx
|
||
- 📽️ **fa-file-powerpoint-o** (красная) - создать .pptx
|
||
|
||
---
|
||
|
||
## 🔄 Как работает
|
||
|
||
### Шаг 1: Пользователь нажимает иконку (например, 📄 Word)
|
||
```javascript
|
||
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 функция:**
|
||
```javascript
|
||
// layouts/v7/lib/nextcloud-editor.js
|
||
function createFileInNextcloud(module, recordId, recordName, fileType) {
|
||
// Запрашивает имя файла
|
||
// Вызывает create_nextcloud_file.php
|
||
// Открывает в новом окне
|
||
}
|
||
```
|
||
|
||
**2. PHP скрипт:**
|
||
```php
|
||
// crm_extensions/file_storage/api/create_nextcloud_file.php
|
||
// Формирует путь к файлу в Nextcloud
|
||
// Редиректит в Nextcloud Files UI
|
||
// Nextcloud создаёт файл и открывает редактор
|
||
```
|
||
|
||
**3. Шаблоны (10 файлов):**
|
||
```
|
||
layouts/v7/modules/*/DetailViewHeaderTitle.tpl
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 Если не работает
|
||
|
||
### Проблема 1: Кнопки не появились
|
||
```bash
|
||
# Очистить кеш 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
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 Итог
|
||
|
||
### Что работает:
|
||
1. ✅ **Редактирование через CRM**
|
||
- ⚡ Прямой OnlyOffice (1-2 сек)
|
||
- 📚 Через Nextcloud (3-5 сек, с версиями)
|
||
|
||
2. ✅ **Создание новых файлов**
|
||
- 📄 Word (.docx)
|
||
- 📊 Excel (.xlsx)
|
||
- 📽️ PowerPoint (.pptx)
|
||
- Прямо из карточки записи!
|
||
- Автоматическое сохранение в правильную папку!
|
||
|
||
3. ✅ **Версионирование**
|
||
- Файлы созданные через Nextcloud имеют историю
|
||
- Можно откатить изменения
|
||
- Можно посмотреть кто и когда редактировал
|
||
|
||
---
|
||
|
||
### Изменённые файлы (всего 11):
|
||
- ✅ `layouts/v7/lib/nextcloud-editor.js`
|
||
- ✅ 10 шаблонов DetailViewHeaderTitle.tpl
|
||
|
||
### Созданные файлы:
|
||
- ✅ `crm_extensions/file_storage/api/create_nextcloud_file.php`
|
||
|
||
---
|
||
|
||
**Обнови страницу CRM (Ctrl+F5) и попробуй создать файл!** 🚀
|
||
|
||
**Нажми на любую иконку (📄 📊 📽️) и увидишь магию!** ✨
|
||
|