5.6 KiB
5.6 KiB
📝 РЕАЛИЗАЦИЯ КНОПКИ "РЕДАКТИРОВАТЬ В NEXTCLOUD"
Дата: $(date '+%Y-%m-%d %H:%M:%S')
Статус: ✅ РЕАЛИЗОВАНО
🎯 ЗАДАЧА
Добавить пиктограмму "Редактировать" рядом с каждым файлом в списке документов, чтобы можно было открыть редактирование прямо из списка, а не только из карточки документа.
🔧 РЕАЛИЗОВАННЫЕ ИЗМЕНЕНИЯ
1. layouts/v7/modules/Documents/DocumentsRelatedList.tpl
Добавлена кнопка редактирования в Nextcloud:
{* Кнопка редактирования в Nextcloud - показываем для всех файлов *}
{if $DOCUMENT_RECORD_MODEL->get('filename') && $DOCUMENT_RECORD_MODEL->get('filestatus')}
<a name="editInNextcloud" href="javascript:void(0)" onclick="editInNextcloud({$RECORD_ID}, '{$DOCUMENT_RECORD_MODEL->get('filename')|escape:'javascript'}')">
<i title="Редактировать в Nextcloud" class="fa fa-edit alignMiddle" style="color: #28a745;"></i>
</a>
{/if}
Местоположение: Строки 177-182, между кнопкой скачивания и удаления.
2. crm_extensions/nextcloud_api.php
Улучшена поддержка разных типов файлов:
// Определяем тип файла и путь
$baseUrl = 'https://office.klientprav.tech';
if ($fileInfo['filelocationtype'] === 'E' && $fileInfo['s3_key']) {
// Файл в S3 - используем nc_path
$ncPath = $fileInfo['nc_path'];
$fileId = getRealFileId($ncPath);
error_log("Nextcloud API: S3 file, Retrieved fileId=$fileId for path=$ncPath");
} else {
// Локальный файл - пока не поддерживается
throw new Exception('Локальные файлы пока не поддерживаются. Загрузите файл в S3 для редактирования в Nextcloud.');
}
🎨 ВИЗУАЛЬНЫЕ ОСОБЕННОСТИ
Кнопка редактирования:
- Иконка:
fa fa-edit(карандаш) - Цвет:
#28a745(зеленый) - Tooltip: "Редактировать в Nextcloud"
- Позиция: Между кнопками скачивания и удаления
Условия отображения:
- Показывается для всех файлов с
filenameиfilestatus - Работает для файлов в S3 (внешние файлы)
- Для локальных файлов показывает ошибку с предложением загрузить в S3
🔄 ЛОГИКА РАБОТЫ
1. Пользователь нажимает кнопку редактирования
- Вызывается
editInNextcloud(recordId, fileName) - Проверяется расширение файла (docx, xlsx, pptx)
2. Отправка запроса к API
GET crm_extensions/nextcloud_api.php?record={id}&fileName={name}- API получает информацию о файле из базы данных
3. Обработка ответа
- S3 файлы: Получает
fileIdчерез WebDAV, генерирует URL - Локальные файлы: Показывает ошибку с инструкцией
4. Открытие редактора
- Приоритет: Files Manager → Collabora → OnlyOffice
- Автоматическое перенаправление
- Fallback через 3 секунды, если не открылось
📁 ФАЙЛЫ РЕЗЕРВНЫХ КОПИЙ
layouts/v7/modules/Documents/DocumentsRelatedList.tpl.backup.YYYYMMDD_HHMMSS_WITH_NEXTCLOUD_EDITcrm_extensions/nextcloud_api.php.backup.YYYYMMDD_HHMMSS_WITH_LOCAL_SUPPORT
🧪 ТЕСТИРОВАНИЕ
Сценарии тестирования:
-
S3 файлы (должно работать):
- Открыть карточку проекта с документами
- Найти файл с S3 ссылкой
- Нажать зеленую кнопку редактирования
- Должен открыться Nextcloud с файлом
-
Локальные файлы (показывает ошибку):
- Найти локальный файл
- Нажать кнопку редактирования
- Должно появиться сообщение об ошибке
-
Неподдерживаемые расширения:
- Попробовать отредактировать .pdf, .txt и т.д.
- Должно появиться предупреждение
🔮 ПЛАНЫ НА БУДУЩЕЕ
Поддержка локальных файлов:
- Копирование локального файла в S3
- Обновление метаданных в CRM
- Открытие для редактирования в Nextcloud
Дополнительные улучшения:
- Кэширование
fileIdдля ускорения - Поддержка других типов файлов
- Интеграция с другими облачными хранилищами
📞 ПОДДЕРЖКА
Разработчик: AI Assistant
Пользователь: Фёдор
Система: Ubuntu 22.04, vTiger CRM + S3 + Nextcloud
Реализация завершена и готова к тестированию