Files
crm.clientright.ru/ДОБАВЛЕНИЕ_ВТОРОЙ_КНОПКИ_В_CRM.md
Fedor 7e3f0dcede Исправление путей к папкам проектов в Nextcloud + создание файлов из CRM
🔧 Исправления:
- Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
2025-11-01 12:22:12 +03:00

9.9 KiB
Raw Blame History

Добавление второй кнопки редактирования в CRM

Дата: 1 ноября 2025
Цель: Добавить возможность выбора метода редактирования файлов в CRM


Что сделано

1. Добавлена функция openViaNextcloud() в JavaScript

Файл: layouts/v7/lib/nextcloud-editor.js

Код:

/**
 * Открытие файла через Nextcloud Files UI (с версионированием)
 */
function openViaNextcloud(recordId, fileName) {
    console.log('📚 Opening via Nextcloud Files UI:', recordId, fileName);
    
    // Открываем через nextcloud_open.php (PROPFIND → Nextcloud UI)
    const redirectUrl = `/crm_extensions/file_storage/api/nextcloud_open.php?recordId=${recordId}&fileName=${encodeURIComponent(fileName)}&v=${Date.now()}`;
    
    const win = window.open(redirectUrl, 'nextcloud_files_' + Date.now(), 'width=1400,height=900,scrollbars=yes,resizable=yes');
    
    if (!win) {
        alert('❌ Не удалось открыть Nextcloud. Проверьте блокировку всплывающих окон.');
    }
}

2. Добавлены кнопки в 3 местах CRM

Файл: layouts/v7/modules/Documents/DocumentsRelatedList.tpl
Строка: 179-180

Было:

<i title="Редактировать в Nextcloud" class="fa fa-cloud"></i>

Стало:

<a href="javascript:void(0)" onclick="editInNextcloud(...)">
    <i title="⚡ Редактировать (быстро, OnlyOffice напрямую)" class="fa fa-bolt" style="color: #ff6b35;"></i>
</a>&nbsp;&nbsp;
<a href="javascript:void(0)" onclick="openViaNextcloud(...)">
    <i title="📚 Через Nextcloud (с версионированием)" class="fa fa-cloud" style="color: #007cba;"></i>
</a>

Место 2: Detail View Actions (детальный вид документа)

Файл: layouts/v7/modules/Documents/DetailViewActions.tpl
Строка: 63-68

Было:

<button class="btn btn-info" onclick="editInNextcloud(...)">
    <i class="fa fa-cloud"></i> Nextcloud
</button>

Стало:

<button class="btn btn-danger" onclick="editInNextcloud(...)">
    <i class="fa fa-bolt"></i> Быстро
</button>
<button class="btn btn-info" onclick="openViaNextcloud(...)">
    <i class="fa fa-cloud"></i> Nextcloud
</button>

Место 3: Summary Widget (виджет документов)

Файл: layouts/v7/modules/Vtiger/DocumentsSummaryWidgetContents.tpl
Строка: 73-78

Было:

<a onclick="editInNextcloud(...)">
    <i title="Редактировать в Nextcloud" class="fa fa-cloud"></i>
</a>

Стало:

<a onclick="editInNextcloud(...)">
    <i title="⚡ Редактировать (быстро, OnlyOffice напрямую)" class="fa fa-bolt" style="color: #ff6b35;"></i>
</a>&nbsp;
<a onclick="openViaNextcloud(...)">
    <i title="📚 Через Nextcloud (с версионированием)" class="fa fa-cloud" style="color: #007cba;"></i>
</a>

🎨 Иконки и цвета

Первая кнопка (Быстро):

  • Иконка: fa-bolt (молния)
  • Цвет: #ff6b35 (оранжевый)
  • Класс кнопки: btn-danger (красная)
  • Функция: editInNextcloud()open_file_v2.php

📚 Вторая кнопка (Nextcloud):

  • Иконка: fa-cloud (облако)
  • Цвет: #007cba (синий)
  • Класс кнопки: btn-info (синяя)
  • Функция: openViaNextcloud()nextcloud_open.php

🔄 Схемы работы

Кнопка 1: Быстро (editInNextcloud)

Клик на ⚡
    ↓
editInNextcloud(recordId, fileName)
    ↓
open_file_v2.php
    ↓
OnlyOffice напрямую
    ↓
Загрузка файла из S3 (прямая)
    ↓
Редактирование
    ↓
Автосохранение в S3
    ↓
Изменения в CRM ✅

Скорость: 1-2 секунды


Кнопка 2: 📚 Nextcloud (openViaNextcloud)

Клик на 📚
    ↓
openViaNextcloud(recordId, fileName)
    ↓
nextcloud_open.php
    ↓
PROPFIND к Nextcloud WebDAV → получает fileId
    ↓
Редирект на Nextcloud Files UI
    ↓
Nextcloud открывает OnlyOffice
    ↓
Загрузка файла через WebDAV (Nextcloud → S3)
    ↓
Редактирование
    ↓
Автосохранение через Nextcloud
    ↓
История версий сохраняется
    ↓
Изменения в CRM + версия в Nextcloud ✅

Скорость: 3-5 секунд 🐌


📍 Где видны кнопки

Любой модуль (Project, Case, Contact и т.д.)
    → Вкладка "Документы"
        → В списке документов справа от каждого файла:
           [👁] [⬇] [⚡] [☁️] [🗑]

2. Detail View (Детальный вид документа)

Модуль Documents → Открыть документ
    → Сверху кнопки:
       [⚡ Быстро] [☁️ Nextcloud] [⬇ Скачать] [🗑 Удалить]

3. Summary Widget (Виджет документов)

Любая карточка (Project, Case и т.д.)
    → Виджет "Документы" справа
        → Под каждым документом:
           [⚡] [☁️] [🗑]

🧪 Как протестировать

Шаг 1: Обнови страницу CRM

Ctrl+F5 или Shift+F5

Почему: Кеш Smarty шаблонов очищен, нужно перезагрузить страницу.


Шаг 2: Открой любой модуль с документами

Например:
- Проект → вкладка "Документы"
- Контакт → вкладка "Документы"
- Дело → вкладка "Документы"

Шаг 3: Найди файл в списке

Увидишь ДВЕ иконки рядом:

  • Молния (оранжевая) - быстро
  • ☁️ Облако (синяя) - через Nextcloud

Шаг 4: Сравни скорость

Тест 1: Нажми на (молнию)

  • Должно открыться за 1-2 секунды
  • OnlyOffice напрямую
  • Автосохранение работает

Тест 2: Нажми на ☁️ (облако)

  • Должно открыться за 3-5 секунд
  • Откроется Nextcloud Files UI
  • OnlyOffice через Nextcloud
  • История версий сохраняется

🎯 Преимущества каждого метода

Быстро (editInNextcloud):

Когда использовать:

  • Обычная работа
  • Быстрое редактирование
  • Черновики
  • Не критичные документы

Примеры:

  • Редактирование счёта
  • Правка письма
  • Заполнение шаблона

📚 Nextcloud (openViaNextcloud):

Когда использовать:

  • Важные документы
  • Договоры и акты
  • Совместная работа
  • Нужна история версий

Примеры:

  • Договор с клиентом
  • Акт выполненных работ
  • Документ для согласования
  • Официальные письма

🔧 Если не работает

Проблема 1: Кнопки не появились

Решение:

# Очистить кеш Smarty снова
rm -rf /var/www/fastuser/data/www/crm.clientright.ru/test/templates_c/v7/*

# Обновить страницу CRM
Ctrl+F5

Проблема 2: Ошибка "openViaNextcloud is not defined"

Решение:

# Проверить что JS файл загружен
# В консоли браузера (F12):
typeof openViaNextcloud
// Должно быть: "function"

# Если "undefined" - проверить что nextcloud-editor.js подключён

Проблема 3: Файл не открывается через Nextcloud

Решение:

# Проверить что файл проиндексирован
docker exec nextcloud-db-fresh mariadb -u nextcloud -pnextcloud_password nextcloud \
  -e "SELECT fileid, path FROM oc_filecache WHERE path LIKE '%названиеайла%';"

# Если файла нет - запустить сканирование
docker exec -u www-data nextcloud-fresh php occ files:scan admin --path="/admin/files/crm"

📊 Итоговая статистика

Изменённые файлы:

  1. layouts/v7/lib/nextcloud-editor.js - добавлена функция
  2. layouts/v7/modules/Documents/DocumentsRelatedList.tpl - иконки
  3. layouts/v7/modules/Documents/DetailViewActions.tpl - кнопки
  4. layouts/v7/modules/Vtiger/DocumentsSummaryWidgetContents.tpl - иконки

Новые файлы:

  1. crm_extensions/file_storage/api/nextcloud_open.php - скрипт открытия
  2. crm_extensions/file_storage/api/test_compare.php - тестовая страница

🎯 Итог

Теперь в CRM есть ДВЕ кнопки:

  • Быстро - OnlyOffice напрямую (1-2 сек)
  • ☁️ Nextcloud - через Nextcloud (3-5 сек, с версиями)

Можешь сравнить и выбрать! 🚀


Обнови страницу CRM и попробуй обе кнопки!