✨ Исправление путей к папкам проектов в 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:
336
ДОБАВЛЕНИЕ_ВТОРОЙ_КНОПКИ_В_CRM.md
Normal file
336
ДОБАВЛЕНИЕ_ВТОРОЙ_КНОПКИ_В_CRM.md
Normal 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>
|
||||
<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 и попробуй обе кнопки!**
|
||||
|
||||
Reference in New Issue
Block a user