123 lines
5.6 KiB
Markdown
123 lines
5.6 KiB
Markdown
# 📝 РЕАЛИЗАЦИЯ КНОПКИ "РЕДАКТИРОВАТЬ В NEXTCLOUD"
|
||
|
||
**Дата:** $(date '+%Y-%m-%d %H:%M:%S')
|
||
**Статус:** ✅ РЕАЛИЗОВАНО
|
||
|
||
## 🎯 ЗАДАЧА
|
||
|
||
Добавить пиктограмму "Редактировать" рядом с каждым файлом в списке документов, чтобы можно было открыть редактирование прямо из списка, а не только из карточки документа.
|
||
|
||
## 🔧 РЕАЛИЗОВАННЫЕ ИЗМЕНЕНИЯ
|
||
|
||
### 1. **layouts/v7/modules/Documents/DocumentsRelatedList.tpl**
|
||
|
||
**Добавлена кнопка редактирования в Nextcloud:**
|
||
|
||
```smarty
|
||
{* Кнопка редактирования в 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**
|
||
|
||
**Улучшена поддержка разных типов файлов:**
|
||
|
||
```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_EDIT`
|
||
- `crm_extensions/nextcloud_api.php.backup.YYYYMMDD_HHMMSS_WITH_LOCAL_SUPPORT`
|
||
|
||
## 🧪 ТЕСТИРОВАНИЕ
|
||
|
||
### Сценарии тестирования:
|
||
|
||
1. **S3 файлы (должно работать):**
|
||
- Открыть карточку проекта с документами
|
||
- Найти файл с S3 ссылкой
|
||
- Нажать зеленую кнопку редактирования
|
||
- Должен открыться Nextcloud с файлом
|
||
|
||
2. **Локальные файлы (показывает ошибку):**
|
||
- Найти локальный файл
|
||
- Нажать кнопку редактирования
|
||
- Должно появиться сообщение об ошибке
|
||
|
||
3. **Неподдерживаемые расширения:**
|
||
- Попробовать отредактировать .pdf, .txt и т.д.
|
||
- Должно появиться предупреждение
|
||
|
||
## 🔮 ПЛАНЫ НА БУДУЩЕЕ
|
||
|
||
### Поддержка локальных файлов:
|
||
1. Копирование локального файла в S3
|
||
2. Обновление метаданных в CRM
|
||
3. Открытие для редактирования в Nextcloud
|
||
|
||
### Дополнительные улучшения:
|
||
1. Кэширование `fileId` для ускорения
|
||
2. Поддержка других типов файлов
|
||
3. Интеграция с другими облачными хранилищами
|
||
|
||
## 📞 ПОДДЕРЖКА
|
||
|
||
**Разработчик:** AI Assistant
|
||
**Пользователь:** Фёдор
|
||
**Система:** Ubuntu 22.04, vTiger CRM + S3 + Nextcloud
|
||
|
||
---
|
||
*Реализация завершена и готова к тестированию*
|
||
|