Current File : /home/getxxhzo/xpertbee.com/wp-content/plugins/the-post-grid/app/Controllers/ScriptController.php
<?php
/**
 * Script Controller class.
 *
 * @package RT_TPG
 */

namespace RT\ThePostGrid\Controllers;

// Do not allow directly accessing this file.
use RT\ThePostGrid\Helpers\Fns;

if ( ! defined( 'ABSPATH' ) ) {
	exit( 'This script cannot be accessed directly.' );
}

/**
 * Script Controller class.
 */
class ScriptController {
	/**
	 * Version
	 *
	 * @var string
	 */
	private $version;

	/**
	 * Settings
	 *
	 * @var array
	 */
	private $settings;

	/**
	 * Class construct
	 */
	public function __construct() {
		$this->version = defined( 'WP_DEBUG' ) && WP_DEBUG ? time() : RT_THE_POST_GRID_VERSION;
		add_action( 'wp_head', [ $this, 'header_scripts' ] );
		add_action( 'wp_enqueue_scripts', [ $this, 'enqueue' ] );
		add_action( 'init', [ $this, 'init' ] );
	}

	/**
	 * Init
	 *
	 * @return void
	 */
	public function init() {

        //phpcs:ignore WordPress.Security.NonceVerification.Recommended
		$current_page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';

		if ( 'rttpg_settings' === $current_page ) {
			wp_enqueue_style( 'wp-color-picker' );
			wp_enqueue_script( 'wp-color-picker' );
		}

		// register scripts.
		$scripts = [];
		$styles  = [];

		$scripts[] = [
			'handle' => 'rt-isotope-js',
			'src'    => rtTPG()->get_assets_uri( 'vendor/isotope/isotope.pkgd.min.js' ),
			'deps'   => [ 'jquery' ],
			'footer' => true,
		];

		$scripts[] = [
			'handle' => 'rt-tpg',
			'src'    => rtTPG()->get_assets_uri( 'js/rttpg.js' ),
			'deps'   => [ 'jquery' ],
			'footer' => true,
		];

		$scripts[] = [
			'handle' => 'rt-select2',
			'src'    => rtTPG()->get_assets_uri( 'vendor/select2/select2.min.js' ),
			'deps'   => [ 'jquery' ],
			'footer' => false,
		];

		// register acf styles.
		$styles['rt-fontawsome'] = rtTPG()->get_assets_uri( 'vendor/font-awesome/css/font-awesome.min.css' );

		if ( Fns::tpg_option( 'tpg_icon_font' ) === 'flaticon' ) {
			$styles['rt-flaticon'] = rtTPG()->get_assets_uri( 'vendor/flaticon/flaticon_the_post_grid.css' );
		}

		// Plugin specific css.
		$styles['rt-tpg']           = rtTPG()->tpg_can_be_rtl( 'css/thepostgrid' );
		$styles['rt-tpg-block']     = rtTPG()->tpg_can_be_rtl( 'css/tpg-block' );
		$styles['rt-tpg-shortcode'] = rtTPG()->tpg_can_be_rtl( 'css/tpg-shortcode' );
		$styles['rt-select2']       = rtTPG()->get_assets_uri( 'vendor/select2/select2.min.css' );

		if ( is_admin() ) {
			$scripts[]                      = [
				'handle' => 'rt-tpg-admin',
				'src'    => rtTPG()->get_assets_uri( 'js/admin.js' ),
				'deps'   => [ 'jquery', 'wp-color-picker', 'jquery-ui-sortable' ],
				'footer' => true,
			];
			$scripts[]                      = [
				'handle' => 'rt-tpg-admin-preview',
				'src'    => rtTPG()->get_assets_uri( 'js/admin-preview.js' ),
				'deps'   => [ 'jquery' ],
				'footer' => true,
			];
			$styles['rt-tpg-admin']         = rtTPG()->get_assets_uri( 'css/admin/admin.css' );
			$styles['rt-tpg-admin-preview'] = rtTPG()->get_assets_uri( 'css/admin/admin-preview.css' );
		}

		foreach ( $scripts as $script ) {
			wp_register_script( $script['handle'], $script['src'], $script['deps'], isset( $script['version'] ) ? $script['version'] : $this->version, $script['footer'] );
		}

		foreach ( $styles as $k => $v ) {
			wp_register_style( $k, $v, false, isset( $script['version'] ) ? $script['version'] : $this->version );
		}
	}

	/**
	 * Enqueue scripts.
	 *
	 * @return void
	 */
	public function enqueue() {
		$block_type       = Fns::tpg_option( 'tpg_block_type', 'default' );
		$load_script_type = Fns::tpg_option( 'tpg_load_script' );

		wp_enqueue_script( 'jquery' );

		if ( ! $load_script_type ) {
			wp_enqueue_style( 'rt-fontawsome' );
			wp_enqueue_style( 'rt-flaticon' );

			if ( 'default' === $block_type ) {
				wp_enqueue_style( 'rt-tpg' );
			}

			if ( 'elementor' === $block_type ) {
				wp_enqueue_style( 'rt-tpg-block' );
			}

			if ( 'shortcode' === $block_type ) {
				wp_enqueue_style( 'rt-tpg-shortcode' );
			}
		}

		$scriptBefore = isset( $this->settings['script_before_item_load'] ) ? stripslashes( $this->settings['script_before_item_load'] ) : null;
		$scriptAfter  = isset( $this->settings['script_after_item_load'] ) ? stripslashes( $this->settings['script_after_item_load'] ) : null;
		$scriptLoaded = isset( $this->settings['script_loaded'] ) ? stripslashes( $this->settings['script_loaded'] ) : null;

		$script = "(function($){
						$('.rt-tpg-container').on('tpg_item_before_load', function(){{$scriptBefore}});
						$('.rt-tpg-container').on('tpg_item_after_load', function(){{$scriptAfter}});
						$('.rt-tpg-container').on('tpg_loaded', function(){{$scriptLoaded}});
					})(jQuery);";
		wp_add_inline_script( 'rt-tpg', $script );
	}

	/**
	 * Header Scripts
	 *
	 * @return void
	 */
	public function header_scripts() {

		$tpg_logo = RT_THE_POST_GRID_PLUGIN_URL;

		?>

		<script>

			jQuery(window).on('elementor/frontend/init', function () {
				var previewIframe = jQuery('#elementor-preview-iframe').get(0);

				// Attach a load event listener to the preview iframe
				jQuery(previewIframe).on('load', function () {
					var tpg_selector = tpg_str_rev("nottub-tropmi-gpttr nottub-aera-noitces-dda-rotnemele");

					var logo = "<?php echo esc_html( $tpg_logo ); ?>";
					var log_path = "/assets/images/icon-40x40.svg"; //tpg_str_rev("gvs.04x04-noci/segami/stessa/");

					jQuery('<div class="' + tpg_selector + '" style="vertical-align: bottom;margin-left: 5px;"><img src="' + logo + log_path + '" alt="TPG"/></div>').insertBefore(".elementor-add-section-drag-title");
				});

			});
		</script>
		<style>
			:root {
				--tpg-primary-color: <?php echo isset( $this->settings['tpg_primary_color_main'] ) ? sanitize_hex_color( $this->settings['tpg_primary_color_main'] ) : '#0d6efd'; ?>;
				--tpg-secondary-color: <?php echo isset( $this->settings['tpg_secondary_color_main'] ) ? sanitize_hex_color( $this->settings['tpg_secondary_color_main'] ) : '#0654c4'; ?>;
				--tpg-primary-light: #c4d0ff
			}

			<?php if ( isset( $this->settings['tpg_loader_color'] ) ) : ?>
			body .rt-tpg-container .rt-loading,
			body #bottom-script-loader .rt-ball-clip-rotate {
				color: <?php echo sanitize_hex_color( $this->settings['tpg_loader_color'] ); ?> !important;
			}

			<?php endif; ?>
		</style>

		<?php
		if ( isset( $this->settings['tpg_load_script'] ) ) :
			?>
			<style>
				.rt-container-fluid {
					position: relative;
				}

				.rt-tpg-container .tpg-pre-loader {
					position: relative;
					overflow: hidden;
				}

				.rt-tpg-container .rt-loading-overlay {
					opacity: 0;
					visibility: hidden;
					position: absolute;
					top: 0;
					left: 0;
					width: 100%;
					height: 100%;
					z-index: 1;
					background-color: #fff;
				}

				.rt-tpg-container .rt-loading {
					color: var(--tpg-primary-color);
					position: absolute;
					top: 40%;
					left: 50%;
					margin-left: -16px;
					z-index: 2;
					opacity: 0;
					visibility: hidden;
				}

				.rt-tpg-container .tpg-pre-loader .rt-loading-overlay {
					opacity: 0.8;
					visibility: visible;
				}

				.tpg-carousel-main .tpg-pre-loader .rt-loading-overlay {
					opacity: 1;
				}

				.rt-tpg-container .tpg-pre-loader .rt-loading {
					opacity: 1;
					visibility: visible;
				}


				#bottom-script-loader {
					position: absolute;
					width: calc(100% + 60px);
					height: calc(100% + 60px);
					z-index: 999;
					background: rgba(255, 255, 255, 0.95);
					margin: -30px;
				}

				#bottom-script-loader .rt-ball-clip-rotate {
					color: var(--tpg-primary-color);
					position: absolute;
					top: 80px;
					left: 50%;
					margin-left: -16px;
					z-index: 2;
				}

				.tpg-el-main-wrapper.loading {
					min-height: 300px;
					transition: 0.4s;
				}

				.tpg-el-main-wrapper.loading::before {
					width: 32px;
					height: 32px;
					display: inline-block;
					float: none;
					border: 2px solid currentColor;
					background: transparent;
					border-bottom-color: transparent;
					border-radius: 100%;
					-webkit-animation: ball-clip-rotate 0.75s linear infinite;
					-moz-animation: ball-clip-rotate 0.75s linear infinite;
					-o-animation: ball-clip-rotate 0.75s linear infinite;
					animation: ball-clip-rotate 0.75s linear infinite;
					left: 50%;
					top: 50%;
					position: absolute;
					z-index: 9999999999;
					color: red;
				}


				.rt-tpg-container .slider-main-wrapper,
				.tpg-el-main-wrapper .slider-main-wrapper {
					opacity: 0;
				}

				.md-modal {
					visibility: hidden;
				}

				.md-modal.md-show {
					visibility: visible;
				}

				.builder-content.content-invisible {
					visibility: hidden;
				}

				.rt-tpg-container > *:not(.bottom-script-loader, .slider-main-wrapper) {
					opacity: 0;
				}

				.rt-popup-content .rt-tpg-container > *:not(.bottom-script-loader, .slider-main-wrapper) {
					opacity: 1;
				}

			</style>

			<script>
				jQuery(document).ready(function () {
					setTimeout(function () {
						jQuery('.rt-tpg-container > *:not(.bottom-script-loader, .slider-main-wrapper)').animate({"opacity": 1});
					}, 100);
				});

				jQuery(window).on('elementor/frontend/init', function () {
					if (elementorFrontend.isEditMode()) {
						elementorFrontend.hooks.addAction('frontend/element_ready/widget', function () {
							jQuery('.rt-tpg-container > *:not(.bottom-script-loader, .slider-main-wrapper)').animate({"opacity": 1});
						});
					}
				});
			</script>
			<?php
		endif;
	}
}