MP_Calculator_Enqueue
Class MP_Calculator_Enqueue
Source Source
File: mortgage-platform/Inc/Calculators/MortgageCalculator/MP_Calculator_Enqueue.php
class MP_Calculator_Enqueue {
/**
* Style settings.
* @var mixed|void style settings
* @since 1.0.0
* @access protected
*/
protected $style_settings;
/**
* Enqueue constructor.
* @since 1.0.0
* @access public
*/
public function __construct() {
$this->style_settings = get_option( MortgagePlatform::$prefix . 'style' );
$this->calculator_settings = get_option( MortgagePlatform::$prefix . 'mortgage_calculator' );
$this->analytics_settings = get_option( MortgagePlatform::$prefix . 'analytics' );
$this->lead_settings = get_option(MortgagePlatform::$prefix . 'leads');
}
/**
* Enqueue styles and scripts.
* @since 1.0.0
* @access public
*/
public function enqueue_scripts($font) {
$this->add_styles($font);
$this->add_scripts();
MP_Calculator_Widgets::widget_form();
}
/**
* Add styles.
*
* @access private
* @since 1.0.0
*
* @param string $font font
*/
private function add_styles($font){
wp_enqueue_style( MortgagePlatform::$prefix . 'main-styles', plugins_url( '../assets/css/mortgage_platform_calculators.main.min.css', __FILE__ ), array(), MortgagePlatform::$mortgage_platform_version );
wp_enqueue_style( 'jquery.mCustomScrollbar', plugins_url( '../assets/css/jquery.mCustomScrollbar.min.css', __FILE__ ) );
if ( 'default' !== $font ) {
wp_enqueue_style( MortgagePlatform::$prefix . 'font', 'https://fonts.googleapis.com/css?family=' . $font . '', array(), MortgagePlatform::$mortgage_platform_version );
}
wp_enqueue_style( MortgagePlatform::$prefix . 'print', plugins_url( '../assets/css/print.min.css', __FILE__ ), array(), MortgagePlatform::$mortgage_platform_version, 'print' );
if ( get_option( MortgagePlatform::$prefix . 'style' )['primary_color'] ) {
ob_start();
/**
* Custom css.
*/
require_once plugin_dir_path( __FILE__ ) . '../assets/css/mortgage-calculator-custom.php';
$custom_styles = ob_get_clean();
wp_add_inline_style( MortgagePlatform::$prefix . 'main-styles', $custom_styles );
}
}
/**
* Add scripts.
*
* @access private
* @since 1.0.0
*/
private function add_scripts(){
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery.mCustomScrollbar.concat', plugins_url( '../assets/js/jquery.mCustomScrollbar.concat.min.js', __FILE__ ), array( 'jquery' ), MortgagePlatform::$mortgage_platform_version, false );
wp_enqueue_script( 'chart.js', 'https://cdn.jsdelivr.net/npm/chart.js@2.8.0', array(), MortgagePlatform::$mortgage_platform_version, true );
wp_enqueue_script( MortgagePlatform::$prefix . 'main', plugins_url( 'assets/js/mortgage_calculator.main.min.js', __FILE__ ), array( 'jquery.mCustomScrollbar.concat' ), MortgagePlatform::$mortgage_platform_version, true );
wp_localize_script( MortgagePlatform::$prefix . 'main', MortgagePlatform::$domain, $this->get_data_for_localize_script() );
if(isset($this->analytics_settings['abandoned_leads']) && $this->analytics_settings['abandoned_leads']){
wp_enqueue_script( 'mortgage_abandoned_fields', plugins_url( 'assets/js/mortgage_abandoned_fields.min.js', __FILE__ ), array( 'jquery', MortgagePlatform::$prefix . 'main-js' ), MortgagePlatform::$mortgage_platform_version, true );
}
}
/**
* Get data for locolize script.
*
* @access public
* @since 1.0.0
*
* @return array
*/
public function get_data_for_localize_script(){
$data = array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
MortgagePlatform::$prefix . 'nonce' => wp_create_nonce( MortgagePlatform::$prefix . 'nonce' ),
MortgagePlatform::$prefix . 'searches' => wp_create_nonce( MortgagePlatform::$prefix . 'searches' ),
'primary_color' => $this->style_settings['primary_color'] ?? false,
'rounded_elements' => isset( $this->style_settings['rounded_elements'] ) ? $this->style_settings['rounded_elements'] : false,
'first_input' => isset( $this->style_settings['first_input'] ) ? $this->style_settings['first_input'] : false,
'mortgagescroll' => isset( $this->analytics_settings['ga_scroll_tracking'] ) ? $this->analytics_settings['ga_scroll_tracking'] : false,
'mortgagegoals' => isset( $this->analytics_settings['ga_goals'] ) ? $this->analytics_settings['ga_goals'] : false,
'mortgageconversion' => isset( $this->analytics_settings['ga_conversion_tracking'] ) ? $this->analytics_settings['ga_conversion_tracking'] : false,
);
return $data;
}
/**
* Register styles.
* @since 1.0.0
* @access public
*/
public function register_styles() {
wp_register_style( MortgagePlatform::$prefix . 'fullpage', plugins_url( '../assets/css/fullpage.min.css', __FILE__ ), array( MortgagePlatform::$prefix . 'main-styles' ), MortgagePlatform::$mortgage_platform_version, false );
wp_register_style( MortgagePlatform::$prefix . 'darktheme', plugins_url( '../assets/css/darktheme.min.css', __FILE__ ), array( MortgagePlatform::$prefix . 'main-styles' ), MortgagePlatform::$mortgage_platform_version, false );
}
/**
* Dynamic enqueue styles and scripts.
* @since 1.0.0
* @access public
*/
public function dynamic_enqueue_scripts( $atts ) {
$list = 'enqueued';
$enqueue_css_list = array();
$style_theme = isset( $atts['type_style'] ) ? $atts['type_style'] : get_option( MortgagePlatform::$prefix . 'style' )['type_style'];
switch ( $style_theme ) {
case ( 'darktheme' ):
$enqueue_css_list = array( MortgagePlatform::$prefix . 'darktheme' );
break;
case ( 'fullpage' ):
$enqueue_css_list = array( MortgagePlatform::$prefix . 'fullpage' );
break;
}
foreach ( $enqueue_css_list as $css ) {
if ( wp_style_is( $css, $list ) ) {
return;
} else {
wp_enqueue_style( $css );
}
}
$enqueue_js_list = array();
foreach ( $enqueue_js_list as $js ) {
if ( wp_script_is( $js, $list ) ) {
return;
} else {
wp_enqueue_script( $js );
}
}
}
/**
* Enqueue scripts and styles for Iframe emded.
* @since 1.0.0
* @access public
*/
public static function iframe_scripts() {
?>
<link rel="stylesheet"
href="<?php echo esc_url( plugins_url( '../assets/css/jquery.mCustomScrollbar.min.css', __FILE__ ) ); ?>">
<link rel="stylesheet"
href="<?php echo esc_url( plugins_url( '../assets/css/mortgage_platform_calculators.main.min.css', __FILE__ ) ); ?>">
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="<?php echo esc_url( plugins_url( '../assets/js/jquery.mCustomScrollbar.concat.min.js', __FILE__ ) ); ?>"></script>
<script>
var <?php echo esc_attr( MortgagePlatform::$domain ); ?> =
{
'ajax_url'
:
'<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>',
'<?php echo esc_attr( MortgagePlatform::$prefix ); ?>nonce"
:
'<?php echo esc_attr( wp_create_nonce( MortgagePlatform::$prefix . 'nonce' ) ); ?>'
}
</script>
<script src="<?php echo esc_url( plugins_url( 'assets/js/mortgage_calculator.main.min.js', __FILE__ ) ); ?>"></script>
<?php
echo esc_js( self::iframe_additional_script() );
}
/**
* Additional script for iframe.
* @since 1.0.0
* @access protected
* @static
*/
protected static function iframe_additional_script() {
$ajax_url = admin_url( 'admin-ajax.php' );
$nonce = wp_create_nonce( MortgagePlatform::$prefix . 'nonce' );
?>
<script>
var form = window.parent.document.querySelector('#mortgageCalculatorIframe')
var data = []
var arr = [
'mortgageamount',
'languages',
'mortgageamount_default',
'interestrate',
'interestrate_default',
'downpayment',
'downpayment_default',
'term',
'termyears',
'termmonths',
'term_default',
'button_text',
'button_reset_text',
'type_style',
'primary_color',
'fonts',
'type_inputs',
'rounded_elements',
'slider_for_input',
'type_slyder',
]
if (form) checkDataset()
function checkDataset () {
arr.forEach(function (i) {
if (Object.keys(form.dataset).length !== 0) {
if (form.dataset[i] !== undefined) {
data[i] = form.dataset[i]
}
}
})
var script = document.querySelector('#mortgageCalculatorIframe script')
if (data['type_style'] === 'fullpage') {
var cssMortgagecalculatorFullpage = document.createElement('link')
cssMortgagecalculatorFullpage.rel = 'stylesheet'
cssMortgagecalculatorFullpage.type = 'text/css'
cssMortgagecalculatorFullpage.href = '<?php echo esc_url( plugins_url( '../assets/css/fullpage.min.css', __FILE__ ) ); ?>'
document.querySelector('body').appendChild(cssMortgagecalculatorFullpage)
}
if (data['type_style'] === 'darktheme') {
var cssMortgagecalculatorFullpage = document.createElement('link')
cssMortgagecalculatorFullpage.rel = 'stylesheet'
cssMortgagecalculatorFullpage.type = 'text/css'
cssMortgagecalculatorFullpage.href = '<?php echo esc_url( plugins_url( '../assets/css/darktheme.min.css', __FILE__ ) ); ?>'
document.querySelector('body').appendChild(cssMortgagecalculatorFullpage)
}
var xhr = new XMLHttpRequest()
var body = ''
for (var key in data) {
body += key + '=' + data[key] + '&'
}
xhr.open('POST',
'<?php echo esc_url( $ajax_url ); ?>?action=iframe_mortgagecalculator&nonce=<?php echo esc_attr( $nonce ); ?>',
true)
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xhr.onreadystatechange = function () {
if (xhr.readyState !== 4) return
if (xhr.readyState === 4 && xhr.status === 200) {
var responseBody = xhr.responseText
var div = document.createElement('div')
div.innerHTML = responseBody
document.querySelector('body').appendChild(div)
mortgageCalculator.init()
} else {
//console.log(xhr.statusText);
}
}
xhr.send(body)
}
setTimeout(function () {
parent.postMessage(Number(document.body.scrollHeight), '*')
}, 4000)
</script>
<?php
}
}
Methods Methods
- __construct — Enqueue constructor.
- add_scripts — Add scripts.
- add_styles — Add styles.
- dynamic_enqueue_scripts — Dynamic enqueue styles and scripts.
- enqueue_scripts — Enqueue styles and scripts.
- get_data_for_localize_script — Get data for locolize script.
- iframe_additional_script — Additional script for iframe.
- iframe_scripts — Enqueue scripts and styles for Iframe emded.
- register_styles — Register styles.
Changelog Changelog
| Version | Description |
|---|---|
| 1.0.0 | Introduced. |