🔧 Исправления: - Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
337 lines
9.9 KiB
Markdown
337 lines
9.9 KiB
Markdown
# Добавление второй кнопки редактирования в 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>
|
||
<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>
|
||
<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 и попробуй обе кнопки!**
|
||
|