/** * UrBackup API Test JavaScript */ (function () { 'use strict'; function testApi(serverId, resultBox) { if (!serverId || !resultBox) return; var xhr = new XMLHttpRequest(); xhr.open('POST', '/plugins/urbackup/ajax/server_test.php', true); xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.timeout = 8000; xhr.onload = function () { if (xhr.status === 200) { try { var data = JSON.parse(xhr.responseText); if (data.success) { resultBox.innerHTML = ' ' + 'API connection OK' + ''; } else { var message = data.message || 'Connection failed'; var isNetwork = /timeout|could not resolve|couldn't connect|connection refused|connection timed out|network is unreachable|no route to host|returned HTTP status/i.test(message); var statusClass = isNetwork ? 'text-warning' : 'text-danger'; var icon = isNetwork ? 'ti-wifi-off' : 'ti-x'; var label = isNetwork ? 'Server unreachable' : 'API connection failed'; resultBox.innerHTML = ' ' + label + '
' + message + ''; } } catch (e) { resultBox.innerHTML = ' Error'; } } else { resultBox.innerHTML = ' HTTP ' + xhr.status + ''; } }; xhr.ontimeout = function () { resultBox.innerHTML = ' Server unreachable
Connection timeout'; }; xhr.onerror = function () { resultBox.innerHTML = ' Server unreachable
Network error'; }; xhr.send('id=' + encodeURIComponent(serverId)); } function initApiStatusCheck() { var statusBox = document.getElementById('plugin-urbackup-api-status'); if (!statusBox) return; if (statusBox._initialized) return; statusBox._initialized = true; var serverId = statusBox.getAttribute('data-server-id'); if (serverId) { testApi(serverId, statusBox); } } function initApiTestButtons() { var buttons = document.querySelectorAll('.plugin-urbackup-test-api'); buttons.forEach(function (button) { if (button._initialized) return; button._initialized = true; button.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); var serverId = button.getAttribute('data-server-id'); var resultBox = document.getElementById('plugin-urbackup-api-test-result'); testApi(serverId, resultBox); }); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initApiStatusCheck); document.addEventListener('DOMContentLoaded', initApiTestButtons); } else { setTimeout(initApiStatusCheck, 100); setTimeout(initApiTestButtons, 100); } })();