Current Path : /var/www/mainsite/wp-content/themes/maxcoach/elementor/widgets/grid/ |
Current File : /var/www/mainsite/wp-content/themes/maxcoach/elementor/widgets/grid/view-demo.php |
<?php namespace Maxcoach_Elementor; use Elementor\Controls_Manager; use Elementor\Group_Control_Box_Shadow; use Elementor\Group_Control_Css_Filter; use Elementor\Group_Control_Typography; use Elementor\Repeater; use Elementor\Utils; defined( 'ABSPATH' ) || exit; class Widget_View_Demo extends Static_Grid { public function get_name() { return 'tm-view-demo'; } public function get_title() { return esc_html__( 'View Demo', 'maxcoach' ); } public function get_icon_part() { return 'eicon-gallery-grid'; } public function get_keywords() { return [ 'demo' ]; } protected function register_controls() { $this->add_layout_section(); parent::register_controls(); $this->add_image_style_section(); $this->add_content_style_section(); $this->update_controls(); } private function update_controls() { $this->update_control( 'items', [ 'title_field' => '{{{ text }}}', ] ); } private function add_layout_section() { $this->start_controls_section( 'layout_section', [ 'label' => esc_html__( 'Layout', 'maxcoach' ), ] ); $this->add_control( 'hover_effect', [ 'label' => esc_html__( 'Hover Effect', 'maxcoach' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => esc_html__( 'None', 'maxcoach' ), 'zoom-in' => esc_html__( 'Zoom In', 'maxcoach' ), 'zoom-out' => esc_html__( 'Zoom Out', 'maxcoach' ), 'move-up' => esc_html__( 'Move Up', 'maxcoach' ), 'move-up-drop-shadow' => esc_html__( 'Move Up - Drop Shadow', 'maxcoach' ), ], 'default' => '', 'prefix_class' => 'maxcoach-animation-', ] ); $this->end_controls_section(); } private function add_image_style_section() { $this->start_controls_section( 'image_style_section', [ 'label' => esc_html__( 'Image', 'maxcoach' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'image_border_radius', [ 'label' => esc_html__( 'Border Radius', 'maxcoach' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .maxcoach-image' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->start_controls_tabs( 'image_effects' ); $this->start_controls_tab( 'normal', [ 'label' => esc_html__( 'Normal', 'maxcoach' ), ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'image_shadow', 'selector' => '{{WRAPPER}} .maxcoach-image', ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'css_filters', 'selector' => '{{WRAPPER}} .maxcoach-image img', ] ); $this->add_control( 'image_opacity', [ 'label' => esc_html__( 'Opacity', 'maxcoach' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 1, 'min' => 0.10, 'step' => 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .maxcoach-image img' => 'opacity: {{SIZE}};', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( 'hover', [ 'label' => esc_html__( 'Hover', 'maxcoach' ), ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'image_shadow_hover', 'selector' => '{{WRAPPER}} .maxcoach-box:hover .maxcoach-image', ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'css_filters_hover', 'selector' => '{{WRAPPER}} .maxcoach-box:hover .maxcoach-image img', ] ); $this->add_control( 'image_opacity_hover', [ 'label' => esc_html__( 'Opacity', 'maxcoach' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 1, 'min' => 0.10, 'step' => 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .maxcoach-box:hover .maxcoach-image img' => 'opacity: {{SIZE}};', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } private function add_content_style_section() { $this->start_controls_section( 'content_style_section', [ 'label' => esc_html__( 'Content', 'maxcoach' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_responsive_control( 'text_align', [ 'label' => esc_html__( 'Text Align', 'maxcoach' ), 'type' => Controls_Manager::CHOOSE, 'options' => Widget_Utils::get_control_options_text_align_full(), 'selectors' => [ '{{WRAPPER}} .maxcoach-box' => 'text-align: {{VALUE}};', ], ] ); $this->add_responsive_control( 'title_margin', [ 'label' => esc_html__( 'Margin', 'maxcoach' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%', 'em' ], 'selectors' => [ '{{WRAPPER}} .heading' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_control( 'title_heading', [ 'label' => esc_html__( 'Title', 'maxcoach' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'title_typography', 'label' => esc_html__( 'Typography', 'maxcoach' ), 'selector' => '{{WRAPPER}} .heading', ] ); $this->start_controls_tabs( 'caption_colors_tabs' ); $this->start_controls_tab( 'caption_colors_normal_tab', [ 'label' => esc_html__( 'Normal', 'maxcoach' ), ] ); $this->add_control( 'title_color', [ 'label' => esc_html__( 'Title', 'maxcoach' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .heading' => 'color: {{VALUE}};', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( 'caption_colors_hover_tab', [ 'label' => esc_html__( 'Hover', 'maxcoach' ), ] ); $this->add_control( 'title_hover_color', [ 'label' => esc_html__( 'Title', 'maxcoach' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .maxcoach-box:hover .heading' => 'color: {{VALUE}};', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } protected function add_repeater_controls( Repeater $repeater ) { $repeater->add_control( 'image', [ 'label' => esc_html__( 'Image', 'maxcoach' ), 'type' => Controls_Manager::MEDIA, 'default' => [ 'url' => Utils::get_placeholder_image_src(), ], ] ); $repeater->add_control( 'text', [ 'label' => esc_html__( 'Text', 'maxcoach' ), 'type' => Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, ], ] ); $repeater->add_control( 'link', [ 'label' => esc_html__( 'Link', 'maxcoach' ), 'type' => Controls_Manager::URL, 'placeholder' => esc_html__( 'https://your-link.com', 'maxcoach' ), 'show_external' => true, 'default' => [ 'url' => '', 'is_external' => false, 'nofollow' => false, ], ] ); $repeater->add_control( 'badge', [ 'label' => esc_html__( 'Badge', 'maxcoach' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => esc_html__( 'None', 'maxcoach' ), 'new' => esc_html__( 'New', 'maxcoach' ), 'coming' => esc_html__( 'Coming Soon', 'maxcoach' ), ], ] ); } protected function get_repeater_defaults() { $placeholder_image_src = Utils::get_placeholder_image_src(); return [ [ 'image' => [ 'url' => $placeholder_image_src ], ], [ 'image' => [ 'url' => $placeholder_image_src ], ], ]; } protected function print_grid_item() { $item = $this->get_current_item(); $item_key = $this->get_current_key(); $box_tag = 'div'; $box_key = $item_key . '_box'; $this->add_render_attribute( $box_key, 'class', 'maxcoach-box' ); if ( ! empty( $item['link']['url'] ) ) { $box_tag = 'a'; $this->add_render_attribute( $box_key, 'class', 'link-secret' ); $this->add_link_attributes( $box_key, $item['link'] ); } ?> <?php printf( '<%1$s %2$s>', $box_tag, $this->get_render_attribute_string( $box_key ) ); ?> <div class="maxcoach-image image"> <?php echo \Maxcoach_Image::get_elementor_attachment( [ 'settings' => $item, ] ); ?> </div> <?php if ( ! empty( $item['badge'] ) ) : ?> <?php if ( 'coming' === $item['badge'] ) { ?> <div class="badge coming"> <img src="<?php echo esc_url( MAXCOACH_THEME_IMAGE_URI . '/soon-badge.png' ); ?>" alt="<?php esc_attr_e( 'Coming Soon', 'maxcoach' ); ?>"/> </div> <?php } elseif ( 'new' === $item['badge'] ) { ?> <div class="badge new"> <img src="<?php echo esc_url( MAXCOACH_THEME_IMAGE_URI . '/new-badge.png' ); ?>" alt="<?php esc_attr_e( 'New', 'maxcoach' ); ?>"/> </div> <?php } ?> <?php endif; ?> <?php if ( ! empty( $item['text'] ) ): ?> <div class="info"> <h3 class="heading"> <?php echo esc_html( $item['text'] ); ?> </h3> </div> <?php endif; ?> <?php printf( '</%1$s>', $box_tag ); ?> <?php } protected function before_grid() { $this->add_render_attribute( 'wrapper', 'class', 'tm-view-demo' ); } }