<?php if ( ! defined( 'ABSPATH' ) ) { die; } // Cannot access pages directly. /** * Image hover zoom * * @author Codevz * @link http://codevz.com/ */ class Codevz_WPBakery_image_hover_zoom { public $name = false; public function __construct( $name ) { $this->name = $name; } /** * Shortcode settings */ public function in( $wpb = false ) { add_shortcode( $this->name, [ $this, 'out' ] ); $settings = array( 'category' => Codevz_Plus::$title, 'base' => $this->name, 'name' => esc_html__( 'Image Hover Zoom', 'codevz' ), 'description' => esc_html__( 'Mouse hover zoom image', 'codevz' ), 'icon' => 'czi', 'params' => array( array( 'type' => 'cz_sc_id', 'param_name' => 'id', 'save_always' => true ), array( "type" => "attach_image", "heading" => esc_html__("Image", 'codevz'), "param_name" => "image", 'edit_field_class' => 'vc_col-xs-99', 'admin_label' => true ), array( "type" => "textfield", "heading" => esc_html__("Image size", 'codevz'), "description" => esc_html__('Enter image size (e.g: "thumbnail", "medium", "large", "full"), Alternatively enter size in pixels (e.g: 200x100 (Width x Height)).', 'codevz'), "value" => "full", "param_name" => "size", 'edit_field_class' => 'vc_col-xs-99', 'admin_label' => true ), array( 'type' => 'cz_sk', 'param_name' => 'sk_css', "heading" => esc_html__( "Container styling", 'codevz'), 'button' => esc_html__( "Container", 'codevz'), 'edit_field_class' => 'vc_col-xs-99', 'settings' => array( 'background', 'padding', 'border', 'box-shadow' ) ), array( 'type' => 'cz_sk', 'param_name' => 'svg_bg', "heading" => esc_html__( "Background layer", 'codevz'), 'button' => esc_html__( "Background layer", 'codevz'), 'edit_field_class' => 'vc_col-xs-99', 'settings' => array( 'svg', 'background', 'top', 'left', 'width', 'height' ) ), // Advanced array( 'type' => 'checkbox', 'heading' => esc_html__( 'Hide on Desktop?', 'codevz' ), 'param_name' => 'hide_on_d', 'edit_field_class' => 'vc_col-xs-4', 'group' => esc_html__( 'Advanced', 'codevz' ) ), array( 'type' => 'checkbox', 'heading' => esc_html__( 'Hide on Tablet?', 'codevz' ), 'param_name' => 'hide_on_t', 'edit_field_class' => 'vc_col-xs-4', 'group' => esc_html__( 'Advanced', 'codevz' ) ), array( 'type' => 'checkbox', 'heading' => esc_html__( 'Hide on Mobile?', 'codevz' ), 'param_name' => 'hide_on_m', 'edit_field_class' => 'vc_col-xs-4', 'group' => esc_html__( 'Advanced', 'codevz' ) ), array( 'type' => 'cz_title', 'param_name' => 'cz_title', 'class' => '', 'content' => esc_html__( 'Parallax', 'codevz' ), 'group' => esc_html__( 'Advanced', 'codevz' ) ), array( "type" => "dropdown", "heading" => esc_html__( "Parallax", 'codevz' ), "param_name" => "parallax_h", 'edit_field_class' => 'vc_col-xs-99', 'value' => array( esc_html__( 'Select', 'codevz' ) => '', esc_html__( 'Vertical', 'codevz' ) => 'v', esc_html__( 'Vertical + Mouse parallax', 'codevz' ) => 'vmouse', esc_html__( 'Horizontal', 'codevz' ) => 'true', esc_html__( 'Horizontal + Mouse parallax', 'codevz' ) => 'truemouse', esc_html__( 'Mouse parallax', 'codevz' ) => 'mouse', ), "group" => esc_html__( 'Advanced', 'codevz' ) ), array( "type" => "cz_slider", "heading" => esc_html__( "Parallax speed", 'codevz' ), "description" => esc_html__( "Parallax is according to page scrolling", 'codevz' ), 'edit_field_class' => 'vc_col-xs-99', "param_name" => "parallax", "value" => "0", 'options' => array( 'unit' => '', 'step' => 1, 'min' => -50, 'max' => 50 ), 'dependency' => array( 'element' => 'parallax_h', 'value' => array( 'v', 'vmouse', 'true', 'truemouse' ) ), "group" => esc_html__( 'Advanced', 'codevz' ) ), array( 'type' => 'checkbox', 'heading' => esc_html__( 'Stop when done', 'codevz' ), 'param_name' => 'parallax_stop', 'edit_field_class' => 'vc_col-xs-99', 'dependency' => array( 'element' => 'parallax_h', 'value' => array( 'v', 'vmouse', 'true', 'truemouse' ) ), 'group' => esc_html__( 'Advanced', 'codevz' ) ), array( "type" => "cz_slider", "heading" => esc_html__("Mouse speed", 'codevz'), "description" => esc_html__( "Mouse parallax is according to mouse move", 'codevz' ), 'edit_field_class' => 'vc_col-xs-99', "param_name" => "mparallax", "value" => "0", 'options' => array( 'unit' => '', 'step' => 1, 'min' => -30, 'max' => 30 ), 'dependency' => array( 'element' => 'parallax_h', 'value' => array( 'vmouse', 'truemouse', 'mouse' ) ), "group" => esc_html__( 'Advanced', 'codevz' ) ), array( 'type' => 'cz_title', 'param_name' => 'cz_title', 'class' => '', 'content' => esc_html__( 'Animation & Class', 'codevz' ), 'group' => esc_html__( 'Advanced', 'codevz' ) ), Codevz_Plus::wpb_animation_tab( false ), array( 'type' => 'cz_sk', 'param_name' => 'sk_brfx', "heading" => esc_html__( "Block Reveal", 'codevz'), 'button' => esc_html__( "Block Reveal", 'codevz'), 'edit_field_class' => 'vc_col-xs-99 hidden', 'group' => esc_html__( 'Advanced', 'codevz' ), 'settings' => array( 'background' ) ), array( "type" => "cz_slider", "heading" => esc_html__("Animation Delay", 'codevz'), "description" => 'e.g. 500ms', "param_name" => "anim_delay", 'options' => array( 'unit' => 'ms', 'step' => 100, 'min' => 0, 'max' => 5000 ), 'edit_field_class' => 'vc_col-xs-6', 'group' => esc_html__( 'Advanced', 'codevz' ) ), array( "type" => "textfield", "heading" => esc_html__( "Extra Class", 'codevz' ), "param_name" => "class", 'edit_field_class' => 'vc_col-xs-6', 'group' => esc_html__( 'Advanced', 'codevz' ) ), ) ); return $wpb ? vc_map( $settings ) : $settings; } /** * * Shortcode output * * @return string * */ public function out( $atts, $content = '' ) { // Settings. $atts = Codevz_Plus::shortcode_atts( $this, $atts ); // ID if ( ! $atts['id'] ) { $atts['id'] = Codevz_Plus::uniqid(); $public = 1; } // Styles if ( isset( $public ) || Codevz_Plus::$vc_editable || Codevz_Plus::$is_admin ) { $css_id = '#' . $atts['id']; $custom = $atts['anim_delay'] ? 'animation-delay:' . $atts['anim_delay'] . ';' : ''; $css_array = array( 'sk_css' => array( $css_id, $custom ), 'sk_brfx' => $css_id . ':before', 'svg_bg' => $css_id . '.cz_svg_bg:before' ); $css = Codevz_Plus::sk_style( $atts, $css_array ); $css_t = Codevz_Plus::sk_style( $atts, $css_array, '_tablet' ); $css_m = Codevz_Plus::sk_style( $atts, $css_array, '_mobile' ); } // Image $img = Codevz_Plus::get_image( $atts['image'], $atts['size'] ); $link = Codevz_Plus::get_image( $atts['image'], 0, 1 ); // Classes $classes = array(); $classes[] = $atts['id']; $classes[] = 'cz_image_hover_zoom'; $classes[] = $atts['svg_bg'] ? 'cz_svg_bg' : ''; // Out $out = '<div id="' . $atts['id'] . '"' . Codevz_Plus::classes( $atts, $classes ) . Codevz_Plus::data_stlye( $css, $css_t, $css_m ) . '><div><a href="' . $link . '" data-xtra-lightbox>' . $img . '</a></div></div>'; return Codevz_Plus::_out( $atts, $out, [ 'image_zoom' ], $this->name ); } }