cl01/wp-content/plugins/nimble-builder/tmpl/modules/special_img_module_tmpl.php
2025-02-24 12:39:24 +08:00

123 lines
5.2 KiB
PHP
Executable File

<?php
/* Developers : you can override this template from a theme with a file that has this path : 'nimble_templates/modules/{original-module-template-file-name}.php' */
namespace Nimble;
if ( !defined( 'ABSPATH' ) ) {
exit;
}
// this.defaultItemModel = {
// img : '',
// 'img-size' : 'large',
// 'alignment' : '',
// 'link-to' : '',
// 'link-pick-url' : '',
// 'link-custom-url' : '',
// 'link-target' : '',
// 'lightbox' : true
// };
$model = Nimble_Manager()->model;
$value = array_key_exists( 'value', $model ) ? $model['value'] : array();
$main_settings = $value['main_settings'];
//$borders_corners_settings = $value['borders_corners'];
if ( !function_exists( 'Nimble\sek_get_img_module_img_html') ) {
function sek_get_img_module_img_html( $value ) {
// 'round' => rounded shape
// 'expanded' => already expaded
$visual_effect_class = array( 'round' );
$html = '';
if ( is_int( $value['img'] ) ) {
$img_src = wp_get_attachment_image_src( $value['img'], empty( $value['img-size'] ) ? 'large' : $value['img-size']);
}
if ( !empty( $img_src ) && isset( $img_src[0] ) ) {
$img_url = $img_src[0];
} else {
$img_url = $value['img'];
}
if ( !empty( $img_url ) && is_string( $img_url ) ) {
$html = sprintf( '<div class="sek-nimble-image" style="background-image:url(%1$s)"></div>', esc_url($img_url ) );
} else {
//falls back on an icon if previewing
if ( skp_is_customizing() ) {
$html = Nimble_Manager()->sek_get_input_placeholder_content( 'upload' );
}
}
$title = '';
// 'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
// 'caption' => $attachment->post_excerpt,
// 'description' => $attachment->post_content,
// 'href' => get_permalink( $attachment->ID ),
// 'src' => $attachment->guid,
// 'title' => $attachment->post_title
$img_post = get_post( $value['img'] );
if ( is_int( $value['img'] ) ) {
$img_post = get_post( $value['img'] );
if ( !is_wp_error( $img_post ) && is_object( $img_post ) && 'attachment' === $img_post->post_type ) {
$caption = $img_post->post_excerpt;
$description = $img_post->post_content;
$img_title = $img_post->post_title;
if ( false !== sek_booleanize_checkbox_val( $value['use_custom_title_attr']) ) {
$title = esc_html( $value['heading_title'] );
} elseif ( !empty( $caption ) ) {
$title = $caption;
} else if ( !empty( $description ) ) {
$title = $description;
} else if ( !empty( $img_title ) ) {
$title = $img_title;
}
}
}
if ( 'no-link' === $value['link-to'] ) {
$html = sprintf('<div class="sek-nimble-image-mask"></div>%1$s',
$html
);
} else {
$html = sprintf('<a href="%1$s" class="sek-nimble-image-mask" %2$s></a>%3$s',
sek_get_img_module_img_link( $value ),
true === sek_booleanize_checkbox_val( $value['link-target'] ) ? 'target="_blank" rel="noopener noreferrer"' : '',
$html
);
}
// Would be great if this would be able to parse also the background-url inline style and move it into the data-sek-lazy-bg attribute
return apply_filters( 'nimble_parse_for_smart_load', sprintf('<figure class="sek-nimble-image-wrapper %1$s" title="%3$s">%2$s</figure>', esc_attr(implode( ' ', $visual_effect_class)), wp_kses_post($html), esc_html( $title ) ) );
}
}
if ( !function_exists( 'Nimble\sek_get_img_module_img_link' ) ) {
function sek_get_img_module_img_link( $value ) {
$link = 'javascript:void(0);';
// if ( skp_is_customizing() ) {
// return $link;
// }
switch( $value['link-to'] ) {
case 'url' :
if ( !empty( $value['link-pick-url'] ) && !empty( $value['link-pick-url']['id'] ) ) {
if ( '_custom_' == $value['link-pick-url']['id'] && !empty( $value['link-custom-url'] ) ) {
$custom_url = apply_filters( 'nimble_parse_template_tags', $value['link-custom-url'] );
$link = esc_url( $custom_url );
} else if ( !empty( $value['link-pick-url']['url'] ) ) {
$link = esc_url( $value['link-pick-url']['url'] );
}
}
break;
case 'img-file' :
if ( is_int( $value['img'] ) ) {
$link = wp_get_attachment_url( $value['img'] );
}
break;
case 'img-page' :
if ( is_int( $value['img'] ) ) {
$link = get_attachment_link( $value['img'] );
}
break;
}
return $link;
}
}
// Print
echo wp_kses_post(sek_get_img_module_img_html( $main_settings ));