'' ];
//list all Albums
$wp_query_params = array(
'posts_per_page' => -1,
'no_found_rows' => true,
'post_type' => defined( 'A13FRAMEWORK_CUSTOM_POST_TYPE_ALBUM' ) ? A13FRAMEWORK_CUSTOM_POST_TYPE_ALBUM : 'album',
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'orderby' => 'date'
);
$r = new \WP_Query($wp_query_params);
if ($r->have_posts()){
while ($r->have_posts()){
$r->the_post();
$options[ get_the_ID() ] = __( 'Album', 'apollo13-framework-extensions' ) . ': '. get_the_title();
}
}
// Reset the global $the_post as this query will have stomped on it
wp_reset_postdata();
//list all Works
$wp_query_params = array(
'posts_per_page' => -1,
'no_found_rows' => true,
'post_type' => defined( 'A13FRAMEWORK_CUSTOM_POST_TYPE_WORK' ) ? A13FRAMEWORK_CUSTOM_POST_TYPE_WORK : 'work',
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'orderby' => 'date'
);
$r = new \WP_Query($wp_query_params);
if ($r->have_posts()){
while ($r->have_posts()){
$r->the_post();
$options[ get_the_ID() ] = __( 'Work', 'apollo13-framework-extensions' ) . ': '. get_the_title();
}
}
// Reset the global $the_post as this query will have stomped on it
wp_reset_postdata();
return $options;
}
protected function _register_controls() {
$this->start_controls_section(
'scroller_settings',
[
'label' => __( 'Settings', 'apollo13-framework-extensions' ),
]
);
/** @noinspection HtmlUnknownTarget */
$this->add_control(
'paid_only_description',
[
/* translators: %s: link to Rife Pro website */
'raw' => sprintf(__( 'This works only with the Rife Pro theme. The Rife Free theme will display slider instead.', 'apollo13-framework-extensions' ), esc_url( 'https://apollo13themes.com/rife/' ) ),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'elementor-descriptor',
]
);
$this->add_control(
'post_id',
[
'label' => __( 'Album/Work', 'apollo13-framework-extensions' ),
/* translators: %s: media type */
'description' => sprintf( esc_html__( 'Album or Work from which media(%s) should be taken.', 'apollo13-framework-extensions' ), esc_html__( 'images', 'apollo13-framework-extensions' ) ),
'type' => Controls_Manager::SELECT2,
'label_block' => true,
'default' => "",
'options' => $this->get_albums_works(),
]
);
$this->add_control(
'post_description',
[
/* translators: %s: media type */
'raw' => sprintf( esc_html__( 'You can edit the media(%s) used in the widget by editing selected Album or Work.', 'apollo13-framework-extensions' ), esc_html__( 'images', 'apollo13-framework-extensions' ) ),
'type' => Controls_Manager::RAW_HTML,
'content_classes' => 'elementor-descriptor',
]
);
$this->end_controls_section();
$this->start_controls_section(
'scroller_look',
[
'label' => __( 'Layout', 'apollo13-framework-extensions' ),
]
);
$this->add_control(
'window_high',
[
'label' => __( 'Stretch the slider to the window height', 'apollo13-framework-extensions' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
]
);
$this->add_control(
'ratio',
[
'label' => __( 'Aspect ratio', 'apollo13-framework-extensions' ),
'description' => __( 'Proportion of width to the height of the slider. Please enter as 2 numbers separated with "/". Example: 21/9. Takes effect when the slider is not stretched to the full height.', 'apollo13-framework-extensions' ),
'type' => Controls_Manager::TEXT,
'default' => '16/9',
'placeholder' => __( '16/9, 4/3, 21/9...', 'apollo13-framework-extensions' ),
'separator' => 'before',
]
);
$this->end_controls_section();
$this->start_controls_section(
'scroller_interface',
[
'label' => __( 'Interface', 'apollo13-framework-extensions' ),
]
);
$this->add_control(
'parallax',
[
'label' => __( 'Parallax', 'apollo13-framework-extensions' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
]
);
$this->add_control(
'effect',
[
'label' => __( 'Effect on not active elements', 'apollo13-framework-extensions' ),
'type' => Controls_Manager::SELECT,
'default' => 'off',
'options' => [
'off' => __( 'Disabled', 'apollo13-framework-extensions' ),
'opacity' => __( 'Opacity', 'apollo13-framework-extensions' ),
'scale-down' => __( 'Scale down', 'apollo13-framework-extensions' ),
'grayscale' => __( 'Grayscale', 'apollo13-framework-extensions' ),
'blur' => __( 'Blur', 'apollo13-framework-extensions' ),
],
]
);
$this->add_control(
'autoplay',
[
'label' => __( 'Autoplay', 'apollo13-framework-extensions' ),
'description' => __( '0 for no autoplay, any other positive number to set the number of seconds between "scrolls".', 'apollo13-framework-extensions' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 3,
'unit' => 's'
],
'range' => [
's' => [
'min' => 0,
'max' => 15,
'step' => 0.5,
],
],
'separator' => 'before',
]
);
$this->add_control(
'texts',
[
'label' => __( 'Show texts', 'apollo13-framework-extensions' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'separator' => 'before',
]
);
/** @noinspection HtmlUnknownTarget */
$this->add_control(
'socials',
[
'label' => __( 'Social icons', 'apollo13-framework-extensions' ),
/* translators: %s: linked plugin name */
'description' => sprintf(__( 'It requires the %s plugin.', 'apollo13-framework-extensions' ), 'AddToAny' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
$id = $settings['post_id'];
//without id
if ( $id === "" ) {
echo esc_html__( 'Please select proper album or work to use.', 'apollo13-framework-extensions' );
return;
}
//it doesn't contain items to use
$has_images = strlen( get_post_meta( $id, '_images_n_videos', true ) ) > 2; //2 => [] - empty array
if ( ! $has_images ) {
/* translators: %s: media type */
echo sprintf( esc_html__( 'Error: Selected post does not contain any media(%s) to use.', 'apollo13-framework-extensions' ), esc_html__( 'images', 'apollo13-framework-extensions' ) ) .' '. esc_html__( 'Please select proper album or work to use.', 'apollo13-framework-extensions' );
return;
}
$opts = [];
$opts['autoPlay'] = $settings['autoplay']['size'] * 1000;
$opts['a13ShowDesc'] = $settings['texts'] === 'yes';
$opts['a13WindowHigh'] = $settings['window_high'] === 'yes';
$opts['a13Socials'] = $settings['socials'] === 'yes';
$opts['a13Ratio'] = $settings['ratio'];
$opts['a13Parallax'] = $settings['parallax'] === 'yes';
$opts['a13Effect'] = $settings['effect'];
//check if such options are defined in parent post. If not don't set them so they will return to theme defaults
$test = strlen( get_post_meta( $id, '_scroller_wrap_around', true ) );
//other settings from parent album
if ( strlen( $test ) ) {
$opts['wrapAround'] = get_post_meta( $id, '_scroller_wrap_around', true ) === 'on';
$opts['contain'] = get_post_meta( $id, '_scroller_contain', true ) === 'on';
$opts['freeScroll'] = get_post_meta( $id, '_scroller_free_scroll', true ) === 'on';
$opts['prevNextButtons'] = get_post_meta( $id, '_scroller_arrows', true ) === 'on';
$opts['pageDots'] = get_post_meta( $id, '_scroller_dots', true ) === 'on';
$opts['a13CellWidth'] = get_post_meta( $id, '_scroller_cell_width', true );
$opts['a13CellWidthMobile'] = get_post_meta( $id, '_scroller_cell_width_mobile', true );
}
wp_enqueue_script('flickity');
if(function_exists('apollo13framework_make_scroller')) {
apollo13framework_make_scroller( $opts, $id );
}
}
}