MP_Calculator_Gutenberg

Class MP_Calculator_Gutenberg.


Source Source

File: mortgage-platform/Inc/Calculators/MortgageCalculator/Extensions/MP_Calculator_Gutenberg.php

class MP_Calculator_Gutenberg {

	/**
	 * Enqueue styles and scripts for create and use calculator gutenberg block.
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function calculator_block() {

		wp_enqueue_script(
			MortgagePlatform::$prefix . 'gutenberg-js',
			plugin_dir_url( __FILE__ ) . 'assets/mortgage-gutenberg-block.js',
			array( 'wp-blocks', 'wp-element', 'wp-editor', 'wp-i18n' ),
			filemtime( dirname( __FILE__ ) . '/assets/mortgage-gutenberg-block.js' ),
			true
		);

		wp_enqueue_style(
			MortgagePlatform::$prefix . 'gutenberg-css',
			plugin_dir_url( __FILE__ ) . '../../assets/css/mortgage_platform_calculators.main.min.css',
			array( 'wp-edit-blocks' ),
			filemtime( dirname( __FILE__ ) . '/../../assets/css/mortgage_platform_calculators.main.min.css' )
		);

		wp_enqueue_style(
			MortgagePlatform::$prefix . 'darktheme-css',
			plugin_dir_url( __FILE__ ) . '../../assets/css/darktheme.min.css',
			array( 'wp-edit-blocks' ),
			filemtime( dirname( __FILE__ ) . '/../../assets/css/darktheme.min.css' )
		);

	}


	/**
	 * Register Block.
	 *
	 * @since 1.0.0
	 * @access public
	 */
	public function register_block() {

		if ( ! function_exists( 'register_block_type' ) ) {
			return;
		}

		$calculator_setting = get_option( MortgagePlatform::$prefix . 'style' );
		$rounded_elements   = isset( $calculator_setting['rounded_elements'] ) ? $calculator_setting['rounded_elements'] : 0;
		$slider_for_input   = isset( $calculator_setting['slider_for_input'] ) ? $calculator_setting['slider_for_input'] : 0;

		if (isset($calculator_setting['type_style'])){
            register_block_type(
                'calculator/mortgage-calculator',
                array(
                    'attributes'      => array(
                        'type_style'       => array(
                            'type'    => 'string',
                            'default' => $calculator_setting['type_style'],
                        ),
                        'color'            => array(
                            'type'    => 'string',
                            'default' => $calculator_setting['primary_color'],
                        ),
                        'fonts'            => array(
                            'type'    => 'string',
                            'default' => $calculator_setting['fonts'],
                        ),
                        'type_inputs'      => array(
                            'type'    => 'string',
                            'default' => $calculator_setting['type_inputs'],
                        ),
                        'rounded_elements' => array(
                            'type'    => 'boolean',
                            'default' => $rounded_elements,
                        ),
                        'slider_for_input' => array(
                            'type'    => 'boolean',
                            'default' => $slider_for_input,
                        ),
                        'type_slyder'      => array(
                            'type'    => 'string',
                            'default' => $calculator_setting['type_slyder'],
                        ),
                    ),
                    'render_callback' => array( $this, 'calculator_gutenberg_block_callback' ),
                )
            );
        }
	}


	/**
	 * Callback function to render calculator to frontend.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param mixed|array|string $attr attributes
	 *
	 * @return string
	 */
	public function calculator_gutenberg_block_callback( $attr ) {

		extract( $attr );

		$shortcode_string = '[' . MortgagePlatform::$shortcode_widget . ' type_style="%s" primary_color="%s" fonts="%s" type_inputs="%s" rounded_elements="%s" slider_for_input="%s" type_slyder="%s"]';

		return sprintf( $shortcode_string, $type_style, $color, $fonts, $type_inputs, $rounded_elements, $slider_for_input, $type_slyder );
	}


	/**
	 * Add new Gutenberg category.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param array|mixed $categories categories
	 *
	 * @return array
	 */
	public function add_block_categories( $categories ) {
		$category_slugs = wp_list_pluck( $categories, 'slug' );
		$category_list  = in_array( 'mortgage_platform', $category_slugs, true ) ? $categories : array_merge(
			$categories,
			array(
				array(
					'slug'  => MortgagePlatform::$domain,
					'title' => __( 'Mortgage Platform', 'mortgage_platform' ),
					'icon'  => null,
				),
			)
		);

		return $category_list;
	}


}

Top ↑

Methods Methods


Top ↑

Changelog Changelog

Changelog
Version Description
1.0.0 Introduced.