*/
class ACME_Builder_Module_Portfolio extends ET_Builder_Module {
public $plugin_name;
public $abmp_options;
public $presets;
function init() {
$this->name = esc_html__( 'ACME Custom Portfolio', 'et_builder' );
$this->slug = 'et_pb_portfolio_acme';
$this->fb_support = true;
$plugin_data = apply_filters( 'acme_drop_data', null );
$this->plugin_name = $plugin_data['plugin_name'];
$this->abmp_options = $plugin_data['abmp_options'];
foreach ( $this->abmp_options['abmp_preset'] as $key => $ar ) {
$this->presets[ $key ] = $ar['name'];
}
$this->whitelisted_fields = array(
'fullwidth',
'posts_number',
'abmp_select_preset',
'show_title',
'show_excerpt',
'show_categories',
'show_pagination',
'background_layout',
'admin_label',
'module_id',
'module_class',
'zoom_icon_color',
'hover_overlay_color',
'hover_icon',
);
$this->fields_defaults = array(
'fullwidth' => array( 'on' ),
'abmp_select_preset' => array( 'k0' ),
'posts_number' => array( 10, 'add_default_setting' ),
'show_title' => array( 'on' ),
'show_excerpt' => array( 'off' ),
'show_categories' => array( 'on' ),
'show_pagination' => array( 'on' ),
'background_layout' => array( 'light' ),
);
$this->main_css_element = '%%order_class%% .et_pb_portfolio_item';
$this->advanced_options = array(
'fonts' => array(
'title' => array(
'label' => esc_html__( 'Title', 'et_builder' ),
'css' => array(
'main' => "{$this->main_css_element} h2",
'important' => 'all',
),
),
'caption' => array(
'label' => esc_html__( 'Meta', 'et_builder' ),
'css' => array(
'main' => "{$this->main_css_element} .post-meta, {$this->main_css_element} .post-meta a",
),
),
),
'background' => array(
'settings' => array(
'color' => 'alpha',
),
),
'border' => array(),
);
$this->custom_css_options = array(
'portfolio_image' => array(
'label' => esc_html__( 'Portfolio Image', 'et_builder' ),
'selector' => '.et_portfolio_image',
),
'overlay' => array(
'label' => esc_html__( 'Overlay', 'et_builder' ),
'selector' => '.et_overlay',
),
'overlay_icon' => array(
'label' => esc_html__( 'Overlay Icon', 'et_builder' ),
'selector' => '.et_overlay:before',
),
'portfolio_title' => array(
'label' => esc_html__( 'Portfolio Title', 'et_builder' ),
'selector' => '.et_pb_portfolio_item h2',
),
'portfolio_post_meta' => array(
'label' => esc_html__( 'Portfolio Post Meta', 'et_builder' ),
'selector' => '.et_pb_portfolio_item .post-meta',
),
);
}
function get_fields() {
$fields = array(
'fullwidth' => array(
'label' => esc_html__( 'Layout', 'et_builder' ),
'type' => 'select',
'option_category' => 'layout',
'options' => array(
'on' => esc_html__( 'Fullwidth', 'et_builder' ),
'off' => esc_html__( 'Grid', 'et_builder' ),
),
'description' => esc_html__( 'Choose your desired portfolio layout style.', 'et_builder' ),
'computed_affects' => array(
'__projects',
),
),
'posts_number' => array(
'label' => esc_html__( 'Posts Number', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'description' => esc_html__( 'Define the number of projects that should be displayed per page.', 'et_builder' ),
'computed_affects' => array(
'__projects',
),
),
'abmp_select_preset' => array(
'label' => esc_html__( 'Select Preset', $this->plugin_name ),
'type' => 'select',
'option_category' => 'configuration',
'options' => $this->presets,
'description' => esc_html__( 'Choose your presets for this module.', $this->plugin_name ),
'computed_affects' => array(
'__projects',
),
),
'show_title' => array(
'label' => esc_html__( 'Show Title', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Turn project titles on or off.', 'et_builder' ),
),
'show_excerpt' => array(//mb
'label' => esc_html__( 'Show Excerpt', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Turn display excerpt on or off.', 'et_builder' ),
),
'show_categories' => array(
'label' => esc_html__( 'Show Categories', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Turn the category links on or off.', 'et_builder' ),
),
'show_pagination' => array(
'label' => esc_html__( 'Show Pagination', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Enable or disable pagination for this feed.', 'et_builder' ),
),
'background_layout' => array(
'label' => esc_html__( 'Text Color', 'et_builder' ),
'type' => 'select',
'option_category' => 'color_option',
'options' => array(
'light' => esc_html__( 'Dark', 'et_builder' ),
'dark' => esc_html__( 'Light', 'et_builder' ),
),
'description' => esc_html__( 'Here you can choose whether your text should be light or dark. If you are working with a dark background, then your text should be light. If your background is light, then your text should be set to dark.', 'et_builder' ),
),
'zoom_icon_color' => array(
'label' => esc_html__( 'Zoom Icon Color', 'et_builder' ),
'type' => 'color',
'custom_color' => true,
'tab_slug' => 'advanced',
),
'hover_overlay_color' => array(
'label' => esc_html__( 'Hover Overlay Color', 'et_builder' ),
'type' => 'color-alpha',
'custom_color' => true,
'tab_slug' => 'advanced',
),
'hover_icon' => array(
'label' => esc_html__( 'Hover Icon Picker', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'class' => array( 'et-pb-font-icon' ),
'renderer' => 'et_pb_get_font_icon_list',
'renderer_with_field' => true,
'tab_slug' => 'advanced',
),
'disabled_on' => array(
'label' => esc_html__( 'Disable on', 'et_builder' ),
'type' => 'multiple_checkboxes',
'options' => array(
'phone' => esc_html__( 'Phone', 'et_builder' ),
'tablet' => esc_html__( 'Tablet', 'et_builder' ),
'desktop' => esc_html__( 'Desktop', 'et_builder' ),
),
'additional_att' => 'disable_on',
'option_category' => 'configuration',
'description' => esc_html__( 'This will disable the module on selected devices', 'et_builder' ),
),
'admin_label' => array(
'label' => esc_html__( 'Admin Label', 'et_builder' ),
'type' => 'text',
'description' => esc_html__( 'This will change the label of the module in the builder for easy identification.', 'et_builder' ),
),
'module_id' => array(
'label' => esc_html__( 'CSS ID', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'tab_slug' => 'custom_css',
'option_class' => 'et_pb_custom_css_regular',
),
'module_class' => array(
'label' => esc_html__( 'CSS Class', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'tab_slug' => 'custom_css',
'option_class' => 'et_pb_custom_css_regular',
),
'__projects' => array(
'type' => 'computed',
'computed_callback' => array( 'ET_Builder_Module_Portfolio', 'get_portfolio_item' ),
'computed_depends_on' => array(
'abmp_select_preset',
'posts_number',
'include_categories',
'fullwidth',
),
),
);
return $fields;
}
/**
* Get portfolio objects for portfolio module
*
* @param array arguments that affect et_pb_portfolio query
* @param array passed conditional tag for update process
* @param array passed current page params
* @return array portfolio item data
*/
static function get_portfolio_item( $args = array(), $conditional_tags = array(), $current_page = array() ) {
$defaults = array(
'posts_number' => 10,
'include_categories' => 0,
'fullwidth' => 'on',
);
$args = wp_parse_args( $args, $defaults );
// Native conditional tag only works on page load. Data update needs $conditional_tags data
$is_front_page = et_fb_conditional_tag( 'is_front_page', $conditional_tags );
$is_search = et_fb_conditional_tag( 'is_search', $conditional_tags );
// Prepare query arguments
$query_args = array(
'posts_per_page' => (int) $args['posts_number'],
'post_type' => $args['abmp_post_type'],
'post_status' => 'publish',
'order' => $args['ambp_order'],
'order_by' => $args['abmp_orderby']
);
// Conditionally get paged data
if ( defined( 'DOING_AJAX' ) && isset( $current_page[ 'paged'] ) ) {
$et_paged = intval( $current_page[ 'paged' ] );
} else {
$et_paged = $is_front_page ? get_query_var( 'page' ) : get_query_var( 'paged' );
}
if ( $is_front_page ) {
$paged = $et_paged;
}
if ( ! is_search() ) {
$query_args['paged'] = $et_paged;
}
// Passed categories parameter
if ( '' !== $args['include_categories'] ) {
$query_args['tax_query'] = array(
array(
'taxonomy' => $args['abmp_taxonomy'],
'field' => 'id',
'terms' => explode( ',', $args['include_categories'] ),
'operator' => 'IN',
)
);
}
// Get portfolio query
$query = new WP_Query( $query_args );
// Format portfolio output, and add supplementary data
$width = 'on' === $args['fullwidth'] ? 1080 : 400;
$width = (int) apply_filters( 'et_pb_portfolio_image_width', $width );
$height = 'on' === $args['fullwidth'] ? 9999 : 284;
$height = (int) apply_filters( 'et_pb_portfolio_image_height', $height );
$classtext = 'on' === $args['fullwidth'] ? 'et_pb_post_main_image' : '';
$titletext = get_the_title();
// Loop portfolio item data and add supplementary data
if ( $query->have_posts() ) {
$post_index = 0;
while( $query->have_posts() ) {
$query->the_post();
$categories = array();
$categories_object = get_the_terms( get_the_ID(), 'product_cat' );
if ( ! empty( $categories_object ) ) {
foreach ( $categories_object as $category ) {
$categories[] = array(
'id' => $category->term_id,
'label' => $category->name,
'permalink' => get_term_link( $category ),
);
}
}
// Get thumbnail
$thumbnail = get_thumbnail( $width, $height, $classtext, $titletext, $titletext, false, 'Blogimage' );
// Append value to query post
$query->posts[ $post_index ]->post_permalink = get_permalink();
$query->posts[ $post_index ]->post_thumbnail = print_thumbnail( $thumbnail['thumb'], $thumbnail['use_timthumb'], $titletext, $width, $height, '', false, true );
$query->posts[ $post_index ]->post_categories = $categories;
$query->posts[ $post_index ]->post_class_name = get_post_class( '', get_the_ID() );
$post_index++;
}
$query->posts_next = array(
'label' => esc_html__( '« Older Entries', 'et_builder' ),
'url' => next_posts( $query->max_num_pages, false ),
);
$query->posts_prev = array(
'label' => esc_html__( 'Next Entries »', 'et_builder' ),
'url' => ( $et_paged > 1 ) ? previous_posts( false ) : '',
);
// Added wp_pagenavi support
$query->wp_pagenavi = function_exists( 'wp_pagenavi' ) ? wp_pagenavi( array(
'query' => $query,
'echo' => false
) ) : false;
}
wp_reset_postdata();
return $query;
}
function shortcode_callback( $atts, $content = null, $function_name ) {
$module_id = $this->shortcode_atts['module_id'];
$module_class = $this->shortcode_atts['module_class'];
$fullwidth = $this->shortcode_atts['fullwidth'];
$posts_number = $this->shortcode_atts['posts_number'];
$abmp_select_preset = $this->shortcode_atts['abmp_select_preset'];
$include_categories = implode(',',array_keys($this->abmp_options['abmp_preset'][$abmp_select_preset]['terms']));
$show_title = $this->shortcode_atts['show_title'];
$show_excerpt = $this->shortcode_atts['show_excerpt'];//mb
$show_categories = $this->shortcode_atts['show_categories'];
$show_pagination = $this->shortcode_atts['show_pagination'];
$background_layout = $this->shortcode_atts['background_layout'];
$zoom_icon_color = $this->shortcode_atts['zoom_icon_color'];
$hover_overlay_color = $this->shortcode_atts['hover_overlay_color'];
$hover_icon = $this->shortcode_atts['hover_icon'];
$abmp_post_type = $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['post_type'];
$abmp_taxonomy = $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['taxonomy'];
$abmp_order =$this->abmp_options['abmp_preset'][ $abmp_select_preset ]['abmp_order'];
$abmp_orderby =$this->abmp_options['abmp_preset'][ $abmp_select_preset ]['abmp_orderby'];
global $paged;
$module_class = ET_Builder_Element::add_module_order_class( $module_class, $function_name );
// Set inline style
if ( '' !== $zoom_icon_color ) {
ET_Builder_Element::set_style( $function_name, array(
'selector' => '%%order_class%% .et_overlay:before',
'declaration' => sprintf(
'color: %1$s !important;',
esc_html( $zoom_icon_color )
),
) );
}
if ( '' !== $hover_overlay_color ) {
ET_Builder_Element::set_style( $function_name, array(
'selector' => '%%order_class%% .et_overlay',
'declaration' => sprintf(
'background-color: %1$s;
border-color: %1$s;',
esc_html( $hover_overlay_color )
),
) );
}
$container_is_closed = false;
// Get loop data
$portfolio = self::get_portfolio_item(
array(
'posts_number' => $posts_number,
'include_categories' => $include_categories,
'abmp_select_preset' => $abmp_select_preset,
'abmp_post_type' => $abmp_post_type,
'abmp_taxonomy' => $abmp_taxonomy,
'fullwidth' => $fullwidth,
'abmp_order' => $abmp_order,
'abmp_orderby' => $abmp_orderby
)
);
// setup overlay
if ( 'on' !== $fullwidth ) {
$data_icon = '' !== $hover_icon
? sprintf(
' data-icon="%1$s"',
esc_attr( et_pb_process_font_icon( $hover_icon ) )
)
: '';
$overlay = sprintf( '',
( '' !== $hover_icon ? ' et_pb_inline_icon' : '' ),
$data_icon
);
}
ob_start();
if ( $portfolio->have_posts() ) {
while( $portfolio->have_posts() ) {
$portfolio->the_post();
// Get $post data of current loop
global $post;
array_push( $post->post_class_name, 'et_pb_portfolio_item' );
if ( 'on' !== $fullwidth ) {
array_push( $post->post_class_name, 'et_pb_grid_item' );
}
?>
post_thumbnail ) { ?>
post_categories ) ) : ?>
post_categories as $category ) {
$category_index++;
$separator = $category_index < count( $post->post_categories ) ? ', ' : '';
echo '' . esc_html( $category['label'] ) . '' . $separator;
}
?>
$portfolio ) );
} else {
if ( et_is_builder_plugin_active() ) {
include( ET_BUILDER_PLUGIN_DIR . 'includes/navigation.php' );
} else {
$next_posts_link_html = $prev_posts_link_html = '';
if ( ! empty( $portfolio->posts_next['url'] ) ) {
$next_posts_link_html = sprintf(
'',
esc_url( $portfolio->posts_next['url'] ),
esc_html( $portfolio->posts_next['label'] )
);
}
if ( ! empty( $portfolio->posts_prev['url'] ) ) {
$prev_posts_link_html = sprintf(
'',
esc_url( $portfolio->posts_prev['url'] ),
esc_html( $portfolio->posts_prev['label'] )
);
}
printf(
'',
$next_posts_link_html,
$prev_posts_link_html
);
}
}
}
} else {
if ( et_is_builder_plugin_active() ) {
include( ET_BUILDER_PLUGIN_DIR . 'includes/no-results.php' );
} else {
get_template_part( 'includes/no-results', 'index' );
}
}
// Reset post data
wp_reset_postdata();
$posts = ob_get_contents();
ob_end_clean();
$class = " et_pb_module et_pb_bg_layout_{$background_layout}";
$output = sprintf(
'
%2$s
%4$s',
( 'on' === $fullwidth ? 'et_pb_portfolio' : 'et_pb_portfolio_grid clearfix' ),
$posts,
esc_attr( $class ),
( ! $container_is_closed ? '
' : '' ),
( '' !== $module_id ? sprintf( ' id="%1$s"', esc_attr( $module_id ) ) : '' ),
( '' !== $module_class ? sprintf( ' %1$s', esc_attr( $module_class ) ) : '' )
);
return $output;
}
}
/**
* ACME_Builder_Module_Fullwidth_Portfolio
*
* Extended functionalities:
* - added option to show excerpt in results
* - Portfolio works with any post_type and taxonomies (via presets)
* - ACME Carousel Style will show excerpt and custom fields (via preset)
* - ACME Carousel Style can replace default premalink with any url in custom fileds (via preset)
* - Change default columns number output for ACME Carousel Style
*
* presets are setup from Acme Panel
*
* @since 1.0.0
* @package Acme_Divi_Modules
* @subpackage Acme_Divi_Modules/admin
* @author Mirko Bianco
*/
class ACME_Builder_Module_Fullwidth_Portfolio extends ET_Builder_Module {
public $plugin_name;
public $abmp_options;
public $presets;
function init() {
$this->name = esc_html__( 'ACME FW Portfolio', 'et_builder' );
$this->slug = 'et_pb_portfolio_fw_acme';
$this->fb_support = true;
$this->fullwidth = true;
$plugin_data = apply_filters( 'acme_drop_data', null );
$this->plugin_name = $plugin_data['plugin_name'];
$this->abmp_options = $plugin_data['abmp_options'];
foreach ( $this->abmp_options['abmp_preset'] as $key => $ar ) {
$this->presets[ $key ] = $ar['name'];
}
//apply_filters( 'acme_debug', $this->presets, 'Presets' );
// need to use global settings from the slider module
$this->global_settings_slug = 'et_pb_portfolio';
$this->whitelisted_fields = array(
'title',
'abmp_select_preset',
'max_columns',
'posts_number',
'show_title',
'show_excerpt',//mb
'show_date',
'background_layout',
'auto',
'auto_speed',
'hover_icon',
'hover_overlay_color',
'zoom_icon_color',
'admin_label',
'module_id',
'module_class',
);
$this->main_css_element = '%%order_class%%';
$this->advanced_options = array(
'fonts' => array(
'title' => array(
'label' => esc_html__( 'Title', 'et_builder' ),
'css' => array(
'main' => "{$this->main_css_element} h3",
'important' => 'all',
),
),
'caption' => array(
'label' => esc_html__( 'Meta', 'et_builder' ),
'css' => array(
'main' => "{$this->main_css_element} .post-meta, {$this->main_css_element} .post-meta a",
),
),
),
'background' => array(
'settings' => array(
'color' => 'alpha',
),
),
'border' => array(
'css' => array(
'main' => "{$this->main_css_element} .et_pb_portfolio_item",
),
),
);
$this->custom_css_options = array(
'portfolio_title' => array(
'label' => esc_html__( 'Portfolio Title', 'et_builder' ),
'selector' => '> h2',
),
'portfolio_item' => array(
'label' => esc_html__( 'Portfolio Item', 'et_builder' ),
'selector' => '.et_pb_portfolio_item',
),
'portfolio_overlay' => array(
'label' => esc_html__( 'Item Overlay', 'et_builder' ),
'selector' => 'span.et_overlay',
),
'portfolio_item_title' => array(
'label' => esc_html__( 'Item Title', 'et_builder' ),
'selector' => '.meta h3',
),
'portfolio_meta' => array(
'label' => esc_html__( 'Meta', 'et_builder' ),
'selector' => '.meta p',
),
'portfolio_arrows' => array(
'label' => esc_html__( 'Navigation Arrows', 'et_builder' ),
'selector' => '.et-pb-slider-arrows a',
),
);
$this->fields_defaults = array(
'abmp_select_preset' => array( 'k0' ),
'show_title' => array( 'on' ),
'show_excerpt' => array( 'off' ),
'max_columns' => array( 5,4,3,2,1 ),
'show_date' => array( 'on' ),
'background_layout' => array( 'light' ),
'auto' => array( 'off' ),
'auto_speed' => array( '7000' ),
);
}
function get_fields() {
$fields = array(
'title' => array(
'label' => esc_html__( 'Portfolio Title', 'et_builder' ),
'type' => 'text',
'option_category' => 'basic_option',
'description' => esc_html__( 'Title displayed above the portfolio.', 'et_builder' ),
),
'abmp_select_preset' => array(
'label' => esc_html__( 'Select Preset', $this->plugin_name ),
'type' => 'select',
'option_category' => 'configuration',
'options' => $this->presets,
'description' => esc_html__( 'Choose your presets for this module.', $this->plugin_name ),
'computed_affects' => array(
'__projects',
),
),
'max_columns' => array(
'label' => esc_html__( 'Display Max Columns', $this->plugin_name ),
'type' => 'text',
'option_category' => 'configuration',
'description' => esc_html__( 'Comma Separated Valuse for responsive breakpoints: 1600|1024|768|480|320. This will affect the number of columns per row.', $this->plugin_name )
),
'posts_number' => array(
'label' => esc_html__( 'Posts Number', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'description' => esc_html__( 'Control how many projects are displayed. Leave blank or use 0 to not limit the amount.', 'et_builder' )
),
'show_title' => array(
'label' => esc_html__( 'Show Title', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Turn project titles on or off.', 'et_builder' ),
),
'show_excerpt' => array(//mb
'label' => esc_html__( 'Show Excerpt', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Turn display excerpt on or off.', 'et_builder' ),
),
'show_date' => array(
'label' => esc_html__( 'Show Date', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'description' => esc_html__( 'Turn the date display on or off.', 'et_builder' ),
),
'background_layout' => array(
'label' => esc_html__( 'Text Color', 'et_builder' ),
'type' => 'select',
'option_category' => 'color_option',
'options' => array(
'light' => esc_html__( 'Dark', 'et_builder' ),
'dark' => esc_html__( 'Light', 'et_builder' ),
),
'description' => esc_html__( 'Here you can choose whether your text should be light or dark. If you are working with a dark background, then your text should be light. If your background is light, then your text should be set to dark.', 'et_builder' ),
),
'auto' => array(
'label' => esc_html__( 'Automatic Carousel Rotation', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'off' => esc_html__( 'Off', 'et_builder' ),
'on' => esc_html__( 'On', 'et_builder' ),
),
'affects' => array(
'auto_speed',
),
'depends_show_if' => 'on',
'description' => esc_html__( 'If you the carousel layout option is chosen and you would like the carousel to slide automatically, without the visitor having to click the next button, enable this option and then adjust the rotation speed below if desired.', 'et_builder' ),
),
'auto_speed' => array(
'label' => esc_html__( 'Automatic Carousel Rotation Speed (in ms)', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'depends_default' => true,
'description' => esc_html__( "Here you can designate how fast the carousel rotates, if 'Automatic Carousel Rotation' option is enabled above. The higher the number the longer the pause between each rotation. (Ex. 1000 = 1 sec)", 'et_builder' ),
),
'zoom_icon_color' => array(
'label' => esc_html__( 'Zoom Icon Color', 'et_builder' ),
'type' => 'color',
'custom_color' => true,
'tab_slug' => 'advanced',
),
'hover_overlay_color' => array(
'label' => esc_html__( 'Hover Overlay Color', 'et_builder' ),
'type' => 'color-alpha',
'custom_color' => true,
'tab_slug' => 'advanced',
),
'hover_icon' => array(
'label' => esc_html__( 'Hover Icon Picker', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'class' => array( 'et-pb-font-icon' ),
'renderer' => 'et_pb_get_font_icon_list',
'renderer_with_field' => true,
'tab_slug' => 'advanced',
),
'disabled_on' => array(
'label' => esc_html__( 'Disable on', 'et_builder' ),
'type' => 'multiple_checkboxes',
'options' => array(
'phone' => esc_html__( 'Phone', 'et_builder' ),
'tablet' => esc_html__( 'Tablet', 'et_builder' ),
'desktop' => esc_html__( 'Desktop', 'et_builder' ),
),
'additional_att' => 'disable_on',
'option_category' => 'configuration',
'description' => esc_html__( 'This will disable the module on selected devices', 'et_builder' ),
),
'admin_label' => array(
'label' => esc_html__( 'Admin Label', 'et_builder' ),
'type' => 'text',
'description' => esc_html__( 'This will change the label of the module in the builder for easy identification.', 'et_builder' ),
),
'module_id' => array(
'label' => esc_html__( 'CSS ID', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'tab_slug' => 'custom_css',
'option_class' => 'et_pb_custom_css_regular',
),
'module_class' => array(
'label' => esc_html__( 'CSS Class', 'et_builder' ),
'type' => 'text',
'option_category' => 'configuration',
'tab_slug' => 'custom_css',
'option_class' => 'et_pb_custom_css_regular',
),
'__projects' => array(
'type' => 'computed',
'computed_callback' => array( 'ET_Builder_Module_Fullwidth_Portfolio', 'get_portfolio_item' ),
'computed_depends_on' => array(
'posts_number',
),
),
);
return $fields;
}
/**
* Get portfolio objects for portfolio module
*
* @param array arguments that affect et_pb_portfolio query
* @param array passed conditional tag for update process
* @param array passed current page params
* @return array portfolio item data
*/
static function get_portfolio_item( $args = array(), $conditional_tags = array(), $current_page = array() ) {
$defaults = array(
'posts_number' => '',
'include_categories' => '',
);
$args = wp_parse_args( $args, $defaults );
$query_args = array(
'post_type' => $args['abmp_post_type'],
'post_status' => 'publish',
'order' => $args['ambp_order'],
'order_by' => $args['abmp_orderby']
);
if ( is_numeric( $args['posts_number'] ) && $args['posts_number'] > 0 ) {
$query_args['posts_per_page'] = $args['posts_number'];
} else {
$query_args['nopaging'] = true;
}
if ( '' !== $args['include_categories'] ) {
$query_args['tax_query'] = array(
array(
'taxonomy' => $args['abmp_taxonomy'],
'field' => 'id',
'terms' => explode( ',', $args['include_categories'] ),
'operator' => 'IN'
)
);
}
// Get portfolio query
$query = new WP_Query( $query_args );
// Format portfolio output, add supplementary data
$width = (int) apply_filters( 'et_pb_portfolio_image_width', 510 );
$height = (int) apply_filters( 'et_pb_portfolio_image_height', 382 );
if( $query->post_count > 0 ) {
$post_index = 0;
while ( $query->have_posts() ) {
$query->the_post();
// Get thumbnail
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), array( $width, $height ) );
if ( isset( $thumbnail[2] ) && isset( $thumbnail[1] ) ) {
$orientation = ( $thumbnail[2] > $thumbnail[1] ) ? 'portrait' : 'landscape';
} else {
$orientation = false;
}
$href = null;
//inspect meta
if ($args['href'] ) {
$href = get_post_meta( get_the_ID(), $args['href'], true );
}
// Append value to query post
$query->posts[ $post_index ]->post_permalink = $href ? $href : get_permalink();
$query->posts[ $post_index ]->post_thumbnail = isset( $thumbnail[0] ) ? $thumbnail[0] : false;
$query->posts[ $post_index ]->post_thumbnail_orientation = $orientation;
$query->posts[ $post_index ]->post_date_readable = get_the_date();
$query->posts[ $post_index ]->post_class_name = get_post_class( 'et_pb_portfolio_item et_pb_grid_item acme_portfolio_item' );
$post_index++;
}
}
wp_reset_postdata();
return $query;
}
function shortcode_callback( $atts, $content = null, $function_name ) {
$fullwidth = 'on';
$title = $this->shortcode_atts['title'];
$module_id = $this->shortcode_atts['module_id'];
$module_class = $this->shortcode_atts['module_class'];
$abmp_select_preset = $this->shortcode_atts['abmp_select_preset'];
$max_columns = $this->shortcode_atts['max_columns'];
$posts_number = $this->shortcode_atts['posts_number'];
$show_title = $this->shortcode_atts['show_title'];
$show_date = $this->shortcode_atts['show_date'];
$background_layout = $this->shortcode_atts['background_layout'];
$auto = $this->shortcode_atts['auto'];
$auto_speed = $this->shortcode_atts['auto_speed'];
$zoom_icon_color = $this->shortcode_atts['zoom_icon_color'];
$hover_overlay_color = $this->shortcode_atts['hover_overlay_color'];
$hover_icon = $this->shortcode_atts['hover_icon'];
$abmp_post_type = $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['post_type'];
$abmp_taxonomy = $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['taxonomy'];
$show_excerpt = $this->shortcode_atts['show_excerpt'];
$abmp_order =$this->abmp_options['abmp_preset'][ $abmp_select_preset ]['abmp_order'];
$abmp_orderby =$this->abmp_options['abmp_preset'][ $abmp_select_preset ]['abmp_orderby'];
$include_categories = implode(',',array_keys($this->abmp_options['abmp_preset'][$abmp_select_preset]['terms']));
$abmp_post_meta = $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['post_meta'];
$abmp_href = $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['href'];
//apply_filters('acme_debug',$this->abmp_options['abmp_preset'][$abmp_select_preset]['fw_style'],'Valore Indice preset');
$module_class = ET_Builder_Element::add_module_order_class( $module_class, $function_name );
if ( '' !== $zoom_icon_color ) {
ET_Builder_Element::set_style( $function_name, array(
'selector' => '%%order_class%% .et_overlay:before',
'declaration' => sprintf(
'color: %1$s !important;',
esc_html( $zoom_icon_color )
),
) );
}
if ( '' !== $hover_overlay_color ) {
ET_Builder_Element::set_style( $function_name, array(
'selector' => '%%order_class%% .et_overlay',
'declaration' => sprintf(
'background-color: %1$s;
border-color: %1$s;',
esc_html( $hover_overlay_color )
),
) );
}
$args = array();
if ( is_numeric( $posts_number ) && $posts_number > 0 ) {
$args['posts_per_page'] = $posts_number;
} else {
$args['nopaging'] = true;
}
if ( '' !== $include_categories ) {
$args['tax_query'] = array(
array(
'taxonomy' => 'project_category',
'field' => 'id',
'terms' => explode( ',', $include_categories ),
'operator' => 'IN'
)
);
}
$projects = self::get_portfolio_item( array(
'posts_number' => $posts_number,
'include_categories' => $include_categories,
'abmp_select_preset' => $abmp_select_preset,
'abmp_post_type' => $abmp_post_type,
'abmp_taxonomy' => $abmp_taxonomy,
'href' => $abmp_href,
'abmp_order' => $abmp_order,
'abmp_orderby' => $abmp_orderby
) );
// take some settings from standard portfolio module if acme style is set
// Set inline style
if ( '' !== $zoom_icon_color ) {
ET_Builder_Element::set_style( $function_name, array(
'selector' => '%%order_class%% .et_overlay:before',
'declaration' => sprintf(
'color: %1$s !important;',
esc_html( $zoom_icon_color )
),
) );
}
if ( '' !== $hover_overlay_color ) {
ET_Builder_Element::set_style( $function_name, array(
'selector' => '%%order_class%% .et_overlay',
'declaration' => sprintf(
'background-color: %1$s;
border-color: %1$s;',
esc_html( $hover_overlay_color )
),
) );
}
$data_icon = '' !== $hover_icon
? sprintf(
' data-icon="%1$s"',
esc_attr( et_pb_process_font_icon( $hover_icon ) )
)
: '';
$overlay = sprintf( '',
( '' !== $hover_icon ? ' et_pb_inline_icon' : '' ),
$data_icon
);
ob_start();
if( $projects->post_count > 0 ) {
while ( $projects->have_posts() ) {
$projects->the_post();
?>
post_class_name, 'et_pb_portfolio_item' );
/*if ( 'on' !== $fullwidth ) {
array_push( $post->post_class_name, 'et_pb_grid_item' );
}*/
?>
post_thumbnail ) { ?>
ID );
if($abmp_post_meta) {
if(is_array($all_meta)) {
//print_r( $all_meta );
foreach ( explode(',',$abmp_post_meta) as $meta ) {
echo sprintf( '
%2$s',
$meta,
$all_meta[$meta][0] );
}
}
}
?>
%8$s
%2$s
',
( 'on' === $fullwidth ? 'et_pb_fullwidth_portfolio_carousel' : 'et_pb_fullwidth_portfolio_grid clearfix' ),
$posts,
esc_attr( $class ),
( '' !== $module_id ? sprintf( ' id="%1$s"', esc_attr( $module_id ) ) : '' ),
( '' !== $module_class ? sprintf( ' %1$s', esc_attr( $module_class ) ) : '' ),
( '' !== $auto && in_array( $auto, array( 'on', 'off' ) ) ? esc_attr( $auto ) : 'off' ),
( '' !== $auto_speed && is_numeric( $auto_speed ) ? esc_attr( $auto_speed ) : '7000' ),
( '' !== $title ? sprintf( '%s
', esc_html( $title ) ) : '' ),
( '1' == $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['fw_style'] ? ' acme_carousel' : 'placeholder' ),
( '1' == $this->abmp_options['abmp_preset'][ $abmp_select_preset ]['fw_style'] ? 'acme_portfolio_items' : 'placeholder' ),
( $max_columns )
);
return $output;
}
}