first commit
This commit is contained in:
246
wp-content/themes/thinkai/includes/classes/visual-composer.php
Normal file
246
wp-content/themes/thinkai/includes/classes/visual-composer.php
Normal file
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
|
||||
namespace THINKAI\Includes\Classes;
|
||||
|
||||
/**
|
||||
* Visual Composer array mapper and render the output.
|
||||
*/
|
||||
class Visual_Composer {
|
||||
|
||||
/**
|
||||
* [$maps description]
|
||||
* @var array
|
||||
*/
|
||||
protected $maps = array(
|
||||
'heading1',
|
||||
'our_services',
|
||||
'choose_us',
|
||||
'projects',
|
||||
'blog',
|
||||
'testimonial',
|
||||
'brands',
|
||||
'slider',
|
||||
'get_in_touch',
|
||||
'our_services2',
|
||||
'services_news',
|
||||
'circled_services',
|
||||
'custom_info',
|
||||
'services_icon',
|
||||
'our_experts',
|
||||
'pricing_plan',
|
||||
'projects2',
|
||||
'faqs',
|
||||
'contact_info',
|
||||
'contact_form',
|
||||
'map',
|
||||
'estimated_time',
|
||||
'pricing_plan2',
|
||||
'about_us',
|
||||
'widget_contact',
|
||||
'useful_links',
|
||||
'store_hours',
|
||||
'get_offer',
|
||||
'header_logo',
|
||||
'contact_us',
|
||||
'main_menu',
|
||||
'simple_info',
|
||||
'header_button',
|
||||
'search_box',
|
||||
'header_contact_info',
|
||||
'header_social_icons',
|
||||
'reparing',
|
||||
'about_us_carousel',
|
||||
'repair_video',
|
||||
'problem_fix_form',
|
||||
'widget_blog',
|
||||
'widget_newsletter',
|
||||
'widget_social_profiles',
|
||||
'funfacts',
|
||||
'repaired_parallax',
|
||||
'appointment_banner',
|
||||
'repair_device',
|
||||
'best_opertunity',
|
||||
'simple_banner',
|
||||
'states',
|
||||
'repair_model',
|
||||
'parts_price',
|
||||
'supported_models',
|
||||
'branches',
|
||||
'latest_articles',
|
||||
'projects3',
|
||||
'pricing_plans3',
|
||||
'funfact2',
|
||||
'services3',
|
||||
'contact_infobar',
|
||||
'services4',
|
||||
'about_us2',
|
||||
'choose_us2',
|
||||
'team',
|
||||
'funfacts3',
|
||||
'specialized_services',
|
||||
'services5',
|
||||
'pricing_plans4',
|
||||
'blog2',
|
||||
'call_back',
|
||||
'sponsors',
|
||||
'fun_facts_boxes',
|
||||
'gallery',
|
||||
'portfolio',
|
||||
'featured_banner',
|
||||
'video_banner',
|
||||
'featured_carousel'
|
||||
);
|
||||
|
||||
/**
|
||||
* [__construct description]
|
||||
*/
|
||||
function __construct() {
|
||||
|
||||
if ( ! function_exists( 'vc_map' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
vc_set_default_editor_post_types( array( 'page', 'static_block' ) );
|
||||
|
||||
|
||||
add_action( 'vc_before_init', array( $this, 'init' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* VC Map main init
|
||||
* @return void [description]
|
||||
*/
|
||||
function init() {
|
||||
|
||||
// set vc as theme.
|
||||
vc_set_as_theme();
|
||||
|
||||
if ( function_exists( 'vc_addshortcode_param' ) ) {
|
||||
vc_addshortcode_param( 'toggle', array( $this, 'toggle' ) );
|
||||
}
|
||||
|
||||
$dir = get_stylesheet_directory() . '/shortcodes'; // First, set new directory for templates
|
||||
vc_set_shortcodes_templates_dir( $dir );
|
||||
|
||||
// Map the params of existing elements.
|
||||
$this->map_params();
|
||||
|
||||
$maps = apply_filters( 'thinkai_vc_map', $this->maps );
|
||||
|
||||
foreach ( $maps as $value) {
|
||||
|
||||
$file = $this->get_file( $value );
|
||||
|
||||
if ( file_exists( $file ) ) {
|
||||
|
||||
$data = include $file;
|
||||
|
||||
vc_map( $data );
|
||||
|
||||
if ( function_exists( 'wpthinkai_shortcode' ) ) {
|
||||
$tag = esc_attr( thinkai_set( $data, 'base' ) );
|
||||
|
||||
wpthinkai_shortcode( $tag, array( $this, 'output' ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function output( $atts, $content = null, $tag ) {
|
||||
|
||||
$params = $this->shortcodeParams( $tag );
|
||||
|
||||
ob_start();
|
||||
|
||||
thinkai_template_load( 'shortcodes/' . $tag . '.php', compact( 'atts', 'content', 'tag' ) );
|
||||
|
||||
return ob_get_clean();
|
||||
|
||||
}
|
||||
|
||||
function get_file( $tag ) {
|
||||
|
||||
$file = thinkai_template( 'includes/resource/vc_map/'.$tag . '.php' );
|
||||
$file = apply_filters( "thinkai_vc_map_file_{$tag}", $file );
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* shortcode params from vc array.
|
||||
*
|
||||
* @param string $tag shortcode tag
|
||||
* @return array params
|
||||
*/
|
||||
function shortcodeParams( $tag ) {
|
||||
|
||||
$file = $this->get_file( $tag );
|
||||
|
||||
if ( file_exists( $file ) ) {
|
||||
$data = include $file;
|
||||
|
||||
return thinkai_set( $data, 'params' );
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
function map_params() {
|
||||
|
||||
$array = array(
|
||||
'vc_row',
|
||||
);
|
||||
|
||||
foreach( $array as $file ) {
|
||||
|
||||
$file = $this->get_file( $file );
|
||||
|
||||
if ( file_exists( $file ) ) {
|
||||
$data = include $file;
|
||||
|
||||
foreach ( $data as $key => $value) {
|
||||
|
||||
foreach( $value as $param ) {
|
||||
vc_add_param( $key, $param );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checkbox shortcode attribute type generator.
|
||||
*
|
||||
* @param $settings
|
||||
* @param string $value
|
||||
*
|
||||
* @since 4.4
|
||||
* @return string - html string.
|
||||
*/
|
||||
function toggle( $settings, $value ) {
|
||||
$output = '';
|
||||
if ( is_array( $value ) ) {
|
||||
$value = '';
|
||||
}
|
||||
$current_value = strlen( $value ) > 0 ? explode( ',', $value ) : array();
|
||||
$values = isset( $settings['value'] ) && is_array( $settings['value'] ) ? $settings['value'] : array( esc_html__( 'Yes', 'thinkai' ) => 'true' );
|
||||
if ( ! empty( $values ) ) {
|
||||
foreach ( $values as $label => $v ) {
|
||||
$checked = count( $current_value ) > 0 && in_array( $v, $current_value ) ? ' checked' : '';
|
||||
$output .= ' <label class="vc_checkbox-label"><input id="'
|
||||
. $settings['param_name'] . '-' . $v . '" value="'
|
||||
. $v . '" class="wpb_vc_param_value tgl tgl-ios '
|
||||
. $settings['param_name'] . ' ' . $settings['type'] . '" type="checkbox" name="'
|
||||
. $settings['param_name'] . '"'
|
||||
|
||||
. $checked . '> '
|
||||
. '<span class="tgl-btn" for="cb2"></span>'
|
||||
. $label . '</label>';
|
||||
}
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user