| Server IP : 146.59.209.152 / Your IP : 216.73.216.46 Web Server : Apache System : Linux webm005.cluster131.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64 User : infrafs ( 43850) PHP Version : 8.2.29 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/infrafs/www/wp-content/plugins/eltd-core/shortcodes/button/ |
Upload File : |
<?php
namespace ElatedCore\CPT\Shortcodes\Button;
use ElatedCore\Lib;
class Button implements Lib\ShortcodeInterface {
private $base;
public function __construct() {
$this->base = 'eltd_button';
add_action( 'vc_before_init', array( $this, 'vcMap' ) );
}
public function getBase() {
return $this->base;
}
public function vcMap() {
if ( function_exists( 'vc_map' ) ) {
vc_map(
array(
'name' => esc_html__( 'Elated Button', 'eltd-core' ),
'base' => $this->base,
'category' => esc_html__( 'by ELATED', 'eltd-core' ),
'icon' => 'icon-wpb-button extended-custom-icon',
'allowed_container_element' => 'vc_row',
'params' => array_merge(
array(
array(
'type' => 'textfield',
'param_name' => 'custom_class',
'heading' => esc_html__( 'Custom CSS Class', 'eltd-core' ),
'description' => esc_html__( 'Style particular content element differently - add a class name and refer to it in custom CSS', 'eltd-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'type',
'heading' => esc_html__( 'Type', 'eltd-core' ),
'value' => array(
esc_html__( 'Solid', 'eltd-core' ) => 'solid',
esc_html__( 'Outline', 'eltd-core' ) => 'outline',
esc_html__( 'Simple', 'eltd-core' ) => 'simple'
),
'admin_label' => true
),
array(
'type' => 'dropdown',
'param_name' => 'size',
'heading' => esc_html__( 'Size', 'eltd-core' ),
'value' => array(
esc_html__( 'Default', 'eltd-core' ) => '',
esc_html__( 'Small', 'eltd-core' ) => 'small',
esc_html__( 'Medium', 'eltd-core' ) => 'medium',
esc_html__( 'Large', 'eltd-core' ) => 'large',
esc_html__( 'Huge', 'eltd-core' ) => 'huge'
),
'dependency' => array( 'element' => 'type', 'value' => array( 'solid', 'outline' ) )
),
array(
'type' => 'textfield',
'param_name' => 'text',
'heading' => esc_html__( 'Text', 'eltd-core' ),
'value' => esc_html__( 'Button Text', 'eltd-core' ),
'save_always' => true,
'admin_label' => true
),
array(
'type' => 'textfield',
'param_name' => 'link',
'heading' => esc_html__( 'Link', 'eltd-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'target',
'heading' => esc_html__( 'Link Target', 'eltd-core' ),
'value' => array_flip( trackstore_elated_get_link_target_array() ),
'save_always' => true
)
),
trackstore_elated_icon_collections()->getVCParamsArray( array(), '', true ),
array(
array(
'type' => 'colorpicker',
'param_name' => 'color',
'heading' => esc_html__( 'Color', 'eltd-core' ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'colorpicker',
'param_name' => 'hover_color',
'heading' => esc_html__( 'Hover Color', 'eltd-core' ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'colorpicker',
'param_name' => 'background_color',
'heading' => esc_html__( 'Background Color', 'eltd-core' ),
'dependency' => array( 'element' => 'type', 'value' => array( 'solid' ) ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'colorpicker',
'param_name' => 'hover_background_color',
'heading' => esc_html__( 'Hover Background Color', 'eltd-core' ),
'dependency' => array( 'element' => 'type', 'value' => array( 'solid', 'outline' ) ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'colorpicker',
'param_name' => 'border_color',
'heading' => esc_html__( 'Border Color', 'eltd-core' ),
'dependency' => array( 'element' => 'type', 'value' => array( 'solid', 'outline' ) ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'colorpicker',
'param_name' => 'hover_border_color',
'heading' => esc_html__( 'Hover Border Color', 'eltd-core' ),
'dependency' => array( 'element' => 'type', 'value' => array( 'solid', 'outline' ) ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'textfield',
'param_name' => 'font_size',
'heading' => esc_html__( 'Font Size (px)', 'eltd-core' ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'textfield',
'param_name' => 'font_size_icon',
'heading' => esc_html__( 'Font Size (px)', 'eltd-core' ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'font_weight',
'heading' => esc_html__( 'Font Weight', 'eltd-core' ),
'value' => array_flip( trackstore_elated_get_font_weight_array( true ) ),
'save_always' => true,
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'text_transform',
'heading' => esc_html__( 'Text Transform', 'eltd-core' ),
'value' => array_flip( trackstore_elated_get_text_transform_array( true ) ),
'save_always' => true
),
array(
'type' => 'textfield',
'param_name' => 'margin',
'heading' => esc_html__( 'Margin', 'eltd-core' ),
'description' => esc_html__( 'Insert margin in format: top right bottom left (e.g. 10px 5px 10px 5px)', 'eltd-core' ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'textfield',
'param_name' => 'padding',
'heading' => esc_html__( 'Button Padding', 'eltd-core' ),
'description' => esc_html__( 'Insert padding in format: top right bottom left (e.g. 10px 5px 10px 5px)', 'eltd-core' ),
'dependency' => array( 'element' => 'type', 'value' => array( 'solid', 'outline' ) ),
'group' => esc_html__( 'Design Options', 'eltd-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'icon_position',
'heading' => esc_html__( 'Icon position', 'eltd-core' ),
'value' => array(
esc_html__( 'Default', 'eltd-core' ) => '',
esc_html__( 'Left', 'eltd-core' ) => 'left',
esc_html__( 'Right', 'eltd-core' ) => 'right',
),
'group' => esc_html__( 'Design Options', 'eltd-core' ),
'dependency' => array( 'element' => 'icon_pack', 'value' => array( 'font_awesome', 'font_elegant', 'ion_icons', 'linea_icons', 'linear_icons', 'simple_line_icons', 'dripicons' ) )
),
array(
'type' => 'textfield',
'param_name' => 'icon_size',
'heading' => esc_html__( 'Icon Size (px)', 'eltd-core' ),
'group' => esc_html__( 'Design Options', 'eltd-core' ),
'dependency' => array( 'element' => 'icon_pack', 'value' => array( 'font_awesome', 'font_elegant', 'ion_icons', 'linea_icons', 'linear_icons', 'simple_line_icons', 'dripicons' ) )
),
)
)
)
);
}
}
public function render( $atts, $content = null ) {
$default_atts = array(
'size' => '',
'type' => 'solid',
'text' => '',
'link' => '',
'target' => '_self',
'color' => '',
'hover_color' => '',
'background_color' => '',
'hover_background_color' => '',
'border_color' => '',
'hover_border_color' => '',
'font_size' => '',
'font_weight' => '',
'text_transform' => '',
'margin' => '',
'padding' => '',
'icon_position' => 'right',
'icon_size' => '',
'custom_class' => '',
'html_type' => 'anchor',
'input_name' => '',
'custom_attrs' => array()
);
$default_atts = array_merge( $default_atts, trackstore_elated_icon_collections()->getShortcodeParams() );
$params = shortcode_atts( $default_atts, $atts );
if ( $params['html_type'] !== 'input' ) {
$iconPackName = trackstore_elated_icon_collections()->getIconCollectionParamNameByKey( $params['icon_pack'] );
$params['icon'] = $iconPackName ? $params[ $iconPackName ] : '';
}
$params['size'] = ! empty( $params['size'] ) ? $params['size'] : 'medium';
$params['type'] = ! empty( $params['type'] ) ? $params['type'] : 'solid';
$params['link'] = ! empty( $params['link'] ) ? $params['link'] : '#';
$params['target'] = ! empty( $params['target'] ) ? $params['target'] : $default_atts['target'];
$params['button_classes'] = $this->getButtonClasses( $params );
$params['button_custom_attrs'] = ! empty( $params['custom_attrs'] ) ? $params['custom_attrs'] : array();
$params['button_styles'] = $this->getButtonStyles( $params );
$params['button_data'] = $this->getButtonDataAttr( $params );
$params['icon_styles'] = $this->getIconStyles( $params );
return eltd_core_get_shortcode_module_template_part( 'templates/' . $params['html_type'], 'button', '', $params );
}
private function getButtonStyles( $params ) {
$styles = array();
if ( ! empty( $params['color'] ) ) {
$styles[] = 'color: ' . $params['color'];
}
if ( ! empty( $params['background_color'] ) && $params['type'] !== 'outline' ) {
$styles[] = 'background-color: ' . $params['background_color'];
}
if ( ! empty( $params['border_color'] ) ) {
$styles[] = 'border-color: ' . $params['border_color'];
}
if ( ! empty( $params['font_size'] ) ) {
$styles[] = 'font-size: ' . trackstore_elated_filter_px( $params['font_size'] ) . 'px';
}
if ( ! empty( $params['font_weight'] ) && $params['font_weight'] !== '' ) {
$styles[] = 'font-weight: ' . $params['font_weight'];
}
if ( ! empty( $params['text_transform'] ) ) {
$styles[] = 'text-transform: ' . $params['text_transform'];
}
if ( $params['margin'] !== '' ) {
$styles[] = 'margin: ' . $params['margin'];
}
if ( $params['padding'] !== '' ) {
$styles[] = 'padding: ' . $params['padding'];
}
return $styles;
}
private function getIconStyles( $params ) {
$styles = array();
if ( ! empty( $params['icon_size'] ) ) {
$styles[] = 'font-size: ' . trackstore_elated_filter_px( $params['icon_size'] ) . 'px';
}
return $styles;
}
private function getButtonDataAttr( $params ) {
$data = array();
if ( ! empty( $params['hover_color'] ) ) {
$data['data-hover-color'] = $params['hover_color'];
}
if ( ! empty( $params['hover_background_color'] ) ) {
$data['data-hover-bg-color'] = $params['hover_background_color'];
}
if ( ! empty( $params['hover_border_color'] ) ) {
$data['data-hover-border-color'] = $params['hover_border_color'];
}
return $data;
}
private function getButtonClasses( $params ) {
$buttonClasses = array(
'eltd-btn',
'eltd-btn-' . $params['size'],
'eltd-btn-' . $params['type']
);
if ( ! empty( $params['hover_background_color'] ) ) {
$buttonClasses[] = 'eltd-btn-custom-hover-bg';
}
if ( ! empty( $params['hover_border_color'] ) ) {
$buttonClasses[] = 'eltd-btn-custom-border-hover';
}
if ( ! empty( $params['hover_color'] ) ) {
$buttonClasses[] = 'eltd-btn-custom-hover-color';
}
if ( ! empty( $params['icon'] ) ) {
$buttonClasses[] = 'eltd-btn-icon';
}
if ( ! empty( $params['custom_class'] ) ) {
$buttonClasses[] = esc_attr( $params['custom_class'] );
}
if ( ! empty( $params['icon_position'] ) ) {
$buttonClasses[] = 'eltd-btn-icon-position-' . $params['icon_position'] ;
}
return $buttonClasses;
}
}