🔧 Исправления: - Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
118 lines
4.3 KiB
Markdown
118 lines
4.3 KiB
Markdown
# Исправление открытия файлов из CRM
|
||
|
||
**Дата:** 31 октября 2025
|
||
**Проблема:** Файлы не открывались из CRM для редактирования в Nextcloud
|
||
|
||
## 🔍 Диагностика
|
||
|
||
### Проблема 1: 7,295 старых файлов в корне Documents
|
||
**Симптомы:** Папка Documents очень долго открывается
|
||
**Причина:** В корне папки Documents находилось 7,295 старых файлов/папок (структура до миграции)
|
||
|
||
```sql
|
||
SELECT
|
||
CASE
|
||
WHEN path LIKE '%Project/%' THEN 'В Project (OK)'
|
||
WHEN path LIKE '%Contacts/%' THEN 'В Contacts (OK)'
|
||
WHEN path LIKE '%Accounts/%' THEN 'В Accounts (OK)'
|
||
WHEN path LIKE '%HelpDesk/%' THEN 'В HelpDesk (OK)'
|
||
WHEN path LIKE '%Invoice/%' THEN 'В Invoice (OK)'
|
||
ELSE 'В корне Documents (ПЛОХО!)'
|
||
END as location,
|
||
COUNT(*) as count
|
||
FROM oc_filecache
|
||
WHERE storage = 4
|
||
AND path LIKE 'crm2/CRM_Active_Files/Documents/%'
|
||
GROUP BY location;
|
||
```
|
||
|
||
**Результат:**
|
||
- Project: 11,547 файлов ✅
|
||
- Contacts: 2,323 файлов ✅
|
||
- Accounts: 155 файлов ✅
|
||
- HelpDesk: 71 файлов ✅
|
||
- Invoice: 38 файлов ✅
|
||
- **В корне Documents: 7,295 файлов ❌**
|
||
|
||
**Решение:** Рекомендуется не открывать корень Documents, а работать напрямую с подпапками:
|
||
- `Documents/Project/`
|
||
- `Documents/Contacts/`
|
||
- `Documents/Accounts/`
|
||
|
||
---
|
||
|
||
### Проблема 2: Неправильный редирект в open_file_v2.php
|
||
**Симптомы:** Файлы не открывались из CRM после редиректа
|
||
**Причина:** URL содержал лишний параметр `dir=/`:
|
||
|
||
```php
|
||
// ❌ БЫЛО:
|
||
$redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?dir=/&editing=true&openfile=true';
|
||
|
||
// ✅ СТАЛО:
|
||
$redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?editing=true&openfile=true';
|
||
```
|
||
|
||
**Файл:** `/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php`
|
||
|
||
**Изменение:** Удалён параметр `dir=/` из редиректа
|
||
|
||
---
|
||
|
||
## ✅ Проверка работоспособности
|
||
|
||
### Тест скрипта локально:
|
||
```bash
|
||
php -r "
|
||
\$_GET['fileName'] = 'https://s3.twcstorage.ru/.../Исковое_заявление_(проект)_395695.docx';
|
||
\$_GET['recordId'] = '395695';
|
||
require '/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php';
|
||
"
|
||
```
|
||
|
||
**Результат:**
|
||
```
|
||
Nextcloud Editor: PROPFIND -> https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/...
|
||
Nextcloud Editor: HTTP код: 207
|
||
Nextcloud Editor: Получен fileId: 86323
|
||
Nextcloud Editor: Redirect to https://office.clientright.ru:8443/apps/files/files/86323?editing=true&openfile=true
|
||
```
|
||
|
||
✅ **Работает!**
|
||
|
||
### Тест редиректа:
|
||
```bash
|
||
curl -I "https://office.clientright.ru:8443/apps/files/files/86323?editing=true&openfile=true" --user admin:office
|
||
```
|
||
|
||
**Результат:** `HTTP/2 200` ✅
|
||
|
||
---
|
||
|
||
## 📋 Осталось сделать
|
||
|
||
### Опционально (не срочно):
|
||
1. **Очистить старые файлы из корня Documents** - переместить их в архив или удалить
|
||
2. **Настроить автоматическую очистку** при миграции файлов
|
||
3. **Скрыть корень Documents** в интерфейсе, если он не используется
|
||
|
||
### Текущее состояние:
|
||
- ✅ Файлы открываются из CRM
|
||
- ✅ Редактирование работает
|
||
- ✅ Collabora Online подключён
|
||
- ⚠️ Корень Documents открывается медленно (7,295 объектов)
|
||
- ✅ Подпапки открываются быстро
|
||
|
||
---
|
||
|
||
## 🎯 Итог
|
||
|
||
**Главное исправление:** Удалён лишний параметр `dir=/` из URL редиректа
|
||
|
||
**Файл изменён:**
|
||
- `/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php` (строка 102)
|
||
|
||
**Статус:** ✅ Работает
|
||
|
||
|