PluginProbe
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News / 4.0.8
Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News v4.0.8
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 2.3.5 2.3.6 2.4.0 2.4.1 2.4.10 2.4.11 2.4.12 2.4.13 2.4.14 2.4.15 2.4.16 2.4.17 2.4.18 2.4.19 2.4.2 2.4.20 2.4.21 All 88 releases
post-carousel / blocks / includes / post-timeline-two / Post_Timeline_Two.php

Post_Timeline_Two.php in Smart Post – Post Grid, Post Carousel, Post Slider Gutenberg Blocks for Blog & News 4.0.8, at blocks/includes/post-timeline-two/Post_Timeline_Two.php

127 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Timeline two block class for Smart Post Show Blocks.
4 *
5 * @package Smart_Post_Show_Pro
6 * @subpackage Smart_Post_Show_Pro/blocks/includes
7 */
8
9 namespace SmartPostShow\Blocks;
10
11 use SmartPostShow\Blocks\Helper;
12
13 use SmartPostShow\Blocks\Block_Base;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * Post_Timeline_Two
21 */
22 class Post_Timeline_Two extends Block_Base {
23 /**
24 * Set_block_properties
25 *
26 * @return void
27 */
28 protected function set_block_properties() {
29 $this->block_name = 'post-timeline-two';
30 $this->scripts = array( 'sp_smart_post_blocks_script_js' );
31 $this->styles = array( 'sp_smart_post_blocks_css', 'sp_smart_post_blocks_social_icons_style', 'sp_smart_post_blocks_google_fonts' );
32 $this->editor_scripts = array( 'sp_smart_post_blocks_index_js' );
33 $this->editor_styles = array( 'sp_smart_post_blocks_editor_style' );
34 $this->keywords = array( 'Smart post', 'Live Filter', 'Pagination', 'Ajax Live Filter' );
35 }
36
37 /**
38 * Render the Post Timeline Two block.
39 *
40 * @param array $attributes Block attributes.
41 * @param string $content Block content.
42 * @param array $blocks Inner blocks.
43 * @return string Rendered HTML output.
44 */
45 public function render_block( $attributes, $content = '', $blocks = array() ) {
46 if ( Helper::is_editor_page() ) {
47 return $content;
48 }
49
50 $attributes['page_id'] = get_the_ID();
51 unset(
52 $attributes['dynamicCss'],
53 $attributes['fontListsEditPage'],
54 $attributes['fontLists']
55 );
56
57 $unique_id = $attributes['uniqueId'] ?? '';
58 $sp_block_id = $attributes['spBlockId'] ?? ''; // Not changeable id.
59 $align = $attributes['align'] ?? '';
60 $layout = $attributes['timelineLayout'] ?? '';
61 $block_name = $attributes['blockName'] ?? '';
62 $sp_user_additional_class = $attributes['additionalCssClass'] ?? '';
63 $orientation = $attributes['contentOrientation'] ?? 'orientation_one';
64 $image_position = $attributes['imagePosition'] ?? 'top';
65
66 $preloader_enable = $attributes['preloaderEnable'] ?? false;
67 $preloader_svg = SP_PC_URL . 'public/assets/img/preloader.svg';
68 $post_not_found = ! empty( $attributes['noResultFoundResult'] ) ? $attributes['noResultFoundResult'] : 'No post found';
69
70 $category_position = $attributes['catTabCategoryPosition'] ?? '';
71
72 $query_attr = ( ! empty( $attributes['postQuery'] ) && isset( $attributes['postQuery'] ) ) ? (array) json_decode( $attributes['postQuery'] ) : $attributes;
73
74 $post_query = $this->get_cached_post_query_result( $query_attr, $unique_id, $sp_block_id );
75 $total_pages = $post_query[1];
76 $post_query = $post_query[0];
77 $align_class = isset( $align ) ? 'align' . $align : '';
78
79 $query_attr = wp_json_encode( $query_attr );
80 $block_location = $attributes['blockLocation'] ?? '';
81 $pagination_type = $attributes['paginationTypeParent'] ?? '';
82 $pagination_position = $attributes['paginationPosition'] ?? 'bottom';
83
84 $pagination_class = 'sp-smart-post-block-with-pagination pagination-' . ( 'navigation' === $pagination_type ? $pagination_position : 'bottom' );
85
86 ob_start();
87 ?>
88 <div class="<?php echo esc_attr( $align_class ); ?>">
89 <div id="<?php echo esc_attr( $unique_id ); ?>" class="sp-smart-post-wrapper smart-post-timeline-two sp-smart-<?php echo esc_attr( $block_name ); ?> <?php echo esc_attr( $sp_user_additional_class ); ?> <?php echo esc_attr( $pagination_class ); ?>" data-query='<?php echo esc_attr( $query_attr ); ?>' data-blockid="<?php echo esc_attr( $sp_block_id ); ?>" data-pageid="<?php echo esc_attr( $attributes['page_id'] ); ?>" data-location="<?php echo esc_attr( $block_location ); ?>">
90 <div class="sp-smart-post-show-pro-pre-query">
91 <?php
92 if ( empty( $post_query ) ) {
93 Template_Part::no_posts_found_text( $post_not_found );}
94 Template_Part::preloader_front( $preloader_enable, $preloader_svg );
95 ?>
96 </div>
97 <div class="post-timeline-two smart-post-timeline-two sp-smart-post-show-scroll-wrapper img-position-<?php echo esc_attr( $image_position ); ?> <?php echo esc_attr( $orientation . ' ' . $layout ); ?> sp-cat-position-<?php echo esc_attr( $category_position ); ?>" id="<?php echo esc_attr( $unique_id ); ?>">
98 <div class="sp-smart-post-timeline-container sp-smart-post-background-layout <?php echo esc_attr( $layout ); ?> sp-smart-post-items">
99 <?php
100 Template::post_timeline_two( $attributes, $post_query );
101 ?>
102 </div>
103 </div>
104 <?php
105 // Pagination.
106 if ( $attributes['paginationEnable'] && $total_pages > 1 && ! empty( $blocks->inner_blocks ) ) {
107 $pagination_attributes = Template::pagination_attributes( $blocks );
108 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- The HTML output is already properly escaped at the time of generation, so additional escaping is not required here.
109 echo Template_Part::pagination_html( $pagination_attributes, $query_attr, $total_pages, $unique_id );
110 }
111 // Moved modal rendering to footer.
112 add_action(
113 'wp_footer',
114 function () use ( $attributes, $post_query ) {
115 Template_Part::modal_lightbox( $attributes, $post_query );
116 },
117 20
118 );
119 ?>
120 </div>
121 </div>
122
123 <?php
124 return ob_get_clean();
125 }
126 }
127