Files
crm.clientright.ru/NEXTCLOUD_FOLDER_BUTTONS_FIX.md
Fedor cd90b0d58a feat: Добавлен инструмент генерации документов для AI Ассистента
- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
2025-11-12 19:46:06 +03:00

5.8 KiB
Raw Permalink Blame History

🔧 ИСПРАВЛЕНИЕ: Кнопки "Папка в Nextcloud" не работали

ПРОБЛЕМА:

В модулях CRM кнопка "Папка в Nextcloud" была неактивна и не реагировала на клики.

🔍 ПРИЧИНА:

В JavaScript файле crm_extensions/nextcloud_editor/js/nextcloud-editor.js отсутствовали функции, которые вызывались из шаблонов:

Было в JS:

  • openProjectFolder() — ТОЛЬКО ДЛЯ Project

Вызывалось из шаблонов, но НЕ СУЩЕСТВОВАЛО:

  • openRecordFolder() — для HelpDesk, Invoice, SalesOrder, PurchaseOrder, Leads, Quotes, Potentials
  • openAccountFolder() — для Accounts
  • openContactFolder() — для Contacts

РЕШЕНИЕ:

1. Добавлена универсальная функция openRecordFolder()

function openRecordFolder(moduleName, recordId, recordName) {
    // Нормализация имени (убираем кавычки, заменяем пробелы)
    if (recordName) {
        recordName = recordName.replace(/"/g, '_').replace(/\s+/g, '_');
    }
    
    // Формируем путь к папке
    const folderName = recordName ? `${recordName}_${recordId}` : `${moduleName.toLowerCase()}_${recordId}`;
    const encodedFolderName = encodeURIComponent(folderName);
    const nextcloudUrl = 'https://office.clientright.ru:8443';
    
    const folderUrl = `${nextcloudUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${moduleName}/${encodedFolderName}`;
    
    // Открываем в новом окне
    window.open(folderUrl, 'nextcloud_folder', 'width=1200,height=800,scrollbars=yes,resizable=yes');
}

Используется в модулях:

  • HelpDesk (тикеты)
  • Invoice (счета)
  • SalesOrder (заказы)
  • PurchaseOrder (закупки)
  • Leads (лиды)
  • Quotes (предложения)
  • Potentials (сделки)

2. Добавлена специализированная функция openAccountFolder()

function openAccountFolder(accountId, accountName) {
    // Нормализация имени контрагента
    if (accountName) {
        accountName = accountName.replace(/"/g, '_').replace(/\s+/g, '_');
    }
    
    const folderName = accountName ? `${accountName}_${accountId}` : `account_${accountId}`;
    const encodedFolderName = encodeURIComponent(folderName);
    
    const folderUrl = `https://office.clientright.ru:8443/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Accounts/${encodedFolderName}`;
    
    window.open(folderUrl, 'nextcloud_folder', 'width=1200,height=800,scrollbars=yes,resizable=yes');
}

Используется в модуле:

  • Accounts (контрагенты)

3. Добавлена специализированная функция openContactFolder()

function openContactFolder(contactId, firstName, lastName) {
    // Составление имени из firstName и lastName
    let contactName = '';
    if (firstName || lastName) {
        contactName = `${firstName || ''}_${lastName || ''}`.replace(/^_+|_+$/g, '');
        contactName = contactName.replace(/"/g, '_').replace(/\s+/g, '_');
    }
    
    const folderName = contactName ? `${contactName}_${contactId}` : `contact_${contactId}`;
    const encodedFolderName = encodeURIComponent(folderName);
    
    const folderUrl = `https://office.clientright.ru:8443/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Contacts/${encodedFolderName}`;
    
    window.open(folderUrl, 'nextcloud_folder', 'width=1200,height=800,scrollbars=yes,resizable=yes');
}

Используется в модуле:

  • Contacts (контакты)

4. Очищен кеш Smarty

rm -rf test/templates_c/v7/*.php

📋 ПРОВЕРКА:

Функции в JS:

grep -n "^function open.*Folder" crm_extensions/nextcloud_editor/js/nextcloud-editor.js

Результат:

9:function openRecordFolder(moduleName, recordId, recordName) {
37:function openProjectFolder(projectId, projectName) {
65:function openAccountFolder(accountId, accountName) {
87:function openContactFolder(contactId, firstName, lastName) {

ВСЕ 4 ФУНКЦИИ НА МЕСТЕ!

Где используются:

Модуль Функция Параметры
HelpDesk openRecordFolder() 'HelpDesk', recordId, ticket_no
Invoice openRecordFolder() 'Invoice', recordId, invoice_no
SalesOrder openRecordFolder() 'SalesOrder', recordId, salesorder_no
PurchaseOrder openRecordFolder() 'PurchaseOrder', recordId, purchaseorder_no
Leads openRecordFolder() 'Leads', recordId, firstname_lastname
Quotes openRecordFolder() 'Quotes', recordId, quote_no
Potentials openRecordFolder() 'Potentials', recordId, potentialname
Accounts openAccountFolder() accountId, accountname
Contacts openContactFolder() contactId, firstname, lastname
Project openProjectFolder() projectId, projectname

🎯 РЕЗУЛЬТАТ:

КНОПКИ "Папка в Nextcloud" ТЕПЕРЬ РАБОТАЮТ ВО ВСЕХ МОДУЛЯХ!

При клике на кнопку открывается новое окно с Nextcloud, где отображается папка соответствующей записи CRM.

📁 ИЗМЕНЕННЫЕ ФАЙЛЫ:

  • crm_extensions/nextcloud_editor/js/nextcloud-editor.js — добавлены 3 недостающие функции
  • test/templates_c/v7/*.php — очищен кеш (автоматически пересоздастся)

📅 ДАТА ИСПРАВЛЕНИЯ:

02.11.2025