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