Files
crm.clientright.ru/NEXTCLOUD_FOLDER_BUTTONS_FIX.md

139 lines
5.8 KiB
Markdown
Raw Normal View 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()`
```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