Исправление путей к папкам проектов в Nextcloud + создание файлов из CRM

🔧 Исправления:
- Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
This commit is contained in:
Fedor
2025-11-01 12:22:12 +03:00
parent 3a1635ec4d
commit 7e3f0dcede
117 changed files with 2520 additions and 2034 deletions

View File

@@ -0,0 +1,315 @@
# Создание файлов в 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) и попробуй создать файл!** 🚀
**Нажми на любую иконку (📄 📊 📽️) и увидишь магию!**