/** * Nextcloud Editor Integration v2 - SIMPLIFIED VERSION * Использует vtiger Actions вместо прямых PHP вызовов */ console.log('🚀 Nextcloud Editor v2 integration loaded'); /** * Получение CSRF токена */ function getVtigerToken() { const name = window.csrfMagicName || '__vtrftk'; const token = window.csrfMagicToken || ''; return { name, token }; } /** * Проверка поддерживаемых типов файлов */ function isOfficeFile(fileName = '') { const ext = fileName.split('.').pop().toLowerCase(); return ['docx', 'xlsx', 'pptx'].includes(ext); } /** * Основная функция для открытия файла в Nextcloud */ async function openInNextcloud(recordId, fileName) { console.log('🎯 V2 Opening file in Nextcloud:', recordId, fileName); if (!isOfficeFile(fileName)) { console.warn('⚠️ File not editable:', fileName); alert('Файл ' + fileName + ' не поддерживается для редактирования. Поддерживаются: docx, xlsx, pptx'); return; } const { name, token } = getVtigerToken(); try { // Создаем FormData для POST запроса const formData = new FormData(); formData.append('record', recordId); formData.append('fileName', fileName); formData.append(name, token); console.log('📤 V2 Sending request to vtiger action...'); const response = await fetch('index.php?module=Documents&action=NcPrepareEdit', { method: 'POST', credentials: 'same-origin', body: formData }); console.log('📥 V2 Response received:', response.status); const json = await response.json().catch(() => ({ success: false, error: 'Ошибка разбора JSON ответа' })); console.log('📋 V2 JSON response:', json); if (!response.ok || !json.success) { throw new Error(json.error || 'HTTP ' + response.status); } // Получаем URL и перенаправляем пользователя const urls = json.data.urls; const recommendedUrl = urls.collabora_id || urls.onlyoffice_id; if (recommendedUrl) { console.log('🎯 V2 Redirecting to:', recommendedUrl); // ПРОСТО ПЕРЕНАПРАВЛЯЕМ - никаких pop-up! window.location.href = recommendedUrl; console.log('✅ V2 Editor opened successfully'); } else { throw new Error('Не удалось получить URL для редактирования'); } } catch (error) { console.error('❌ V2 Error:', error); alert('❌ Ошибка: ' + error.message); } } /** * Глобальная функция для вызова из HTML */ window.openNextcloudEditor = function(recordId, fileName) { console.log('🚀 NEXTCLOUD EDITOR v2: Function called!', recordId, fileName); openInNextcloud(recordId, fileName); };