Created
March 31, 2016 15:39
-
-
Save crumina/f79ebf49b613f74ed4ef993de6be8d45 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Shortcode attributes | |
* @var $atts | |
* @var $title | |
* @var $source | |
* @var $image | |
* @var $custom_src | |
* @var $onclick | |
* @var $img_size | |
* @var $external_img_size | |
* @var $caption | |
* @var $img_link_large | |
* @var $link | |
* @var $img_link_target | |
* @var $alignment | |
* @var $el_class | |
* @var $css_animation | |
* @var $style | |
* @var $external_style | |
* @var $border_color | |
* @var $css | |
* @var $animation_type | |
* Shortcode class | |
* @var $this WPBakeryShortCode_VC_Single_image | |
*/ | |
$atts = vc_map_get_attributes( $this->getShortcode(), $atts ); | |
extract( $atts ); | |
$default_src = vc_asset_url( 'vc/no_image.png' ); | |
// backward compatibility. since 4.6 | |
if ( empty( $onclick ) && isset( $img_link_large ) && 'yes' === $img_link_large ) { | |
$onclick = 'img_link_large'; | |
} else if ( empty( $atts['onclick'] ) && ( ! isset( $atts['img_link_large'] ) || 'yes' !== $atts['img_link_large'] ) ) { | |
$onclick = 'custom_link'; | |
} | |
if ( 'external_link' === $source ) { | |
$style = $external_style; | |
} | |
if ( isset( $animation_type ) && ! ( 'none' === $animation_type ) && ! ( '' === $animation_type ) ) { | |
$data_effect = 'data-effect="' . $animation_type . '"'; | |
} else { | |
$data_effect = ''; | |
} | |
$border_color = ( $border_color !== '' ) ? ' vc_box_border_' . $border_color : ''; | |
$img = false; | |
switch ( $source ) { | |
case 'media_library': | |
case 'featured_image': | |
if ( 'featured_image' === $source ) { | |
$post_id = get_the_ID(); | |
if ( $post_id && has_post_thumbnail( $post_id ) ) { | |
$img_id = get_post_thumbnail_id( $post_id ); | |
} else { | |
$img_id = 0; | |
} | |
} else { | |
$img_id = preg_replace( '/[^\d]/', '', $image ); | |
} | |
// set rectangular | |
if ( preg_match( '/_circle_2$/', $style ) ) { | |
$style = preg_replace( '/_circle_2$/', '_circle', $style ); | |
$img_size = $this->getImageSquareSize( $img_id, $img_size ); | |
} | |
if ( ! $img_size ) { | |
$img_size = 'medium'; | |
} | |
$img = wpb_getImageBySize( array( | |
'attach_id' => $img_id, | |
'thumb_size' => $img_size, | |
'class' => 'vc_single_image-img' | |
) ); | |
// don't show placeholder in public version if post doesn't have featured image | |
if ( 'featured_image' === $source ) { | |
if ( ! $img && 'page' === vc_manager()->mode() ) { | |
return; | |
} | |
} | |
break; | |
case 'external_link': | |
$dimensions = vcExtractDimensions( $external_img_size ); | |
$hwstring = $dimensions ? image_hwstring( $dimensions[0], $dimensions[1] ) : ''; | |
$custom_src = $custom_src ? esc_attr( $custom_src ) : $default_src; | |
$img = array( | |
'thumbnail' => '<img class="vc_single_image-img" ' . $hwstring . ' src="' . $custom_src . '" />' | |
); | |
break; | |
default: | |
$img = false; | |
} | |
if ( ! $img ) { | |
$img['thumbnail'] = '<img class="vc_img-placeholder vc_single_image-img" src="' . $default_src . '" />'; | |
} | |
$el_class = $this->getExtraClass( $el_class ); | |
// backward compatibility | |
if ( vc_has_class( 'prettyphoto', $el_class ) ) { | |
$onclick = 'link_image'; | |
} | |
// backward compatibility. will be removed in 4.7+ | |
if ( ! empty( $atts['img_link'] ) ) { | |
$link = $atts['img_link']; | |
if ( ! preg_match( '/^(https?\:\/\/|\/\/)/', $link ) ) { | |
$link = 'http://' . $link; | |
} | |
} | |
// backward compatibility | |
if ( in_array( $link, array( 'none', 'link_no' ) ) ) { | |
$link = ''; | |
} | |
$a_attrs = array(); | |
switch ( $onclick ) { | |
case 'img_link_large': | |
if ( 'external_link' === $source ) { | |
$link = $custom_src; | |
} else { | |
$link = wp_get_attachment_image_src( $img_id, 'large' ); | |
$link = $link[0]; | |
} | |
break; | |
case 'link_image': | |
wp_enqueue_script( 'prettyphoto' ); | |
wp_enqueue_style( 'prettyphoto' ); | |
$a_attrs['class'] = 'prettyphoto'; | |
$a_attrs['rel'] = 'prettyPhoto[rel-' . get_the_ID() . '-' . rand() . ']'; | |
// backward compatibility | |
if ( vc_has_class( 'prettyphoto', $el_class ) ) { | |
// $link is already defined | |
} else if ( 'external_link' === $source ) { | |
$link = $custom_src; | |
} else { | |
$link = wp_get_attachment_image_src( $img_id, 'large' ); | |
$link = $link[0]; | |
} | |
break; | |
case 'custom_link': | |
// $link is already defined | |
break; | |
case 'zoom': | |
wp_enqueue_script( 'vc_image_zoom' ); | |
if ( 'external_link' === $source ) { | |
$large_img_src = $custom_src; | |
} else { | |
$large_img_src = wp_get_attachment_image_src( $img_id, 'large' ); | |
if ( $large_img_src ) { | |
$large_img_src = $large_img_src[0]; | |
} | |
} | |
$img['thumbnail'] = str_replace( '<img ', '<img data-vc-zoom="' . $large_img_src . '" ', $img['thumbnail'] ); | |
break; | |
} | |
// backward compatibility | |
if ( vc_has_class( 'prettyphoto', $el_class ) ) { | |
$el_class = vc_remove_class( 'prettyphoto', $el_class ); | |
} | |
$html = ( 'vc_box_shadow_3d' === $style ) ? '<span class="vc_box_shadow_3d_wrap">' . $img['thumbnail'] . '</span>' : $img['thumbnail']; | |
$html = '<div class="vc_single_image-wrapper ' . $style . ' ' . $border_color . '">' . $html . '</div>'; | |
if ( $link ) { | |
$link = jollyness_vc_build_link($link); | |
$a_attrs['href'] = $link['url']; | |
$a_attrs['target'] = $img_link_target; | |
$html = '<a ' . vc_stringify_attributes( $a_attrs ) . '>' . $html . '</a>'; | |
} | |
$class_to_filter = 'wpb_single_image wpb_content_element vc_align_' . $alignment . ' ' . $this->getCSSAnimation( $css_animation ); | |
$class_to_filter .= vc_shortcode_custom_css_class( $css, ' ' ) . $this->getExtraClass( $el_class ); | |
$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $class_to_filter, $this->settings['base'], $atts ); | |
if ( in_array( $source, array( 'media_library', 'featured_image' ) ) && 'yes' === $add_caption ) { | |
$post = get_post( $img_id ); | |
$caption = $post->post_excerpt; | |
} else if ( 'external_link' === $source ) { | |
$add_caption = 'yes'; | |
} | |
if ( 'yes' === $add_caption && '' !== $caption ) { | |
$html = ' | |
<figure class="vc_figure"> | |
' . $html . ' | |
<figcaption class="vc_figure-caption">' . esc_html( $caption ) . '</figcaption> | |
</figure> | |
'; | |
} | |
$output = ' | |
<div class="' . esc_attr( trim( $css_class ) ) . '"> | |
<div class="wpb_wrapper" '.$data_effect.'> | |
' . wpb_widget_title( array( 'title' => $title, 'extraclass' => 'wpb_singleimage_heading' ) ) . ' | |
' . $html . ' | |
</div> | |
</div> | |
'; | |
echo ($output); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment