🔧 Исправления: - Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
9.9 KiB
Добавление второй кнопки редактирования в CRM
Дата: 1 ноября 2025
Цель: Добавить возможность выбора метода редактирования файлов в CRM
✅ Что сделано
1. Добавлена функция openViaNextcloud() в JavaScript
Файл: layouts/v7/lib/nextcloud-editor.js
Код:
/**
* Открытие файла через 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
Было:
<i title="Редактировать в Nextcloud" class="fa fa-cloud"></i>
Стало:
<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
Было:
<button class="btn btn-info" onclick="editInNextcloud(...)">
<i class="fa fa-cloud"></i> Nextcloud
</button>
Стало:
<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
Было:
<a onclick="editInNextcloud(...)">
<i title="Редактировать в Nextcloud" class="fa fa-cloud"></i>
</a>
Стало:
<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: Кнопки не появились
Решение:
# Очистить кеш Smarty снова
rm -rf /var/www/fastuser/data/www/crm.clientright.ru/test/templates_c/v7/*
# Обновить страницу CRM
Ctrl+F5
Проблема 2: Ошибка "openViaNextcloud is not defined"
Решение:
# Проверить что JS файл загружен
# В консоли браузера (F12):
typeof openViaNextcloud
// Должно быть: "function"
# Если "undefined" - проверить что nextcloud-editor.js подключён
Проблема 3: Файл не открывается через Nextcloud
Решение:
# Проверить что файл проиндексирован
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"
📊 Итоговая статистика
Изменённые файлы:
- ✅
layouts/v7/lib/nextcloud-editor.js- добавлена функция - ✅
layouts/v7/modules/Documents/DocumentsRelatedList.tpl- иконки - ✅
layouts/v7/modules/Documents/DetailViewActions.tpl- кнопки - ✅
layouts/v7/modules/Vtiger/DocumentsSummaryWidgetContents.tpl- иконки
Новые файлы:
- ✅
crm_extensions/file_storage/api/nextcloud_open.php- скрипт открытия - ✅
crm_extensions/file_storage/api/test_compare.php- тестовая страница
🎯 Итог
Теперь в CRM есть ДВЕ кнопки:
- ⚡ Быстро - OnlyOffice напрямую (1-2 сек)
- ☁️ Nextcloud - через Nextcloud (3-5 сек, с версиями)
Можешь сравнить и выбрать! 🚀
Обнови страницу CRM и попробуй обе кнопки!