✨ Исправление путей к папкам проектов в 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 теперь открывается по правильному пути!
This commit is contained in:
@@ -22,8 +22,8 @@ function openProjectFolder(projectId, projectName) {
|
||||
const encodedFolderName = encodeURIComponent(folderName);
|
||||
const nextcloudUrl = 'https://office.clientright.ru:8443';
|
||||
|
||||
// URL для папки проекта в Nextcloud External Storage
|
||||
const folderUrl = `${nextcloudUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${encodedFolderName}`;
|
||||
// URL для папки проекта в Nextcloud External Storage (со структурой Project/)
|
||||
const folderUrl = `${nextcloudUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Project/${encodedFolderName}`;
|
||||
|
||||
console.log('🔗 Folder URL:', folderUrl);
|
||||
|
||||
@@ -446,6 +446,82 @@ function editInNextcloud(recordId, fileName) {
|
||||
return openNextcloudEditor(recordId, fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Открытие файла через 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()}`;
|
||||
|
||||
console.log('🎯 Opening via Nextcloud:', redirectUrl);
|
||||
|
||||
// Открываем в новом окне
|
||||
const win = window.open(redirectUrl, 'nextcloud_files_' + Date.now(), 'width=1400,height=900,scrollbars=yes,resizable=yes');
|
||||
|
||||
if (win) {
|
||||
console.log('✅ Nextcloud opened successfully');
|
||||
} else {
|
||||
console.log('❌ Failed to open window - popup blocked');
|
||||
alert('❌ Не удалось открыть Nextcloud. Проверьте блокировку всплывающих окон.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание нового файла в Nextcloud
|
||||
* @param {string} module - Модуль CRM (Project, Contacts, Accounts и т.д.)
|
||||
* @param {string} recordId - ID записи
|
||||
* @param {string} recordName - Название записи (для имени папки)
|
||||
* @param {string} fileType - Тип файла (docx, xlsx, pptx)
|
||||
*/
|
||||
function createFileInNextcloud(module, recordId, recordName, fileType) {
|
||||
console.log('🆕 Creating file in Nextcloud:', { module, recordId, recordName, fileType });
|
||||
|
||||
// Формируем имя файла по умолчанию
|
||||
const fileTypeNames = {
|
||||
'docx': 'Документ',
|
||||
'xlsx': 'Таблица',
|
||||
'pptx': 'Презентация'
|
||||
};
|
||||
|
||||
const defaultName = `${fileTypeNames[fileType]}_${new Date().toISOString().split('T')[0]}`;
|
||||
|
||||
// Запрашиваем имя файла у пользователя
|
||||
const fileName = prompt(`Введите название файла (без расширения):`, defaultName);
|
||||
|
||||
if (!fileName) {
|
||||
console.log('❌ File creation cancelled');
|
||||
return;
|
||||
}
|
||||
|
||||
// Показываем прогресс
|
||||
if (typeof app !== 'undefined' && app.helper && app.helper.showProgress) {
|
||||
app.helper.showProgress({
|
||||
message: 'Создание файла в Nextcloud...'
|
||||
});
|
||||
}
|
||||
|
||||
// Вызываем скрипт создания
|
||||
const createUrl = `/crm_extensions/file_storage/api/create_nextcloud_file.php?module=${module}&recordId=${recordId}&recordName=${encodeURIComponent(recordName)}&fileName=${encodeURIComponent(fileName)}&fileType=${fileType}`;
|
||||
|
||||
console.log('🎯 Creating file:', createUrl);
|
||||
|
||||
// Открываем в новом окне (скрипт создаст файл и откроет редактор)
|
||||
const win = window.open(createUrl, 'nextcloud_create_' + Date.now(), 'width=1400,height=900,scrollbars=yes,resizable=yes');
|
||||
|
||||
// Скрываем прогресс
|
||||
setTimeout(function() {
|
||||
if (typeof app !== 'undefined' && app.helper && app.helper.hideProgress) {
|
||||
app.helper.hideProgress();
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
if (!win) {
|
||||
alert('❌ Не удалось открыть Nextcloud. Проверьте блокировку всплывающих окон.');
|
||||
}
|
||||
}
|
||||
|
||||
// Автоматическое подключение при загрузке страницы
|
||||
$(document).ready(function() {
|
||||
console.log('Nextcloud Editor integration loaded');
|
||||
|
||||
Reference in New Issue
Block a user