Files
crm.clientright.ru/ДОБАВЛЕНИЕ_ВТОРОЙ_КНОПКИ_В_CRM.md
Fedor 7e3f0dcede Исправление путей к папкам проектов в 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 теперь открывается по правильному пути!
2025-11-01 12:22:12 +03:00

337 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Добавление второй кнопки редактирования в 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 и попробуй обе кнопки!**