File "progress_bar.php"
Full path: /home/webide/saman-clinic.ir/wp-content/plugins/codevz-plus/elementor/widgets/progress_bar.php
File size: 6.58 KB
MIME-type: text/x-php
Charset: utf-8
<?php if ( ! defined( 'ABSPATH' ) ) {exit;} // Exit if accessed directly.
use Elementor\Widget_Base;
use Elementor\Icons_Manager;
use Elementor\Controls_Manager;
class Xtra_Elementor_Widget_progress_bar extends Widget_Base {
protected $id = 'cz_progress_bar';
public function get_name() {
return $this->id;
}
public function get_title() {
return esc_html__( 'Progress Bar', 'codevz' );
}
public function get_icon() {
return 'xtra-progress-bar';
}
public function get_categories() {
return [ 'xtra' ];
}
public function get_keywords() {
return [
esc_html__( 'XTRA', 'codevz' ),
esc_html__( 'Growth', 'codevz' ),
esc_html__( 'Progress', 'codevz' ),
esc_html__( 'Bar', 'codevz' ),
];
}
public function get_style_depends() {
$array = [ $this->id, 'cz_parallax' ];
if ( Codevz_Plus::$is_rtl ) {
$array[] = $this->id . '_rtl';
}
return $array;
}
public function get_script_depends() {
return [ $this->id, 'cz_parallax' ];
}
public function register_controls() {
$free = Codevz_Plus::is_free();
$this->start_controls_section(
'section_progress_bar',
[
'label' => esc_html__( 'Settings', 'codevz' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'title',
[
'label' => esc_html__( 'Title', 'codevz' ),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( 'My Skill', 'codevz' ),
'placeholder' => esc_html__( 'My Skill', 'codevz' ),
]
);
$this->add_control(
'number',
[
'label' => __( 'Number', 'elementor' ),
'type' => Controls_Manager::TEXT,
'default' => 70
]
);
$this->add_control(
'icon',
[
'label' => esc_html__( 'Icon', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::ICONS,
'skin' => 'inline',
'label_block' => false,
]
);
$this->add_control(
'style',
[
'label' => esc_html__( 'Style', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::SELECT,
'default' => 'pbar1',
'options' => [
'pbar1' => esc_html__( 'Style 1', 'codevz' ),
'pbar2' => esc_html__( 'Style 2', 'codevz' ),
'pbar3' => esc_html__( 'Style 3', 'codevz' ),
],
]
);
$this->add_control(
'stripes',
[
'label' => esc_html__( 'Animated stripes?', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::SWITCHER
]
);
$this->end_controls_section();
// Parallax settings.
Xtra_Elementor::parallax_settings( $this );
$this->start_controls_section(
'section_style',
[
'label' => esc_html__( 'Style', 'codevz' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'sk_con',
[
'label' => esc_html__( 'Container', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'background', 'margin' ],
'selectors' => Xtra_Elementor::sk_selectors( '' ),
]
);
$this->add_responsive_control(
'sk_title',
[
'label' => esc_html__( 'Title', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'color', 'font-family', 'font-size', 'margin' ],
'selectors' => Xtra_Elementor::sk_selectors( '.progress_bar p' ),
]
);
$this->add_responsive_control(
'sk_icon',
[
'label' => esc_html__( 'Icon', 'codevz' ),
'type' => $free ? 'stylekit_pro' : 'stylekit',
'settings' => [ 'color', 'font-size', 'background' ],
'selectors' => Xtra_Elementor::sk_selectors( '.progress_bar i' ),
]
);
$this->add_responsive_control(
'sk_num',
[
'label' => esc_html__( 'Number', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'color', 'font-family', 'font-size', 'background' ],
'selectors' => Xtra_Elementor::sk_selectors( '.progress_bar b' ),
]
);
$this->add_responsive_control(
'sk_bar',
[
'label' => esc_html__( 'Bar', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'height', 'background' ],
'selectors' => Xtra_Elementor::sk_selectors( '.progress_bar' ),
]
);
$this->add_responsive_control(
'sk_progress',
[
'label' => esc_html__( 'Progress', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'background', 'box-shadow' ],
'selectors' => Xtra_Elementor::sk_selectors( '.progress_bar span' ),
]
);
$this->end_controls_section();
}
public function render() {
$settings = $this->get_settings_for_display();
ob_start();
Icons_Manager::render_icon( $settings['icon'], [ 'class' => 'mr8', 'aria-hidden' => 'true' ] );
$icon = ob_get_clean();
// Icon
$settings['title'] = $icon ? $icon . $settings['title'] : $settings['title'];
$classes = [];
$classes[] = 'progress_bar';
$classes[] = $settings['style'];
$classes[] = $settings['stripes'] ? 'stripes' : '';
if ( isset( $settings['number']['size'] ) ) {
$settings['number'] = $settings['number'][ 'size' ];
}
// Number
$number = $number_fix = '';
if ( $settings['style'] === 'pbar3' ) {
$number_fix = '<b>' . $settings['number'] . '</b>';
} else {
$number = '<b>' . $settings['number'] . '</b>';
}
Xtra_Elementor::parallax( $settings );
?>
<div<?php echo Codevz_Plus::classes( [], $classes ); ?>>
<span><?php echo wp_kses_post( $number ); ?></span>
<p><?php echo do_shortcode( $settings['title'] ); ?></p>
<?php echo wp_kses_post( $number_fix ); ?>
</div>
<?php
Xtra_Elementor::parallax( $settings, true );
// Fix live preivew.
Xtra_Elementor::render_js( 'progress_bar' );
}
public function content_template() {
?>
<#
var iconHTML = elementor.helpers.renderIcon( view, settings.icon, { 'class': 'mr8', 'aria-hidden': true }, 'i', 'object' ),
title = ( iconHTML.value ? iconHTML.value : '' ) + settings.title,
classes = 'progress_bar',
classes = settings.style ? classes + ' ' + settings.style : classes,
classes = settings.stripes ? classes + ' stripes' : classes,
parallaxOpen = xtraElementorParallax( settings ),
parallaxClose = xtraElementorParallax( settings, true ),
number = settings.number.size ? settings.number.size : settings.number,
number_fix = '';
if ( settings.style === 'pbar3' ) {
number_fix = '<b>' + number + '</b>';
} else {
number = '<b>' + number + '</b>';
}
#>
{{{ parallaxOpen }}}
<div class="{{{classes}}}">
<span>
{{{number}}}
</span>
<p>
{{{title}}}
</p>
{{{number_fix}}}
</div>
{{{ parallaxClose }}}
<?php
}
}