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
		
			
				
	
	
		
			134 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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 );
 |