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

139 lines
5.8 KiB
Markdown
Raw Permalink 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" не работали
## ❌ ПРОБЛЕМА:
В модулях 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()`
```javascript
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()`
```javascript
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()`
```javascript
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
```bash
rm -rf test/templates_c/v7/*.php
```
## 📋 ПРОВЕРКА:
### Функции в JS:
```bash
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