Files
crm.clientright.ru/NEXTCLOUD_EDIT_BUTTON_IMPLEMENTATION.md
Fedor 75d3f7942b feat: Обновлены все URL Nextcloud с office.klientprav.tech на office.clientright.ru
Обновленные файлы:
- crm_extensions/nextcloud_api.php (2 места)
- modules/Documents/actions/NcPrepareEdit.php
- crm_extensions/nextcloud_editor/js/nextcloud-editor.js
- crm_extensions/file_storage/api/get_edit_urls.php
- crm_extensions/file_storage/api/simple_edit.php
- crm_extensions/README.md
- NEXTCLOUD_EDIT_BUTTON_IMPLEMENTATION.md
- crm_extensions/docs/NEXTCLOUD_EDITOR.md
- test_syntax_check.html
- crm_extensions/tests/test_edit_button.html

Все ссылки теперь указывают на новый сервер office.clientright.ru
Backup файлы и тестовые директории не изменены
2025-10-20 17:17:34 +03:00

123 lines
5.6 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.

# 📝 РЕАЛИЗАЦИЯ КНОПКИ "РЕДАКТИРОВАТЬ В 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')}
&nbsp;&nbsp;<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.clientright.ru';
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
---
*Реализация завершена и готова к тестированию*