Files
crm.clientright.ru/NEXTCLOUD_EDIT_BUTTON_IMPLEMENTATION.md

5.6 KiB
Raw Blame History

📝 РЕАЛИЗАЦИЯ КНОПКИ "РЕДАКТИРОВАТЬ В 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')}
    &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

Улучшена поддержка разных типов файлов:

// Определяем тип файла и путь
$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


Реализация завершена и готова к тестированию