Files
marcusquinn c7b590870c
Some checks failed
Tests / PHP 7.0 (push) Has been cancelled
Tests / PHP 7.4 (push) Has been cancelled
Tests / PHP 8.0 (push) Has been cancelled
Tests / Code Style (push) Has been cancelled
Sync Wiki / Sync Wiki to GitHub (push) Has been cancelled
Release / Build and Release (push) Has been cancelled
Initial commit of WordPress Plugin Starter Template for AI Coding
2025-04-18 03:09:39 +01:00

126 lines
3.5 KiB
JavaScript

/**
* Admin Scripts
*
* @package WPALLSTARS\PluginStarterTemplate
*/
(function($) {
'use strict';
/**
* Admin functionality
*/
const WPSTAdmin = {
/**
* Initialize
*/
init: function() {
// Initialize components
this.initComponents();
// Bind events
this.bindEvents();
},
/**
* Initialize components
*/
initComponents: function() {
// Initialize any components here
},
/**
* Bind events
*/
bindEvents: function() {
// Example: Toggle sections
$('.wpst-toggle-section').on('click', this.toggleSection);
// Example: Form submission
$('#wpst-settings-form').on('submit', this.handleFormSubmit);
},
/**
* Toggle section visibility
*
* @param {Event} e Click event
*/
toggleSection: function(e) {
e.preventDefault();
const $this = $(this);
const target = $this.data('target');
$(target).slideToggle(200);
$this.toggleClass('open');
},
/**
* Handle form submission
*
* @param {Event} e Submit event
*/
handleFormSubmit: function(e) {
e.preventDefault();
const $form = $(this);
const $submitButton = $form.find('input[type="submit"]');
const formData = $form.serialize();
// Disable submit button and show loading state
$submitButton.prop('disabled', true).addClass('loading');
// Send AJAX request
$.ajax({
url: wpstData.ajaxUrl,
type: 'POST',
data: {
action: 'wpst_save_settings',
nonce: wpstData.nonce,
formData: formData
},
success: function(response) {
if (response.success) {
WPSTAdmin.showNotice('success', response.data.message);
} else {
WPSTAdmin.showNotice('error', response.data.message);
}
},
error: function() {
WPSTAdmin.showNotice('error', 'An error occurred. Please try again.');
},
complete: function() {
// Re-enable submit button and remove loading state
$submitButton.prop('disabled', false).removeClass('loading');
}
});
},
/**
* Show admin notice
*
* @param {string} type Notice type (success, error, warning)
* @param {string} message Notice message
*/
showNotice: function(type, message) {
const $notice = $('<div class="wpst-notice ' + type + '"><p>' + message + '</p></div>');
// Add notice to the page
$('.wpst-notices').html($notice);
// Automatically remove notice after 5 seconds
setTimeout(function() {
$notice.fadeOut(300, function() {
$(this).remove();
});
}, 5000);
}
};
// Initialize when document is ready
$(document).ready(function() {
WPSTAdmin.init();
});
})(jQuery);