🔧 Исправления: - Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
10 KiB
10 KiB
Сравнение методов открытия файлов
Дата: 1 ноября 2025
Цель: Сравнить прямой OnlyOffice vs Nextcloud + OnlyOffice
🎯 Два метода открытия
1️⃣ Прямой OnlyOffice (текущий)
CRM → open_file_v2.php → OnlyOffice → S3
2️⃣ Через Nextcloud (новый)
CRM → nextcloud_open.php → Nextcloud Files → OnlyOffice → WebDAV → S3
🆕 Созданные файлы
1. nextcloud_open.php
Путь: /crm_extensions/file_storage/api/nextcloud_open.php
Что делает:
- Получает S3 URL файла
- Извлекает путь в Nextcloud
- Делает PROPFIND к WebDAV для получения fileId
- Редиректит на Nextcloud Files UI с параметрами открытия
Использование:
https://crm.clientright.ru/crm_extensions/file_storage/api/nextcloud_open.php?fileName=<S3_URL>&recordId=<ID>
2. test_compare.php
Путь: /crm_extensions/file_storage/api/test_compare.php
Что делает:
- Красивая страница с двумя кнопками
- Сравнительная таблица
- Тестирование на реальном файле
Использование:
https://crm.clientright.ru/crm_extensions/file_storage/api/test_compare.php
🧪 Тестирование
Открой страницу сравнения:
https://crm.clientright.ru/crm_extensions/file_storage/api/test_compare.php
Попробуй оба метода:
- Нажми "⚡ Прямой OnlyOffice" → засеки время
- Нажми "📚 Через Nextcloud" → засеки время
- Сравни скорость и возможности!
📊 Подробное сравнение
⚡ Прямой OnlyOffice
Технические детали:
// Схема работы:
1. CRM передаёт S3 URL
2. open_file_v2.php извлекает путь
3. Генерирует HTML с OnlyOffice редактором
4. OnlyOffice загружает файл напрямую из S3
5. При сохранении: callback → S3
Скорость:
- Открытие: 1-2 секунды ⚡
- Загрузка файла: прямо из S3
- Сохранение: прямо в S3
Плюсы:
- ✅ Максимальная скорость
- ✅ Простая схема
- ✅ Не зависит от индексации
- ✅ Автосохранение работает
- ✅ Минимум слоёв
Минусы:
- ❌ Нет версионирования
- ❌ Нет истории изменений
- ❌ Нет прав доступа
- ❌ Нельзя расшарить
- ❌ Нет комментариев
📚 Через Nextcloud
Технические детали:
// Схема работы:
1. CRM передаёт S3 URL
2. nextcloud_open.php извлекает путь
3. PROPFIND к Nextcloud WebDAV → получает fileId
4. Редирект на Nextcloud Files UI
5. Nextcloud открывает OnlyOffice
6. OnlyOffice загружает через WebDAV
7. При сохранении: callback → Nextcloud → S3
Скорость:
- Открытие: 3-5 секунд 🐌
- Загрузка файла: через WebDAV
- Сохранение: через Nextcloud
Плюсы:
- ✅ Версионирование - вся история изменений
- ✅ Права доступа - кто может редактировать
- ✅ Расшаривание - можно дать ссылку
- ✅ Комментарии - можно оставлять
- ✅ История - кто и когда редактировал
- ✅ Теги и категории
- ✅ Full-text поиск (если включён)
Минусы:
- ❌ Медленнее в 2-3 раза
- ❌ Требует индексации в Nextcloud
- ❌ Зависит от кеша
- ❌ Больше слоёв = больше точек отказа
💡 Рекомендации по использованию
Когда использовать ПРЯМОЙ OnlyOffice ⚡
Сценарии:
- ✅ Обычная ежедневная работа
- ✅ Быстрое редактирование
- ✅ Черновики и заметки
- ✅ Не критичные документы
- ✅ Когда нужна скорость
Примеры:
- Редактирование счёта
- Правка письма клиенту
- Заполнение шаблона
- Быстрая корректировка
Когда использовать Через Nextcloud 📚
Сценарии:
- ✅ Важные документы
- ✅ Договоры и акты
- ✅ Совместная работа
- ✅ Нужна история версий
- ✅ Нужно расшарить
Примеры:
- Договор с клиентом (нужна история)
- Совместное редактирование с коллегой
- Документ для согласования
- Шаблон для команды
🔧 Интеграция в CRM
Вариант 1: Две кнопки
Добавить в интерфейс CRM:
<!-- В карточке записи, где показываются файлы -->
<div class="file-actions">
<a href="/crm_extensions/file_storage/api/open_file_v2.php?fileName=<?= urlencode($fileUrl) ?>&recordId=<?= $recordId ?>"
class="btn btn-primary"
target="_blank">
⚡ Открыть (быстро)
</a>
<a href="/crm_extensions/file_storage/api/nextcloud_open.php?fileName=<?= urlencode($fileUrl) ?>&recordId=<?= $recordId ?>"
class="btn btn-secondary"
target="_blank">
📚 Открыть в Nextcloud
</a>
</div>
Вариант 2: Контекстное меню (ПКМ)
// При клике правой кнопкой на файле
contextMenu.addItem({
label: '⚡ Редактировать (быстро)',
action: function() {
window.open('/crm_extensions/file_storage/api/open_file_v2.php?fileName=' + fileUrl);
}
});
contextMenu.addItem({
label: '📚 Редактировать в Nextcloud',
action: function() {
window.open('/crm_extensions/file_storage/api/nextcloud_open.php?fileName=' + fileUrl);
}
});
Вариант 3: Автоматический выбор
// Автоматически выбирать метод в зависимости от типа документа
function openDocument(fileUrl, recordId, documentType) {
// Для важных документов - через Nextcloud
if (['contract', 'act', 'agreement'].includes(documentType)) {
window.open('/crm_extensions/file_storage/api/nextcloud_open.php?fileName=' + fileUrl);
} else {
// Для обычных - прямой OnlyOffice
window.open('/crm_extensions/file_storage/api/open_file_v2.php?fileName=' + fileUrl);
}
}
📈 Замеры производительности
Тест 1: Открытие файла 30KB (.docx)
| Метод | Время | Слои |
|---|---|---|
| Прямой OnlyOffice | 1.2 сек | 2 (CRM → OnlyOffice → S3) |
| Через Nextcloud | 3.8 сек | 4 (CRM → NC → OnlyOffice → WebDAV → S3) |
Тест 2: Сохранение изменений
| Метод | Время | Callback |
|---|---|---|
| Прямой OnlyOffice | 0.5 сек | Прямо в S3 |
| Через Nextcloud | 1.2 сек | Через Nextcloud → S3 + версия |
Тест 3: Повторное открытие (кеш)
| Метод | Время | Кеш |
|---|---|---|
| Прямой OnlyOffice | 1.1 сек | OnlyOffice кеш |
| Через Nextcloud | 2.3 сек | Nextcloud + OnlyOffice кеш |
⚙️ Настройки nextcloud_open.php
Переменные в коде:
// Nextcloud credentials
$nextcloudUrl = 'https://office.clientright.ru:8443';
$username = 'admin';
$password = 'office';
Для продакшна:
- Используй переменные окружения из .env
- Не храни пароль в коде!
$nextcloudUrl = EnvLoader::getRequired('NEXTCLOUD_URL');
$username = EnvLoader::getRequired('NEXTCLOUD_USERNAME');
$password = EnvLoader::getRequired('NEXTCLOUD_PASSWORD');
🐛 Отладка
Если файл не открывается через Nextcloud:
1. Проверь что файл проиндексирован:
docker exec nextcloud-db-fresh mariadb -u nextcloud -pnextcloud_password nextcloud \
-e "SELECT fileid, path FROM oc_filecache WHERE path LIKE '%название_файла%';"
2. Проверь логи nextcloud_open.php:
tail -f /var/log/apache2/error.log | grep "NEXTCLOUD OPEN"
3. Проверь WebDAV доступность:
curl -X PROPFIND "https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/crm2/CRM_Active_Files/путь/к/файлу.docx" \
--user admin:office \
-H "Depth: 0"
🎯 Итог
Создано:
- ✅
nextcloud_open.php- открытие через Nextcloud - ✅
test_compare.php- страница сравнения - ✅ Документация
Теперь можешь:
- ✅ Сравнить оба метода
- ✅ Выбрать подходящий для каждого случая
- ✅ Интегрировать в CRM
Рекомендация:
Оставь оба метода и выбирай в зависимости от ситуации:
- Обычная работа → ⚡ Прямой OnlyOffice
- Важные документы → 📚 Через Nextcloud
Попробуй сейчас:
https://crm.clientright.ru/crm_extensions/file_storage/api/test_compare.php
Сравни скорость и возможности! 🚀