139 lines
5.8 KiB
Markdown
139 lines
5.8 KiB
Markdown
|
|
# 🔧 ИСПРАВЛЕНИЕ: Кнопки "Папка в 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
|