Files
crm.clientright.ru/debug_nextcloud_button.html

186 lines
9.1 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🔍 Отладка кнопки Nextcloud</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" style="margin-top: 30px;">
<h1><i class="fa fa-bug"></i> Отладка интеграции Nextcloud</h1>
<div class="alert alert-info">
<strong>Цель:</strong> Проверить, работает ли кнопка "Редактировать" и JavaScript
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Тестовые кнопки</h3>
</div>
<div class="panel-body">
<p><strong>Тестовый файл:</strong> test-document.docx</p>
<p><strong>Record ID:</strong> 392936</p>
<div class="btn-group-vertical" style="width: 100%; margin-bottom: 20px;">
<button type="button" class="btn btn-primary" onclick="testFunction1()">
<i class="fa fa-test"></i> Тест 1: Простая функция
</button>
<button type="button" class="btn btn-success" onclick="testFunction2()">
<i class="fa fa-cog"></i> Тест 2: API вызов
</button>
<button type="button" class="btn btn-warning" onclick="openNextcloudEditor('392936', 'test-document.docx')">
<i class="fa fa-edit"></i> Тест 3: Оригинальная функция
</button>
<button type="button" class="btn btn-info" onclick="testDirectAPI()">
<i class="fa fa-rocket"></i> Тест 4: Прямой API вызов
</button>
</div>
<h4>Лог событий:</h4>
<div id="debugLog" style="background: #f5f5f5; padding: 15px; border: 1px solid #ddd; min-height: 200px; font-family: monospace; font-size: 12px; overflow-y: auto;">
<div class="text-muted">Лог будет появляться здесь...</div>
</div>
<div style="margin-top: 15px;">
<button class="btn btn-default" onclick="clearLog()">Очистить лог</button>
<button class="btn btn-default" onclick="showConsoleErrors()">Показать ошибки консоли</button>
</div>
</div>
</div>
</div>
<!-- Подключаем наш JavaScript -->
<script src="crm_extensions/nextcloud_editor/js/nextcloud-editor.js"></script>
<script>
// Функции отладки
function log(message) {
var timestamp = new Date().toLocaleTimeString();
var logDiv = document.getElementById('debugLog');
logDiv.innerHTML += '<div style="margin: 2px 0; padding: 2px; border-left: 3px solid #007bff;">[' + timestamp + '] ' + message + '</div>';
logDiv.scrollTop = logDiv.scrollHeight;
console.log('[DEBUG] ' + message);
}
function clearLog() {
document.getElementById('debugLog').innerHTML = '<div class="text-muted">Лог очищен...</div>';
}
function showConsoleErrors() {
log('=== СОСТОЯНИЕ КОНСОЛИ ===');
log('jQuery доступен: ' + (typeof $ !== 'undefined'));
log('Bootstrap доступен: ' + (typeof $.fn.modal !== 'undefined'));
log('openNextcloudEditor доступен: ' + (typeof openNextcloudEditor !== 'undefined'));
}
function testFunction1() {
log('✅ Тест 1: Простая функция работает!');
alert('Тест 1 прошёл успешно!');
}
function testFunction2() {
log('🔄 Тест 2: Начинаем API вызов...');
// Мокаем app объект если его нет
if (typeof app === 'undefined') {
window.app = {
helper: {
showProgress: function(msg) {
log('📋 Progress: ' + msg);
return { hide: function() { log('✅ Progress hidden'); } };
},
hideProgress: function() { log('✅ Progress hidden (global)'); },
showSuccessNotification: function(opts) {
log('✅ Success: ' + opts.message);
alert('✅ ' + opts.message);
},
showErrorNotification: function(opts) {
log('❌ Error: ' + opts.message);
alert('❌ ' + opts.message);
}
}
};
log('📦 Создан мок app объект');
}
var apiUrl = 'crm_extensions/file_storage/api/test_upload.php?record=392936&filename=test-document.docx';
log('🌐 API URL: ' + apiUrl);
$.get(apiUrl)
.done(function(response) {
log('✅ API ответ получен: ' + JSON.stringify(response).substring(0, 100) + '...');
if (response.success) {
log('🎉 API вернул success=true');
log('📝 Файл: ' + response.file_name);
log('🔗 Edit URL: ' + response.edit_url);
} else {
log('❌ API вернул success=false: ' + response.error);
}
})
.fail(function(xhr, status, error) {
log('💥 API ошибка: ' + status + ' - ' + error);
log('📄 Response: ' + xhr.responseText.substring(0, 200));
});
}
function testDirectAPI() {
log('🚀 Тест 4: Прямой тест модального окна');
// Создаём тестовое модальное окно
var testModal = `
<div class="modal fade" id="testModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">🧪 Тестовое модальное окно</h4>
<button type="button" class="close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<p>Это тестовое модальное окно для проверки Bootstrap.</p>
<p>Если вы видите это окно, значит Bootstrap работает правильно!</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
</div>
</div>
</div>
</div>
`;
$('body').append(testModal);
$('#testModal').modal('show');
log('📱 Тестовое модальное окно показано');
// Удаляем через 5 секунд
setTimeout(function() {
$('#testModal').remove();
log('🗑️ Тестовое модальное окно удалено');
}, 5000);
}
// Перехватываем ошибки JavaScript
window.onerror = function(msg, url, line, col, error) {
log('💥 JavaScript Error: ' + msg + ' at ' + url + ':' + line);
return false;
};
// Логируем загрузку
$(document).ready(function() {
log('🎯 Страница отладки загружена');
log('📦 jQuery версия: ' + $.fn.jquery);
showConsoleErrors();
});
</script>
</body>
</html>