Исправление путей к папкам проектов в 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,336 @@
# Добавление второй кнопки редактирования в CRM
**Дата:** 1 ноября 2025
**Цель:** Добавить возможность выбора метода редактирования файлов в CRM
---
## ✅ Что сделано
### 1. Добавлена функция `openViaNextcloud()` в JavaScript
**Файл:** `layouts/v7/lib/nextcloud-editor.js`
**Код:**
```javascript
/**
* Открытие файла через Nextcloud Files UI (с версионированием)
*/
function openViaNextcloud(recordId, fileName) {
console.log('📚 Opening via Nextcloud Files UI:', recordId, fileName);
// Открываем через nextcloud_open.php (PROPFIND → Nextcloud UI)
const redirectUrl = `/crm_extensions/file_storage/api/nextcloud_open.php?recordId=${recordId}&fileName=${encodeURIComponent(fileName)}&v=${Date.now()}`;
const win = window.open(redirectUrl, 'nextcloud_files_' + Date.now(), 'width=1400,height=900,scrollbars=yes,resizable=yes');
if (!win) {
alert('❌ Не удалось открыть Nextcloud. Проверьте блокировку всплывающих окон.');
}
}
```
---
### 2. Добавлены кнопки в 3 местах CRM
#### Место 1: Related List (связанные документы)
**Файл:** `layouts/v7/modules/Documents/DocumentsRelatedList.tpl`
**Строка:** 179-180
**Было:**
```html
<i title="Редактировать в Nextcloud" class="fa fa-cloud"></i>
```
**Стало:**
```html
<a href="javascript:void(0)" onclick="editInNextcloud(...)">
<i title="⚡ Редактировать (быстро, OnlyOffice напрямую)" class="fa fa-bolt" style="color: #ff6b35;"></i>
</a>&nbsp;&nbsp;
<a href="javascript:void(0)" onclick="openViaNextcloud(...)">
<i title="📚 Через Nextcloud (с версионированием)" class="fa fa-cloud" style="color: #007cba;"></i>
</a>
```
---
#### Место 2: Detail View Actions (детальный вид документа)
**Файл:** `layouts/v7/modules/Documents/DetailViewActions.tpl`
**Строка:** 63-68
**Было:**
```html
<button class="btn btn-info" onclick="editInNextcloud(...)">
<i class="fa fa-cloud"></i> Nextcloud
</button>
```
**Стало:**
```html
<button class="btn btn-danger" onclick="editInNextcloud(...)">
<i class="fa fa-bolt"></i> Быстро
</button>
<button class="btn btn-info" onclick="openViaNextcloud(...)">
<i class="fa fa-cloud"></i> Nextcloud
</button>
```
---
#### Место 3: Summary Widget (виджет документов)
**Файл:** `layouts/v7/modules/Vtiger/DocumentsSummaryWidgetContents.tpl`
**Строка:** 73-78
**Было:**
```html
<a onclick="editInNextcloud(...)">
<i title="Редактировать в Nextcloud" class="fa fa-cloud"></i>
</a>
```
**Стало:**
```html
<a onclick="editInNextcloud(...)">
<i title="⚡ Редактировать (быстро, OnlyOffice напрямую)" class="fa fa-bolt" style="color: #ff6b35;"></i>
</a>&nbsp;
<a onclick="openViaNextcloud(...)">
<i title="📚 Через Nextcloud (с версионированием)" class="fa fa-cloud" style="color: #007cba;"></i>
</a>
```
---
## 🎨 Иконки и цвета
### ⚡ Первая кнопка (Быстро):
- **Иконка:** `fa-bolt` (молния)
- **Цвет:** `#ff6b35` (оранжевый)
- **Класс кнопки:** `btn-danger` (красная)
- **Функция:** `editInNextcloud()``open_file_v2.php`
### 📚 Вторая кнопка (Nextcloud):
- **Иконка:** `fa-cloud` (облако)
- **Цвет:** `#007cba` (синий)
- **Класс кнопки:** `btn-info` (синяя)
- **Функция:** `openViaNextcloud()``nextcloud_open.php`
---
## 🔄 Схемы работы
### Кнопка 1: ⚡ Быстро (editInNextcloud)
```
Клик на ⚡
editInNextcloud(recordId, fileName)
open_file_v2.php
OnlyOffice напрямую
Загрузка файла из S3 (прямая)
Редактирование
Автосохранение в S3
Изменения в CRM ✅
```
**Скорость:** 1-2 секунды ⚡
---
### Кнопка 2: 📚 Nextcloud (openViaNextcloud)
```
Клик на 📚
openViaNextcloud(recordId, fileName)
nextcloud_open.php
PROPFIND к Nextcloud WebDAV → получает fileId
Редирект на Nextcloud Files UI
Nextcloud открывает OnlyOffice
Загрузка файла через WebDAV (Nextcloud → S3)
Редактирование
Автосохранение через Nextcloud
История версий сохраняется
Изменения в CRM + версия в Nextcloud ✅
```
**Скорость:** 3-5 секунд 🐌
---
## 📍 Где видны кнопки
### 1. **Related List (Связанные документы)**
```
Любой модуль (Project, Case, Contact и т.д.)
→ Вкладка "Документы"
В списке документов справа от каждого файла:
[👁] [⬇] [⚡] [☁️] [🗑]
```
### 2. **Detail View (Детальный вид документа)**
```
Модуль Documents → Открыть документ
→ Сверху кнопки:
[⚡ Быстро] [☁️ Nextcloud] [⬇ Скачать] [🗑 Удалить]
```
### 3. **Summary Widget (Виджет документов)**
```
Любая карточка (Project, Case и т.д.)
→ Виджет "Документы" справа
→ Под каждым документом:
[⚡] [☁️] [🗑]
```
---
## 🧪 Как протестировать
### Шаг 1: Обнови страницу CRM
```
Ctrl+F5 или Shift+F5
```
**Почему:** Кеш Smarty шаблонов очищен, нужно перезагрузить страницу.
---
### Шаг 2: Открой любой модуль с документами
```
Например:
- Проект → вкладка "Документы"
- Контакт → вкладка "Документы"
- Дело → вкладка "Документы"
```
---
### Шаг 3: Найди файл в списке
Увидишь **ДВЕ иконки** рядом:
-**Молния** (оранжевая) - быстро
- ☁️ **Облако** (синяя) - через Nextcloud
---
### Шаг 4: Сравни скорость
**Тест 1:** Нажми на ⚡ (молнию)
- Должно открыться за 1-2 секунды
- OnlyOffice напрямую
- Автосохранение работает
**Тест 2:** Нажми на ☁️ (облако)
- Должно открыться за 3-5 секунд
- Откроется Nextcloud Files UI
- OnlyOffice через Nextcloud
- История версий сохраняется
---
## 🎯 Преимущества каждого метода
### ⚡ Быстро (editInNextcloud):
**Когда использовать:**
- Обычная работа
- Быстрое редактирование
- Черновики
- Не критичные документы
**Примеры:**
- Редактирование счёта
- Правка письма
- Заполнение шаблона
---
### 📚 Nextcloud (openViaNextcloud):
**Когда использовать:**
- Важные документы
- Договоры и акты
- Совместная работа
- Нужна история версий
**Примеры:**
- Договор с клиентом
- Акт выполненных работ
- Документ для согласования
- Официальные письма
---
## 🔧 Если не работает
### Проблема 1: Кнопки не появились
**Решение:**
```bash
# Очистить кеш Smarty снова
rm -rf /var/www/fastuser/data/www/crm.clientright.ru/test/templates_c/v7/*
# Обновить страницу CRM
Ctrl+F5
```
### Проблема 2: Ошибка "openViaNextcloud is not defined"
**Решение:**
```bash
# Проверить что JS файл загружен
# В консоли браузера (F12):
typeof openViaNextcloud
// Должно быть: "function"
# Если "undefined" - проверить что nextcloud-editor.js подключён
```
### Проблема 3: Файл не открывается через Nextcloud
**Решение:**
```bash
# Проверить что файл проиндексирован
docker exec nextcloud-db-fresh mariadb -u nextcloud -pnextcloud_password nextcloud \
-e "SELECT fileid, path FROM oc_filecache WHERE path LIKE '%названиеайла%';"
# Если файла нет - запустить сканирование
docker exec -u www-data nextcloud-fresh php occ files:scan admin --path="/admin/files/crm"
```
---
## 📊 Итоговая статистика
### Изменённые файлы:
1.`layouts/v7/lib/nextcloud-editor.js` - добавлена функция
2.`layouts/v7/modules/Documents/DocumentsRelatedList.tpl` - иконки
3.`layouts/v7/modules/Documents/DetailViewActions.tpl` - кнопки
4.`layouts/v7/modules/Vtiger/DocumentsSummaryWidgetContents.tpl` - иконки
### Новые файлы:
1.`crm_extensions/file_storage/api/nextcloud_open.php` - скрипт открытия
2.`crm_extensions/file_storage/api/test_compare.php` - тестовая страница
---
## 🎯 Итог
**Теперь в CRM есть ДВЕ кнопки:**
-**Быстро** - OnlyOffice напрямую (1-2 сек)
- ☁️ **Nextcloud** - через Nextcloud (3-5 сек, с версиями)
**Можешь сравнить и выбрать!** 🚀
---
**Обнови страницу CRM и попробуй обе кнопки!**