/home/arranoyd/empl/wp-content/plugins/keydesign-addon/includes/wpbakery-extend/wpbakery-init.php
<?php
/* Before VC init */
add_action( 'vc_before_init', 'keydesign_vc_before_init_actions' );
function keydesign_vc_before_init_actions() {
// Force WPBakery Page Builder to initialize as "built into the theme"
if( function_exists('vc_set_as_theme') ){
vc_set_as_theme();
}
// Link VC elements's folder
if( function_exists('vc_set_shortcodes_templates_dir') ){
vc_set_shortcodes_templates_dir( plugin_dir_path( __FILE__ ).'vc-elements' );
}
}
/* Extend WPBakery Templates */
if ( class_exists('WPBakeryShortCode') ) {
require_once ( trailingslashit( KEYDESIGN_PLUGIN_PATH ) . 'includes/wpbakery-extend/templates/templates-init.php' );
require_once ( trailingslashit( KEYDESIGN_PLUGIN_PATH ) . 'includes/wpbakery-extend/templates/templates-panel.php' );
}
/* After VC init */
add_action( 'vc_after_init', 'keydesign_vc_after_init_actions' );
function keydesign_vc_after_init_actions() {
// Enable VC by default on a list of Post Types
if ( get_option( 'kd-default-post-types' ) != 'yes' ) {
if( function_exists('vc_set_default_editor_post_types') ) {
$list = array(
'page',
'post',
'portfolio',
);
vc_set_default_editor_post_types( $list );
vc_editor_set_post_types($list);
}
update_option( 'kd-default-post-types', 'yes' );
}
if ( function_exists('vc_remove_param') ){
vc_remove_param( 'vc_masonry_grid', 'initial_loading_animation' );
vc_remove_param( 'vc_masonry_grid', 'filter_color' );
vc_remove_param( 'vc_masonry_grid', 'filter_size' );
vc_remove_param( 'vc_basic_grid', 'arrows_design' );
vc_remove_param( 'vc_basic_grid', 'arrows_position' );
vc_remove_param( 'vc_basic_grid', 'arrows_color' );
vc_remove_param( 'vc_basic_grid', 'paging_design' );
vc_remove_param( 'vc_basic_grid', 'paging_color' );
vc_remove_param( 'vc_basic_grid', 'loop' );
vc_remove_param( 'vc_basic_grid', 'autoplay' );
vc_remove_param( 'vc_basic_grid', 'paging_animation_in' );
vc_remove_param( 'vc_basic_grid', 'paging_animation_out' );
}
if ( function_exists('vc_add_param') ) {
$base_css_editor = array( 'vc_row', 'vc_row_inner', 'vc_column', 'vc_column_inner' );
$attributes_css_editor = array(
array(
'type' => 'css_editor',
'heading' => esc_html__( 'Desktop Options', 'keydesign' ),
'param_name' => 'css',
'group' => esc_html__( 'Desktop', 'keydesign' )
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'Tablet Options', 'keydesign' ),
'param_name' => 'css_tablet_landscape',
'group' => esc_html__( 'Tablet Landscape', 'keydesign' )
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'Tablet Options', 'keydesign' ),
'param_name' => 'css_tablet_portrait',
'group' => esc_html__( 'Tablet Portrait', 'keydesign' )
),
array(
'type' => 'css_editor',
'heading' => esc_html__( 'Mobile Options', 'keydesign' ),
'param_name' => 'css_mobile',
'group' => esc_html__( 'Mobile', 'keydesign' )
),
);
foreach($base_css_editor as $base_item) {
foreach($attributes_css_editor as $attribute_item) {
vc_add_param( $base_item, $attribute_item );
}
}
$base_responsive_options = array( 'vc_column', 'vc_column_inner' );
foreach( $base_responsive_options as $base_item ) {
vc_remove_param( $base_item, 'width' );
vc_remove_param( $base_item, 'offset' );
}
$attributes_responsive_options = array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Width', 'keydesign' ),
'param_name' => 'width',
'value' => array(
esc_html__( '1 column - 1/12', 'keydesign' ) => '1/12',
esc_html__( '2 columns - 1/6', 'keydesign' ) => '1/6',
esc_html__( '3 columns - 1/4', 'keydesign' ) => '1/4',
esc_html__( '4 columns - 1/3', 'keydesign' ) => '1/3',
esc_html__( '5 columns - 5/12', 'keydesign' ) => '5/12',
esc_html__( '6 columns - 1/2', 'keydesign' ) => '1/2',
esc_html__( '7 columns - 7/12', 'keydesign' ) => '7/12',
esc_html__( '8 columns - 2/3', 'keydesign' ) => '2/3',
esc_html__( '9 columns - 3/4', 'keydesign' ) => '3/4',
esc_html__( '10 columns - 5/6', 'keydesign' ) => '5/6',
esc_html__( '11 columns - 11/12', 'keydesign' ) => '11/12',
esc_html__( '12 columns - 1/1', 'keydesign' ) => '1/1',
esc_html__( '20% - 1/5', 'keydesign' ) => '1/5',
esc_html__( '40% - 2/5', 'keydesign' ) => '2/5',
esc_html__( '60% - 3/5', 'keydesign' ) => '3/5',
esc_html__( '80% - 4/5', 'keydesign' ) => '4/5',
),
'group' => esc_html__( 'Responsive Options', 'keydesign' ),
'description' => esc_html__( 'Select column width.', 'keydesign' ),
'std' => '1/1',
),
array(
'type' => 'column_offset',
'heading' => esc_html__( 'Responsiveness', 'keydesign' ),
'param_name' => 'offset',
'group' => esc_html__( 'Responsive Options', 'keydesign' ),
'description' => esc_html__( 'Adjust column for different screen sizes. Control width, offset and visibility settings.', 'keydesign' ),
),
);
foreach($base_responsive_options as $base_item) {
foreach($attributes_responsive_options as $attribute_item) {
vc_add_param( $base_item, $attribute_item );
}
}
// Add parameters to vc_row_inner
$attributes_inner_row = array(
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Row stretch', 'keydesign' ),
'param_name' => 'full_width',
'value' => array(
esc_html__( 'Default', 'keydesign' ) => '',
esc_html__( 'Contained', 'keydesign' ) => 'inner_row_contained',
),
'description' => esc_html__( 'Select stretching options for inner row. The default value will inherit the parent width.', 'keydesign' ),
'weight' => 1,
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Main color background overlay', 'keydesign' ),
'param_name' => 'kd_background_overlay',
'description' => esc_html__( 'If checked the row will take the theme primary color with opacity as background.', 'keydesign' ),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Fixed background', 'keydesign' ),
'param_name' => 'kd_fixed_background',
'description' => esc_html__( 'If checked the background image stays fixed.', 'keydesign' ),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Background image position', 'keydesign' ),
'param_name' => 'kd_background_image_position',
'value' => array(
'Top' => 'vc_row-bg-position-top',
'Center' => 'vc_row-bg-position-center',
'Bottom' => 'vc_row-bg-position-bottom',
),
'save_always' => true,
'group' => esc_html__( 'Background', 'keydesign' ),
),
);
foreach ( $attributes_inner_row as $attribute ) {
vc_add_param( 'vc_row_inner', $attribute );
}
//Add parameters to vc_row
$attributes_row = array(
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Main color background overlay', 'keydesign' ),
'param_name' => 'kd_background_overlay',
'description' => esc_html__( 'If checked the row will take the theme primary color with opacity as background.', 'keydesign' ),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Fixed background', 'keydesign' ),
'param_name' => 'kd_fixed_background',
'description' => esc_html__( 'If checked the background image stays fixed.', 'keydesign' ),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Image overlay', 'keydesign' ),
'param_name' => 'kd_image_overlay',
'description' => esc_html__( 'If checked a layer will be applied over the row background image.', 'keydesign' ),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Box shadow', 'keydesign' ),
'param_name' => 'kd_row_shadow',
'description' => esc_html__( 'If checked an outer shadow effect will be applied on the row.', 'keydesign' ),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Background image position', 'keydesign' ),
'param_name' => 'kd_background_image_position',
'value' => array(
'Top' => 'vc_row-bg-position-top',
'Center' => 'vc_row-bg-position-center',
'Bottom' => 'vc_row-bg-position-bottom',
),
'save_always' => true,
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'colorpicker',
'class' => '',
'heading' => esc_html__('Overlay color', 'keydesign'),
'param_name' => 'kd_image_overlay_color',
'value' => '',
'dependency' => array(
'element' => 'kd_image_overlay',
'value' => 'true',
),
'group' => esc_html__( 'Background', 'keydesign' ),
),
array(
'type' => 'kd_param_title',
'text' => 'Top separator',
'description' => esc_html__( 'Configure top row separator.', 'keydesign' ),
'param_name' => 'top_section_title',
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Enable top separator', 'keydesign' ),
'param_name' => 'kd_top_separator',
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Style', 'keydesign' ),
'param_name' => 'kd_top_separator_style',
'value' => array(
'Rounded up' => 'rounded-up',
'Rounded down' => 'rounded-down',
'Skew left' => 'skew-left',
'Skew right' => 'skew-right',
'Big triangle down' => 'arrow-down',
'Big triangle up' => 'arrow-up',
'Big triangle left' => 'triangle-left',
'Big triangle right' => 'triangle-right',
'Small triangle center' => 'small-triangle',
'Waves - static' => 'static-waves',
),
'edit_field_class' => 'vc_col-sm-6',
'dependency' => array(
'element' => 'kd_top_separator',
'value' => 'true',
),
'save_always' => true,
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'colorpicker',
'class' => '',
'heading' => esc_html__('Background', 'keydesign'),
'param_name' => 'kd_top_separator_bg',
'edit_field_class' => 'vc_col-sm-6',
'dependency' => array(
'element' => 'kd_top_separator',
'value' => 'true',
),
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Flip horizontally', 'keydesign' ),
'param_name' => 'kd_top_separator_flip_y',
'dependency' => array(
'element' => 'kd_top_separator_style',
'value' => 'static-waves',
),
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Height', 'keydesign' ),
'param_name' => 'kd_top_separator_height',
'value' => array(
'Small (50px)' => 'separator-height-small',
'Medium (100px)' => 'separator-height-medium',
'Large (150px)' => 'separator-height-large',
),
'dependency' => array(
'element' => 'kd_top_separator',
'value' => 'true',
),
'save_always' => true,
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'kd_param_title',
'text' => 'Bottom separator',
'description' => esc_html__( 'Configure bottom row separator.', 'keydesign' ),
'param_name' => 'bottom_section_title',
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Enable bottom separator', 'keydesign' ),
'param_name' => 'kd_bottom_separator',
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Style', 'keydesign' ),
'param_name' => 'kd_bottom_separator_style',
'value' => array(
'Rounded up' => 'rounded-up',
'Rounded down' => 'rounded-down',
'Skew left' => 'skew-left',
'Skew right' => 'skew-right',
'Big triangle down' => 'arrow-down',
'Big triangle up' => 'arrow-up',
'Big triangle left' => 'triangle-left',
'Big triangle right' => 'triangle-right',
'Small triangle center' => 'small-triangle',
'Waves - static' => 'static-waves',
'Waves - animated' => 'waves',
),
'edit_field_class' => 'vc_col-sm-6',
'dependency' => array(
'element' => 'kd_bottom_separator',
'value' => 'true',
),
'save_always' => true,
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'colorpicker',
'class' => '',
'heading' => esc_html__('Background', 'keydesign'),
'param_name' => 'kd_bottom_separator_bg',
'edit_field_class' => 'vc_col-sm-6',
'dependency' => array(
'element' => 'kd_bottom_separator',
'value' => 'true',
),
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'checkbox',
'heading' => esc_html__( 'Flip horizontally', 'keydesign' ),
'param_name' => 'kd_bottom_separator_flip_y',
'dependency' => array(
'element' => 'kd_bottom_separator_style',
'value' => 'static-waves',
),
'group' => esc_html__( 'Separator', 'keydesign' ),
),
array(
'type' => 'dropdown',
'heading' => esc_html__( 'Height', 'keydesign' ),
'param_name' => 'kd_bottom_separator_height',
'value' => array(
'Small (50px)' => 'separator-height-small',
'Medium (100px)' => 'separator-height-medium',
'Large (150px)' => 'separator-height-large',
),
'dependency' => array(
'element' => 'kd_bottom_separator',
'value' => 'true',
),
'save_always' => true,
'group' => esc_html__( 'Separator', 'keydesign' ),
),
);
foreach ($attributes_row as $attribute) {
vc_add_param( 'vc_row', $attribute );
}
}
}
/* Load PhotoSwipe markup */
if ( ! function_exists( 'keydesign_photoswipe' ) ) {
function keydesign_photoswipe() {
if ( file_exists( dirname( __FILE__ ) . '/photoswipe.php' ) ) {
require_once dirname( __FILE__ ) . '/photoswipe.php';
}
}
}
if ( ! function_exists( 'build_vc_shortcode_callback' ) ) {
function build_vc_shortcode_callback( $css_old, $id, $recurse=false ) {
if ( $recurse == true ) {
$content = $css_old;
} else {
$post = get_post( $id );
if ( is_object( $post ) ) {
$content = $post->post_content;
} else {
$content = $css_old;
}
}
$css = '';
if ( ! preg_match( '/\s*(\.[^\{]+)\s*\{\s*([^\}]+)\s*\}\s*/', $content ) ) {
return $css;
}
WPBMap::addAllMappedShortcodes();
preg_match_all( '/' . get_shortcode_regex() . '/', $content, $shortcodes );
foreach ( $shortcodes[2] as $index => $tag ) {
$shortcode = WPBMap::getShortCode( $tag );
$attr_array = shortcode_parse_atts( trim( $shortcodes[3][ $index ] ) );
if ( isset( $shortcode['params'] ) && ! empty( $shortcode['params'] ) ) {
foreach ( $shortcode['params'] as $param ) {
if ( isset( $param['type'] ) && 'css_editor' === $param['type'] && isset( $attr_array[ $param['param_name'] ] ) && 'css_tablet_landscape' === $param['param_name'] ) {
$css .= '@media (max-width: 1269px) and (min-width: 992px) {' . $attr_array[ $param['param_name'] ] . '}';
} elseif ( isset( $param['type'] ) && 'css_editor' === $param['type'] && isset( $attr_array[ $param['param_name'] ] ) && 'css_tablet_portrait' === $param['param_name'] ) {
$css .= '@media (max-width: 991px) and (min-width: 768px) {' . $attr_array[ $param['param_name'] ] . '}';
} elseif ( isset( $param['type'] ) && 'css_editor' === $param['type'] && isset( $attr_array[ $param['param_name'] ] ) && 'css_mobile' === $param['param_name'] ) {
$css .= '@media (max-width: 767px) {' . $attr_array[ $param['param_name'] ] . '}';
} elseif ( isset( $param['type'] ) && 'css_editor' === $param['type'] && isset( $attr_array[ $param['param_name'] ] ) ) {
$css .= $attr_array[ $param['param_name'] ];
}
}
}
}
foreach ( $shortcodes[5] as $shortcode_content ) {
$css .= build_vc_shortcode_callback( $shortcode_content, $id, true );
}
return $css;
}
}
add_filter('vc_base_build_shortcodes_custom_css', 'build_vc_shortcode_callback', 10, 2);
// Overwrite VC Border Radius dropdown options
function keydesign_getBorderRadiusOptions() {
$radiuses = array(
'' => esc_html__( 'None', 'keydesign' ),
'0px' => '0px',
'1px' => '1px',
'2px' => '2px',
'3px' => '3px',
'4px' => '4px',
'5px' => '5px',
'10px' => '10px',
'15px' => '15px',
'20px' => '20px',
'25px' => '25px',
'30px' => '30px',
'35px' => '35px',
'40px' => '40px',
'45px' => '45px',
'50px' => '50px',
);
return $radiuses;
}
add_filter('vc_css_editor_border_radius_options_data', 'keydesign_getBorderRadiusOptions');
/* Contact form 7 shortcode init */
add_action( 'plugins_loaded', 'kd_init_vendor_cf7' );
function kd_init_vendor_cf7() {
include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); // Require plugin.php to use is_plugin_active() below
if ( is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) || defined( 'WPCF7_PLUGIN' ) ) {
require_once ( plugin_dir_path( __FILE__ ).'elements/vendors/vendor-contact-form-7.php' );
} // if contact form7 plugin active
}