upskill-event-manager/assets/js/installer.js
Ben Reed cdc5ea85f4 feat: Add comprehensive CSS, JavaScript and theme asset infrastructure
Add massive collection of CSS, JavaScript and theme assets that were previously excluded:

**CSS Files (681 total):**
- HVAC plugin-specific styles (hvac-*.css): 34 files including dashboard, certificates, registration, mobile nav, accessibility fixes, animations, and welcome popup
- Theme framework files (Astra, builder systems, layouts): 200+ files
- Plugin compatibility styles (WooCommerce, WPForms, Elementor, Contact Form 7): 150+ files
- WordPress core and editor styles: 50+ files
- Responsive and RTL language support: 200+ files

**JavaScript Files (400+ total):**
- HVAC plugin functionality (hvac-*.js): 27 files including menu systems, dashboard enhancements, profile sharing, mobile responsive features, accessibility, and animations
- Framework and library files: jQuery plugins, GSAP, AOS, Swiper, Chart.js, Lottie, Isotope
- Plugin compatibility scripts: WPForms, WooCommerce, Elementor, Contact Form 7, LifterLMS
- WordPress core functionality: customizer, admin, block editor compatibility
- Third-party integrations: Stripe, SMTP, analytics, search functionality

**Assets:**
- Certificate background images and logos
- Comprehensive theme styling infrastructure
- Mobile-responsive design systems
- Cross-browser compatibility assets
- Performance-optimized minified versions

**Updated .gitignore:**
- Fixed asset directory whitelisting patterns to properly include CSS/JS/images
- Added proper directory structure recognition (!/assets/css/, !/assets/js/, etc.)
- Maintains security by excluding sensitive files while including essential assets

This commit provides the complete frontend infrastructure needed for:
- Full theme functionality and styling
- Plugin feature implementations
- Mobile responsiveness and accessibility
- Cross-browser compatibility
- Performance optimization
- Developer workflow support
2025-08-11 16:20:31 -03:00

134 lines
3.7 KiB
JavaScript

/**
* Initializes in a Strict env the code that manages the Stellar Installer buttons.
*
* @since 1.0.0
*
* @param {Object} $ jQuery
* @param {Object} hooks WP Hooks
* @param {Object} obj window.stellarwp.installer
*
* @return {void}
*/
( function( $, hooks, document ) {
'use strict';
/**
* Initialize the necessary varaibles for StellarWP libraries such that
* they are isolated from other instances of this library in the wild.
*/
// BEGIN: stellarwp library initialization.
const currentScript = typeof document.currentScript !== 'undefined' ? document.currentScript : document.scripts[document.scripts.length - 1];
const namespace = currentScript.getAttribute( 'data-stellarwp-namespace' );
if ( namespace === null ) {
console.info( 'The stellarwp/installer library failed to initialize because the data-stellarwp-namespace attribute could not be read from the script tag.' );
return;
}
window.stellarwp = window.stellarwp || {};
window.stellarwp[ namespace ] = window.stellarwp[ namespace ] || {};
// END: stellarwp library initialization.
// If the library has already been initialized, bail.
if ( typeof window.stellarwp[ namespace ].installer === 'object' ) {
return;
}
window.stellarwp[ namespace ].installer = JSON.parse( currentScript.getAttribute( 'data-stellarwp-data' ) );
const obj = window.stellarwp[ namespace ].installer;
const $document = $( document );
/**
* Gets the AJAX request data.
*
* @since 1.0.0
*
* @param {Element|jQuery} $button The button where the configuration data is.
*
* @return {Object} data
*/
obj.getData = ( $button ) => {
const data = {
'action': $button.data( 'action' ),
'request': $button.data( 'request-action' ),
'slug': $button.data( 'slug' ),
'_wpnonce': $button.data( 'nonce' ),
};
return data;
};
/**
* Handles the plugin install AJAX call.
*
* @since 1.0.0
*/
obj.handleInstall = ( event ) => {
const $button = $( event.target );
const ajaxUrl = obj.ajaxurl;
const data = obj.getData( $button );
const requestType = $button.data( 'request-action' );
$button.addClass( obj.busyClass );
$button.prop( 'disabled', true );
if ( 'install' === requestType ) {
$button.text( $button.data( 'installing-label' ) );
} else if ( 'activate' === requestType ) {
$button.text( $button.data( 'activating-label' ) );
}
$.post( ajaxUrl, data, ( response ) => {
$button.removeClass( obj.busyClass );
$button.prop( 'disabled', false );
if ( 'undefined' === typeof response.data || 'object' !== typeof response.data ) {
return;
}
if ( response.success ) {
if ( 'install' === requestType ) {
$button.text( $button.data( 'installed-label' ) );
} else if ( 'activate' === requestType ) {
$button.text( $button.data( 'activated-label' ) );
}
if ( $button.data('redirect-url') ) {
location.replace( $button.data('redirect-url') );
}
} else {
hooks.doAction(
'stellarwp_installer_' + $button.data( 'hook-prefix' ) + '_error',
event.data.selector,
$button.data( 'slug' ),
data.action,
response.data.message,
$button.data( 'hook-prefix' )
);
}
} );
}
/**
* Handles the initialization of the notice actions.
*
* @since 1.0.0
*
* @return {void}
*/
obj.ready = ( event ) => {
for ( const key in obj.selectors ) {
$document.on(
'click',
obj.selectors[ key ],
{
slug: key,
selector: obj.selectors[ key ]
},
obj.handleInstall
);
}
};
// Configure on document ready.
$document.ready( obj.ready );
} )( window.jQuery, window.wp.hooks, document );