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

94 lines
3.1 KiB
JavaScript
Raw Normal View History

/**
* 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);
};