Opal-Estate-Pro/inc/class-opalestate-enqueue.php

235 lines
7.7 KiB
PHP
Executable File

<?php
/**
* $Desc$
*
* @version $Id$
* @package opalestate
* @author Opal Team <info@wpopal.com >
* @copyright Copyright (C) 2019 wpopal.com. All Rights Reserved.
* @license GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html
*
* @website http://www.wpopal.com
* @support http://www.wpopal.com/support/forum.html
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* @class OpalEstate_Enqueue
*
* @version 1.0
*/
class OpalEstate_Enqueue {
/**
* Constructor
*/
public function __construct() {
add_action( 'wp_enqueue_scripts', [ $this, 'load_scripts' ] );
add_action( 'wp_head', [ $this, 'add_custom_styles' ] );
}
/**
* Load javascript and css
*/
public function load_scripts() {
$api = opalestate_get_map_api_uri();
wp_enqueue_script( 'opalestate-google-maps', $api, null, '0.0.1', false );
wp_enqueue_script( 'infobox', OPALESTATE_PLUGIN_URL . 'assets/js/infobox.js', [ 'jquery' ], OPALESTATE_VERSION, false );
wp_enqueue_script( 'markerclusterer', OPALESTATE_PLUGIN_URL . 'assets/js/markerclusterer.js', [ 'jquery' ], '1.3', false );
wp_enqueue_script( 'opalestate-scripts', OPALESTATE_PLUGIN_URL . 'assets/js/opalestate.js', [ 'jquery' ], OPALESTATE_VERSION, true );
wp_enqueue_script( 'opalestate-country-select', OPALESTATE_PLUGIN_URL . 'assets/js/country-select.js', [ 'jquery' ], OPALESTATE_VERSION, true );
wp_enqueue_script( 'noUiSlider', OPALESTATE_PLUGIN_URL . 'assets/js/nouislider.min.js', [ 'jquery' ], '1.0.0', true );
wp_enqueue_script( 'fitvids', OPALESTATE_PLUGIN_URL . 'assets/js/jquery.fitvids.js', [ 'jquery' ], '1.0.0', true );
/**
* Google map.
*/
wp_enqueue_script( 'opalestate-gmap', OPALESTATE_PLUGIN_URL . 'assets/js/frontend/googlemaps.js', [ 'jquery' ], OPALESTATE_VERSION, false );
$custom_map_styles = json_decode( ( opalestate_options( 'google_map_custom_style', '' ) ) );
wp_localize_script( 'opalestate-gmap', 'opalestateGmap', [
'style' => opalestate_options( 'google_map_style', 'standard' ),
'autocomplete_restrictions' => opalestate_get_autocomplete_restrictions(),
'custom_style' => json_encode( $custom_map_styles ),
] );
/**
* Frontend property.
*/
wp_enqueue_script( 'opalestate-messages', OPALESTATE_PLUGIN_URL . 'assets/js/frontend/property.js', [ 'jquery' ], OPALESTATE_VERSION, false );
/**
* Main plugin style.
*/
wp_enqueue_style( 'opalestate-style', OPALESTATE_PLUGIN_URL . '/assets/opalestate.css' );
/**
* Enqueue 3rd.
*/
wp_register_style( 'font-awesome', OPALESTATE_PLUGIN_URL . 'assets/3rd/fontawesome/css/all.min.css', null, '5.11.2', false );
wp_enqueue_style( 'font-awesome' );
wp_enqueue_style( 'hint', OPALESTATE_PLUGIN_URL . 'assets/3rd/hint/hint.min.css', null, '1.3', false );
wp_enqueue_style( 'select2', OPALESTATE_PLUGIN_URL . 'assets/3rd/select2/css/select2.min.css', null, '1.3', false );
wp_enqueue_script( 'select2', OPALESTATE_PLUGIN_URL . 'assets/3rd/select2/js/select2.min.js', null, '1.3', false );
wp_register_script( 'chart-js', OPALESTATE_PLUGIN_URL . 'assets/3rd/chartjs/chart.min.js', null, '2.8.0', true );
wp_register_style( 'tooltipster', OPALESTATE_PLUGIN_URL . 'assets/3rd/tooltipster/css/tooltipster.bundle.min.css', [], false );
wp_register_script( 'tooltipster', OPALESTATE_PLUGIN_URL . 'assets/3rd/tooltipster/js/tooltipster.bundle.min.js', [ 'jquery' ], false, true );
if ( is_single_property() ) {
wp_enqueue_script( 'chart-js' );
}
if ( is_single_property() || is_single_agent() || is_single_agency() ) {
wp_enqueue_style( 'tooltipster' );
wp_enqueue_script( 'tooltipster' );
}
// Load global variables
wp_localize_script( 'opalestate-scripts', 'opalesateJS', [
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'siteurl' => get_template_directory_uri(),
'mapiconurl' => OPALESTATE_PLUGIN_URL . 'assets/map/',
'rtl' => is_rtl() ? 'true' : 'false',
'confirmed' => esc_html__( 'Are you sure to remove?', 'opalestate-pro' ),
'error_upload_size' => esc_html__( 'This file is has large volume size, please try to upload other.', 'opalestate-pro' ),
'size_image' => opalestate_options( 'upload_image_max_size', 0.5 ) * 1000000,
'mfile_image' => opalestate_options( 'upload_image_max_files', 10 ),
'size_other' => opalestate_options( 'upload_other_max_size', 0.8 ) * 1000000,
'mfile_other' => opalestate_options( 'upload_other_max_files', 10 ),
] );
$this->register_enqueue();
}
/**
* Register and enqueue javascript, css library
*/
public function register_enqueue() {
wp_register_script(
'jquery-modernizr',
OPALESTATE_PLUGIN_URL . '/assets/3rd/magnific-popup/jquery.magnific-popup.min.js',
[
'jquery',
],
'4.4.3',
true
);
wp_enqueue_script( 'jquery-magnific-popup' );
wp_register_script( 'jquery-sticky-kit', trailingslashit( OPALESTATE_PLUGIN_URL ) . 'assets/3rd/sticky/jquery.sticky-kit.min.js', [], null, true );
wp_enqueue_script( 'jquery-sticky-kit' );
wp_enqueue_script( 'opalestate-elementor', OPALESTATE_PLUGIN_URL . 'assets/js/frontend/elementor.js', [], null, true );
wp_enqueue_script( 'jquery-ui-datepicker' );
wp_enqueue_style( 'jquery-ui-datepicker-style', OPALESTATE_PLUGIN_URL . '/assets/3rd/datepicker.css' );
///
wp_register_script( 'jquery-toast',
OPALESTATE_PLUGIN_URL . 'assets/3rd/toast/jquery.toast.js', [], null, true );
wp_enqueue_script( 'jquery-toast' );
wp_register_script(
'jquery-swiper',
OPALESTATE_PLUGIN_URL . '/assets/3rd/swiper/js/swiper.min.js',
[
'jquery',
],
'4.4.3',
true
);
if ( ! defined( "ELEMENTOR_VERSION" ) || is_single_property() ) {
wp_enqueue_style( 'jquery-swiper', OPALESTATE_PLUGIN_URL . '/assets/3rd/swiper/css/swiper.min.css', [], '4.5.0' );
}
wp_enqueue_script( 'jquery-swiper' );
}
/**
* Add custom styles.
*/
public function add_custom_styles() {
$custom = '';
$status_color = $this->add_custom_property_status_color();
if ( $status_color ) {
$custom .= $status_color;
}
$label_color = $this->add_custom_property_label_color();
if ( $label_color ) {
$custom .= $label_color;
}
if ( $custom ) {
echo '<style type="text/css">' . $custom . '</style>';
}
}
/**
* Add custom property status color.
*
* @return string
*/
public function add_custom_property_status_color() {
$statuses = Opalestate_Taxonomy_Status::get_list();
$custom = '';
if ( $statuses ) {
foreach ( $statuses as $status ) {
$bg = get_term_meta( $status->term_id, 'opalestate_status_lb_bg', true );
$color = get_term_meta( $status->term_id, 'opalestate_status_lb_color', true );
if ( $bg || $color ) {
$custom .= '.property-status-' . trim( $status->slug ) . ' { ';
if ( $bg ) {
$custom .= 'background-color:' . $bg . ' !important;';
}
if ( $color ) {
$custom .= 'color:' . $color . '!important';
}
$custom .= ' } ';
}
}
}
return $custom;
}
/**
* Add custom property status color.
*
* @return string
*/
public function add_custom_property_label_color() {
$labels = Opalestate_Taxonomy_Label::get_list();
$custom = '';
if ( $labels ) {
foreach ( $labels as $label ) {
$bg = get_term_meta( $label->term_id, 'opalestate_label_lb_bg', true );
$color = get_term_meta( $label->term_id, 'opalestate_label_lb_color', true );
if ( $bg || $color ) {
$custom .= '.property-label-' . trim( $label->slug ) . ' { ';
if ( $bg ) {
$custom .= 'background-color:' . $bg . ' !important;';
}
if ( $color ) {
$custom .= 'color:' . $color . '!important';
}
$custom .= ' } ';
}
}
}
return $custom;
}
}
new OpalEstate_Enqueue();