Files
crm.clientright.ru/crm_extensions/nextcloud_editor/js/nextcloud-editor-v2.js

94 lines
3.1 KiB
JavaScript
Raw 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 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);
};