/* global metasyncOttoDebugData, jQuery, ajaxurl */
/**
* MetaSync OTTO Debug Panel
*
* Extracted for Phase 5, #887.
* Debug tools: API test, notification test, cache clear, crawl simulation,
* URL testing, OTTO change emulation, simple AJAX test, DB permissions test.
*
* Localized object: metasyncOttoDebugData
* - nonce (string)
*
* @since Phase 5
*/
jQuery(document).ready(function ($) {
var nonce = metasyncOttoDebugData.nonce;
// Test API connectivity
$('#test-otto-api').on('click', function () {
var button = $(this);
button.prop('disabled', true).text('Testing...');
$.post(ajaxurl, {
action: 'metasync_otto_debug_test_api',
nonce: nonce
}, function (response) {
$('#api-test-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Test API Connectivity');
});
});
// Test notification endpoint
$('#test-notification-endpoint').on('click', function () {
var button = $(this);
button.prop('disabled', true).text('Testing...');
$.post(ajaxurl, {
action: 'metasync_otto_debug_test_notification',
nonce: nonce
}, function (response) {
$('#notification-test-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Test Notification Endpoint');
});
});
// Clear OTTO cache
$('#clear-otto-cache').on('click', function () {
if (!confirm('Are you sure you want to clear all OTTO cache data?')) {
return;
}
var button = $(this);
button.prop('disabled', true).text('Clearing...');
$.post(ajaxurl, {
action: 'metasync_otto_debug_clear_cache',
nonce: nonce
}, function (response) {
$('#cache-clear-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Clear OTTO Cache');
});
});
// Simulate crawl notification
$('#simulate-crawl').on('click', function () {
var button = $(this);
button.prop('disabled', true).text('Simulating...');
$.post(ajaxurl, {
action: 'metasync_otto_debug_simulate_crawl',
nonce: nonce
}, function (response) {
$('#crawl-simulate-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Simulate Crawl Notification');
});
});
// Test specific URL
$('#test-specific-url').on('click', function () {
var button = $(this);
var testUrl = $('#test-url-input').val();
if (!testUrl) {
alert('Please enter a URL to test');
return;
}
button.prop('disabled', true).text('Testing...');
console.log('Testing URL:', testUrl);
$.post(ajaxurl, {
action: 'metasync_otto_debug_test_url',
nonce: nonce,
test_url: testUrl
}, function (response) {
console.log('URL Test Response:', response);
$('#url-test-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Test URL & Check All Points');
}).fail(function (xhr, status, error) {
console.error('URL Test Error:', error, xhr.responseText);
$('#url-test-results').empty().append($('
').text('Error: ' + error + '\nResponse: ' + xhr.responseText)).show();
button.prop('disabled', false).text('Test URL & Check All Points');
});
});
// Emulate OTTO changes
$('#emulate-otto-changes').on('click', function () {
var button = $(this);
var testUrl = $('#test-url-input').val();
if (!testUrl) {
alert('Please enter a URL to test');
return;
}
button.prop('disabled', true).text('Emulating...');
console.log('Emulating OTTO changes for URL:', testUrl);
$.post(ajaxurl, {
action: 'metasync_otto_debug_emulate_changes',
nonce: nonce,
test_url: testUrl
}, function (response) {
console.log('Emulation Response:', response);
$('#emulation-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Emulate OTTO Changes');
}).fail(function (xhr, status, error) {
console.error('Emulation Error:', error, xhr.responseText);
$('#emulation-results').empty().append($('
').text('Error: ' + error + '\nResponse: ' + xhr.responseText)).show();
button.prop('disabled', false).text('Emulate OTTO Changes');
});
});
// Simple AJAX test
$('#simple-ajax-test').on('click', function () {
var button = $(this);
button.prop('disabled', true).text('Testing...');
console.log('Testing basic AJAX connection');
$.post(ajaxurl, {
action: 'metasync_otto_debug_simple_test',
nonce: nonce
}, function (response) {
console.log('Simple Test Response:', response);
$('#url-test-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Test AJAX Connection');
}).fail(function (xhr, status, error) {
console.error('Simple Test Error:', error, xhr.responseText);
$('#url-test-results').empty().append($('
').text('AJAX Error: ' + error + '\nResponse: ' + xhr.responseText)).show();
button.prop('disabled', false).text('Test AJAX Connection');
});
});
// Test database permissions
$('#test-db-permissions').on('click', function () {
var button = $(this);
button.prop('disabled', true).text('Testing...');
console.log('Testing database permissions');
$.post(ajaxurl, {
action: 'metasync_otto_debug_test_db_permissions',
nonce: nonce
}, function (response) {
console.log('DB Permissions Response:', response);
$('#db-permissions-results').empty().append($('
').text(JSON.stringify(response, null, 2))).show();
button.prop('disabled', false).text('Test Database Permissions');
}).fail(function (xhr, status, error) {
console.error('DB Permissions Error:', error, xhr.responseText);
$('#db-permissions-results').empty().append($('
').text('Error: ' + error + '\nResponse: ' + xhr.responseText)).show();
button.prop('disabled', false).text('Test Database Permissions');
});
});
});