File "quote.php"
Full path: /home/webide/saman-clinic.ir/wp-content/plugins/codevz-plus/elementor/widgets/quote.php
File size: 11.69 KB
MIME-type: text/x-php
Charset: utf-8
<?php if ( ! defined( 'ABSPATH' ) ) {exit;} // Exit if accessed directly.
use Elementor\Utils;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Image_Size;
class Xtra_Elementor_Widget_quote extends Widget_Base {
protected $id = 'cz_quote';
public function get_name() {
return $this->id;
}
public function get_title() {
return esc_html__( 'Quote', 'codevz' );
}
public function get_icon() {
return 'xtra-quote';
}
public function get_categories() {
return [ 'xtra' ];
}
public function get_keywords() {
return [
esc_html__( 'XTRA', 'codevz' ),
esc_html__( 'Quote', 'codevz' ),
esc_html__( 'Testimonials', 'codevz' ),
esc_html__( 'Blockquote', 'codevz' ),
esc_html__( 'Cite', '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_content',
[
'label' => esc_html__( 'Settings', 'codevz' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'style',
[
'label' => esc_html__( 'Style', 'codevz' ),
'type' => Controls_Manager::SELECT,
'default' => '',
'options' => [
'' => esc_html__( 'Select', 'codevz' ),
'cz_quote_center' => esc_html__( 'Default center', 'codevz' ),
'cz_quote_arrow' => esc_html__( 'Arrow bottom', 'codevz' ),
'cz_quote_arrow cz_quote_center' => esc_html__( 'Arrow bottom center', 'codevz' ),
'cz_quote_arrow cz_quote_top' => esc_html__( 'Arrow top', 'codevz' ),
'cz_quote_arrow cz_quote_top cz_quote_center' => esc_html__( 'Arrow top center', 'codevz' ),
],
]
);
$this->add_control(
'content',
[
'label' => esc_html__('Content','codevz'),
'type' => Controls_Manager::WYSIWYG,
'default' => 'Great things in business are never done by one person. They are done by a team of people.',
]
);
$this->add_control(
'image',
[
'label' => esc_html__( 'Image', 'codevz' ),
'type' => Controls_Manager::MEDIA
]
);
$this->add_group_control(
Group_Control_Image_Size::get_type(),
[
'name' => 'image',
'default' => 'full',
'separator' => 'none',
'condition' => [
'xxx' => 'xxx',
],
]
);
$this->add_control(
'name',
[
'label' => esc_html__( "Name", 'codevz'),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( 'John Doe', 'codevz' ),
'placeholder' => esc_html__( 'John Doe', 'codevz' ),
]
);
$this->add_control(
'subname',
[
'label' => esc_html__( "Sub name", 'codevz'),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( 'Businessman', 'codevz' ),
'placeholder' => esc_html__( 'Businessman', 'codevz' ),
]
);
$this->add_control(
'rating',
[
'label' => esc_html__( 'Stars rating?', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::SELECT,
'default' => '',
'options' => [
'' => esc_html__( 'Select', 'codevz' ),
'5' => '5',
'4.5' => '4.5',
'4' => '4',
'3.5' => '3.5',
'3' => '3',
'2.5' => '2.5',
'2' => '2',
'1.5' => '1.5',
'1' => '1',
'0.5' => '0.5',
'Zero' => '0',
],
]
);
$this->add_control(
'quote_position',
[
'label' => __( 'Quote shape', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::SELECT,
'default' => '',
'options' => [
'' => esc_html__( 'None', 'codevz' ),
'absolute;top: 10%;left: 10%' => esc_html__( 'Top left', 'codevz' ),
'absolute;top: 10%;left: calc(50% - 60px)' => esc_html__( 'Top center', 'codevz' ),
'absolute;top: 10%;right: 10%' => esc_html__( 'Top right', 'codevz' ),
'absolute;bottom: 10%;left: 10%' => esc_html__( 'Bottom left', 'codevz' ),
'absolute;bottom: 10%;left: calc(50% - 60px)' => esc_html__( 'Bottom center', 'codevz' ),
'absolute;bottom: 10%;right: 10%' => esc_html__( 'Bottom right', 'codevz' ),
'absolute;top: calc(50% - 60px);right: calc(50% - 60px)' => esc_html__( 'Center center', 'codevz' ),
'relative;margin: 0 0 20px;font-size: 40px;opacity: 1' => esc_html__( 'Left relative', 'codevz' ),
'relative;margin: 0 auto 20px;font-size: 40px;text-align: center;opacity: 1' => esc_html__( 'Center relative', 'codevz' ),
'relative;margin: 0 auto 20px;font-size: 40px;text-align: right;opacity: 1' => esc_html__( 'Right relative', 'codevz' ),
'absolute;top: 10%;left: 10%;' => esc_html__( 'Top left + Bottom right', 'codevz' ),
],
'selectors' => [
'{{WRAPPER}} .cz_quote_shape' => 'position: {{VALUE}};display: block !important;',
],
]
);
$this->add_control(
'text_center',
[
'label' => esc_html__( 'Center on mobile?', '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_control(
'rating_color',
[
'label' => esc_html__( 'Stars color', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .cz_quote_rating' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'quote_color',
[
'label' => esc_html__( 'Quote color', 'codevz' ),
'type' => $free ? 'codevz_pro' : Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .cz_quote_shape' => 'color: {{VALUE}};',
],
]
);
$this->add_responsive_control(
'sk_overall',
[
'label' => esc_html__( 'Container', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'background', 'padding', 'border', 'box-shadow' ],
'selectors' => Xtra_Elementor::sk_selectors( '.cz_quote blockquote' ),
]
);
$this->add_responsive_control(
'sk_image',
[
'label' => esc_html__( 'Image', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'background', 'border', 'padding' ],
'selectors' => Xtra_Elementor::sk_selectors( '.cz_quote .cz_quote_info img' ),
]
);
$this->add_responsive_control(
'sk_name',
[
'label' => esc_html__( 'Name', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'color', 'font-family', 'font-size' ],
'selectors' => Xtra_Elementor::sk_selectors( '.cz_quote h4' ),
]
);
$this->add_responsive_control(
'sk_subname',
[
'label' => esc_html__( 'Sub name', 'codevz' ),
'type' => 'stylekit',
'settings' => [ 'color', 'font-size' ],
'selectors' => Xtra_Elementor::sk_selectors( '.cz_quote h4 small' ),
]
);
$this->end_controls_section();
}
public function render() {
$settings = $this->get_settings_for_display();
// Variable's
if ( $settings['rating'] !== '' ) {
$rating_number = $settings['rating'];
$half_rating = ( strpos( $rating_number, '.' ) !== false ) ? '<i class="fa fa-star-half-o"></i>' : '';
$settings['rating'] = '<div class="cz_quote_rating" style="color: ' . $settings['rating_color'] . '">' . str_repeat( '<i class="fa fa-star"></i>', floor( $rating_number ) ) . $half_rating;
$settings['rating'] .= str_repeat( '<i class="fa fa-star-o"></i>', ( 5 - round( $rating_number ) ) );
$settings['rating'] .= '</div>';
}
$cite = $settings['name'] ? '<h4>' . $settings['name'] . '<small>' . $settings['subname'] . '</small></h4>' : '';
$cite = $cite . $settings['rating'];
$image = Group_Control_Image_Size::get_attachment_image_html( $settings );
$text = '<div class="cz_quote_content cz_wpe_content">' . $settings['content'] . '</div>';
$quote_start_end = ( strpos( $settings['quote_position'], 'left' ) !== false ) ? 'left' : 'right';
$icon = '<i class="fa fa-quote-' . $quote_start_end . ' cz_quote_shape hidden"></i>';
$sub = ( $image || $cite ) ? '<div class="cz_quote_info">' . $image . $cite . '</div>' : '';
// Check if both quote selected
if ( $settings['quote_position'] === 'absolute;top: 10%;left: 10%;' ) {
$icon .= '<i class="fa fa-quote-right cz_quote_shape cz_quote_both_second"' . ( $icon_color ? ' style="' . $icon_color. '"' : '' ) . '></i>';
}
// Classes
$classes = array();
$classes[] = 'cz_quote';
$classes[] = $settings['style'];
$classes[] = $settings['text_center'] ? 'cz_mobile_text_center' : '';
Xtra_Elementor::parallax( $settings );
?>
<div<?php echo Codevz_Plus::classes( [], $classes ); ?>>
<?php if ( strpos( $settings['style'], 'cz_quote_top' ) !== false ) {
echo wp_kses_post( $sub . '<blockquote>' . $icon . $text . '</blockquote>' );
} else if ( strpos( $settings['style'], 'cz_quote_arrow' ) !== false ) {
echo wp_kses_post( '<blockquote>' . $icon . $text . '</blockquote>' . $sub );
} else {
echo '<blockquote>' . wp_kses_post( $icon . $text . $sub ) . '</blockquote>';
}
?>
</div>
<?php
Xtra_Elementor::parallax( $settings, true );
}
public function content_template() {
?>
<#
if ( settings.image.url ) {
var image = {
id: settings.image.id,
url: settings.image.url,
size: settings.image_size,
dimension: settings.image_custom_dimension,
model: view.getEditModel()
};
var image_url = elementor.imagesManager.getImageUrl( image );
if ( ! image_url ) {
return;
}
}
if ( settings.rating ) {
var rating_number = settings.rating,
half_rating = rating_number.indexOf( '+' ) >= 0 ? '<i class="fa fa-star-half-o"></i>' : '';
settings.rating = '<div class="cz_quote_rating" style="color: ' + settings.rating_color + '">' + ( '<i class="fa fa-star"></i>'.repeat( Math.floor( rating_number ) ) ) + half_rating + '<i class="fa fa-star-o"></i>'.repeat( 5 - Math.round( rating_number ) ) + '</div>';
}
var cite = settings.name ? '<h4>' + settings.name + '<small>' + settings.subname + '</small></h4>' : '',
cite = cite + settings.rating,
image = settings.image ? '<img src="' + image_url + '">' : '',
text = '<div class="cz_quote_content cz_wpe_content">' + settings.content + '</div>',
quote_start_end = settings.quote_position.indexOf( 'left' ) >= 0 ? 'left' : 'right',
icon = '<i class="fa fa-quote-' + quote_start_end + ' cz_quote_shape hidden"></i>',
sub = ( image || cite ) ? '<div class="cz_quote_info">' + image + cite + '</div>' : '';
if ( settings.quote_position === 'absolute;top: 10%;left: 10%;' ) {
icon = icon + '<i class="fa fa-quote-right cz_quote_shape cz_quote_both_second"></i>';
}
var classes = 'cz_quote',
classes = settings.style ? classes + ' ' + settings.style : classes,
classes = settings.text_center ? classes + ' cz_mobile_text_center' : classes,
parallaxOpen = xtraElementorParallax( settings ),
parallaxClose = xtraElementorParallax( settings, true );
#>
{{{ parallaxOpen }}}
<div class="{{{classes}}}">
<# if ( settings.style.indexOf( 'cz_quote_top' ) >= 0 ) { #>
{{{sub}}}<blockquote>{{{icon}}}{{{text}}}</blockquote>
<# } else if ( settings.style.indexOf( 'cz_quote_arrow' ) >= 0 ) { #>
<blockquote>{{{icon}}}{{{text}}}</blockquote>{{{sub}}}
<# } else { #>
<blockquote>{{{icon}}}{{{text}}}{{{sub}}}</blockquote>
<# } #>
</div>
{{{ parallaxClose }}}
<?php
}
}