/** * Post Editor JavaScript * * Handles AJAX interactions for Planner and Optimizer meta boxes * * @package Igny8Bridge */ (function($) { 'use strict'; $(document).ready(function() { // Fetch Planner Brief $('#igny8-fetch-brief').on('click', function() { var $button = $(this); var $message = $('#igny8-planner-brief-message'); var postId = $button.data('post-id'); var taskId = $button.data('task-id'); $button.prop('disabled', true).text('Fetching...'); $message.hide().removeClass('notice-success notice-error'); $.ajax({ url: igny8PostEditor.ajaxUrl, type: 'POST', data: { action: 'igny8_fetch_planner_brief', nonce: igny8PostEditor.nonce, post_id: postId, task_id: taskId }, success: function(response) { if (response.success) { $message.addClass('notice notice-success inline') .html('

' + response.data.message + '

') .show(); // Reload page to show updated brief setTimeout(function() { location.reload(); }, 1000); } else { $message.addClass('notice notice-error inline') .html('

' + (response.data.message || 'Failed to fetch brief') + '

') .show(); $button.prop('disabled', false).text('Fetch Brief'); } }, error: function() { $message.addClass('notice notice-error inline') .html('

Request failed

') .show(); $button.prop('disabled', false).text('Fetch Brief'); } }); }); // Refresh Planner Task $('#igny8-refresh-task').on('click', function() { var $button = $(this); var $message = $('#igny8-planner-brief-message'); var postId = $button.data('post-id'); var taskId = $button.data('task-id'); if (!confirm('Are you sure you want to request a refresh of this task from IGNY8 Planner?')) { return; } $button.prop('disabled', true).text('Requesting...'); $message.hide().removeClass('notice-success notice-error'); $.ajax({ url: igny8PostEditor.ajaxUrl, type: 'POST', data: { action: 'igny8_refresh_planner_task', nonce: igny8PostEditor.nonce, post_id: postId, task_id: taskId }, success: function(response) { if (response.success) { $message.addClass('notice notice-success inline') .html('

' + response.data.message + '

') .show(); } else { $message.addClass('notice notice-error inline') .html('

' + (response.data.message || 'Failed to request refresh') + '

') .show(); } $button.prop('disabled', false).text('Request Refresh'); }, error: function() { $message.addClass('notice notice-error inline') .html('

Request failed

') .show(); $button.prop('disabled', false).text('Request Refresh'); } }); }); // Create Optimizer Job $('#igny8-create-optimizer-job').on('click', function() { var $button = $(this); var $message = $('#igny8-optimizer-message'); var postId = $button.data('post-id'); var taskId = $button.data('task-id'); if (!confirm('Create a new optimizer job for this post?')) { return; } $button.prop('disabled', true).text('Creating...'); $message.hide().removeClass('notice-success notice-error'); $.ajax({ url: igny8PostEditor.ajaxUrl, type: 'POST', data: { action: 'igny8_create_optimizer_job', nonce: igny8PostEditor.nonce, post_id: postId, task_id: taskId, job_type: 'audit', priority: 'normal' }, success: function(response) { if (response.success) { $message.addClass('notice notice-success inline') .html('

' + response.data.message + '

') .show(); // Reload page to show updated status setTimeout(function() { location.reload(); }, 1000); } else { $message.addClass('notice notice-error inline') .html('

' + (response.data.message || 'Failed to create job') + '

') .show(); $button.prop('disabled', false).text('Request Optimization'); } }, error: function() { $message.addClass('notice notice-error inline') .html('

Request failed

') .show(); $button.prop('disabled', false).text('Request Optimization'); } }); }); // Check Optimizer Status $('#igny8-check-optimizer-status').on('click', function() { var $button = $(this); var $message = $('#igny8-optimizer-message'); var postId = $button.data('post-id'); var jobId = $button.data('job-id'); $button.prop('disabled', true).text('Checking...'); $message.hide().removeClass('notice-success notice-error'); $.ajax({ url: igny8PostEditor.ajaxUrl, type: 'POST', data: { action: 'igny8_get_optimizer_status', nonce: igny8PostEditor.nonce, post_id: postId, job_id: jobId }, success: function(response) { if (response.success) { $message.addClass('notice notice-success inline') .html('

Status: ' + response.data.status + '

') .show(); // Reload page to show updated status setTimeout(function() { location.reload(); }, 1000); } else { $message.addClass('notice notice-error inline') .html('

' + (response.data.message || 'Failed to get status') + '

') .show(); } $button.prop('disabled', false).text('Check Status'); }, error: function() { $message.addClass('notice notice-error inline') .html('

Request failed

') .show(); $button.prop('disabled', false).text('Check Status'); } }); }); }); })(jQuery);