PluginProbe ʕ •ᴥ•ʔ
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid / 7.7.0
The Post Grid – Shortcode, Gutenberg Blocks and Elementor Addon for Post Grid v7.7.0
7.9.3 7.9.2 trunk 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.2.0 4.2.1 4.2.2 4.2.3 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 6.0.0 7.0.0 7.0.1 7.0.2 7.1.0 7.2.0 7.2.1 7.2.10 7.2.11 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 7.2.9 7.3.0 7.3.1 7.4.0 7.4.1 7.4.2 7.4.3 7.5.0 7.6.0 7.6.1 7.7.0 7.7.1 7.7.10 7.7.11 7.7.12 7.7.13 7.7.14 7.7.15 7.7.16 7.7.17 7.7.18 7.7.19 7.7.2 7.7.20 7.7.21 7.7.22 7.7.3 7.7.4 7.7.5 7.7.6 7.7.7 7.7.8 7.7.9 7.8.0 7.8.1 7.8.2 7.8.3 7.8.4 7.8.5 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1
the-post-grid / app / Controllers / Blocks / GridHoverLayout.php
the-post-grid / app / Controllers / Blocks Last commit date
BlockController 2 years ago BlockBase.php 2 years ago GridHoverLayout.php 2 years ago GridLayout.php 2 years ago ListLayout.php 2 years ago RttpgRow.php 2 years ago SectionTitle.php 2 years ago
GridHoverLayout.php
205 lines
1 <?php
2
3 namespace RT\ThePostGrid\Controllers\Blocks;
4
5 use RT\ThePostGrid\Controllers\Blocks\BlockController\SettingsTabController;
6 use RT\ThePostGrid\Controllers\Blocks\BlockController\StyleTabController;
7 use RT\ThePostGrid\Controllers\Blocks\BlockController\ContentTabController;
8 use RT\ThePostGrid\Helpers\Fns;
9
10 class GridHoverLayout extends BlockBase {
11
12 private $prefix;
13 private $attribute_args;
14 private $block_type;
15
16 public function __construct() {
17 add_action( 'init', [ $this, 'register_blocks' ] );
18 $this->prefix = 'grid_hover';
19 $this->block_type = 'rttpg/tpg-grid-hover-layout';
20 $this->attribute_args = [
21 'prefix' => $this->prefix,
22 'default_layout' => 'grid_hover-layout1',
23 ];
24 }
25
26 /**
27 * Register Block
28 *
29 * @return void
30 */
31 public function register_blocks() {
32 if ( ! function_exists( 'register_block_type' ) ) {
33 return;
34 }
35 register_block_type(
36 $this->block_type,
37 [
38 'attributes' => $this->get_attributes(),
39 'render_callback' => [ $this, 'render_block' ],
40 ]
41 );
42 }
43
44 /**
45 * Get attributes
46 *
47 * @param bool $default
48 *
49 * @return array
50 */
51 public function get_attributes() {
52
53 /**
54 * All Attribute
55 * Content Tab | Settings Tab | Style Tab
56 */
57 $content_attribute = ContentTabController::get_controller( $this->attribute_args );
58 $settings_attribute = SettingsTabController::get_controller();
59 $style_attribute = StyleTabController::get_controller();
60
61 return array_merge( $content_attribute, $settings_attribute, $style_attribute );
62 }
63
64 /**
65 * @param array $data
66 *
67 * @return false|string
68 */
69 public function render_block( $data ) {
70
71 $this->get_script_depends( $data );
72
73 $_prefix = $data['prefix'];
74
75 if ( ! rtTPG()->hasPro() && ! in_array(
76 $data[ $_prefix . '_layout' ],
77 [
78 'grid_hover-layout1',
79 'grid_hover-layout2',
80 'grid_hover-layout3',
81 ],
82 true
83 ) ) {
84 $data[ $_prefix . '_layout' ] = 'grid_hover-layout1';
85 }
86
87 // Query.
88 $query_args = $this->post_query_guten( $data, $_prefix );
89 $query = new \WP_Query( $query_args );
90 $rand = wp_rand();
91 $layoutID = 'rt-tpg-container-' . $rand;
92 $posts_per_page = $data['display_per_page'] ?: $data['post_limit'];
93
94 /**
95 * TODO: Get Post Data for render post
96 */
97
98 $post_data = Fns::get_render_data_set( $data, $query->max_num_pages, $posts_per_page, $_prefix, 'yes' );
99
100 // Category Source if exists
101 if ( isset( $data['category_source'] ) ) {
102 $post_data[ $data['post_type'] . '_taxonomy' ] = $data['category_source'];
103 }
104 // Tag source
105 if ( isset( $data['tag_source'] ) ) {
106 $post_data[ $data['post_type'] . '_tags' ] = $data['tag_source'];
107 }
108
109 $template_path = Fns::tpg_template_path( $post_data, 'gutenberg' );
110 $_layout = $data[ $_prefix . '_layout' ];
111 $dynamicClass = Fns::get_dynamic_class_gutenberg( $data );
112
113 /**
114 * Post type render
115 */
116 ob_start();
117 ?>
118 <div class="<?php echo esc_attr( $dynamicClass ); ?>">
119 <div class="rt-container-fluid rt-tpg-container tpg-el-main-wrapper clearfix <?php echo esc_attr( $_layout . '-main' ); ?>"
120 id="<?php echo esc_attr( $layoutID ); ?>"
121 data-layout="<?php echo esc_attr( $data[ $_prefix . '_layout' ] ); ?>"
122 data-grid-style="<?php echo esc_attr( $data['grid_layout_style'] ); ?>" data-sc-id="elementor"
123 data-el-settings='<?php echo Fns::is_filter_enable( $data ) ? esc_attr( htmlspecialchars( wp_json_encode( $post_data ) ) ) : ''; ?>'
124 data-el-query='<?php echo Fns::is_filter_enable( $data ) ? esc_attr( htmlspecialchars( wp_json_encode( $query_args ) ) ) : ''; ?>'
125 data-el-path='<?php echo Fns::is_filter_enable( $data ) ? esc_attr( $template_path ) : ''; ?>'>
126 <?php
127
128 $settings = get_option( rtTPG()->options['settings'] );
129 if ( isset( $settings['tpg_load_script'] ) || isset( $settings['tpg_enable_preloader'] ) ) {
130 ?>
131 <div id="bottom-script-loader" class="bottom-script-loader">
132 <div class="rt-ball-clip-rotate">
133 <div></div>
134 </div>
135 </div>
136 <?php
137 }
138
139 $wrapper_class = [];
140 if ( in_array(
141 $_layout,
142 [
143 'grid_hover-layout6',
144 'grid_hover-layout7',
145 'grid_hover-layout8',
146 'grid_hover-layout9',
147 'grid_hover-layout10',
148 'grid_hover-layout11',
149 'grid_hover-layout5-2',
150 'grid_hover-layout6-2',
151 'grid_hover-layout7-2',
152 'grid_hover-layout9-2',
153 ]
154 ) ) {
155 $wrapper_class[] = 'grid_hover-layout5';
156 }
157 $wrapper_class[] = str_replace( '-2', null, $_layout );
158 $wrapper_class[] = 'tpg-even grid-behaviour';
159 $wrapper_class[] = $_prefix . '_layout_wrapper';
160
161 // section title settings
162 $is_carousel = '';
163 if ( rtTPG()->hasPro() && 'carousel' == $data['filter_btn_style'] && 'button' == $data['filter_type'] ) {
164 $is_carousel = 'carousel';
165 }
166 ?>
167 <div class='tpg-header-wrapper <?php echo esc_attr( $is_carousel ); ?>'>
168 <?php
169 Fns::get_section_title( $data );
170 Fns::print_html( Fns::get_frontend_filter_markup( $data, true ) );
171 ?>
172 </div>
173 <div class="rt-row rt-content-loader gutenberg-inner <?php echo esc_attr( implode( ' ', $wrapper_class ) ); ?>">
174 <?php
175 if ( $query->have_posts() ) {
176 $pCount = 1;
177 while ( $query->have_posts() ) {
178 $query->the_post();
179 set_query_var( 'tpg_post_count', $pCount );
180 set_query_var( 'tpg_total_posts', $query->post_count );
181 Fns::tpg_template( $post_data, 'gutenberg' );
182 $pCount++;
183 }
184 } else {
185 if ( $data['no_posts_found_text'] ) {
186 printf( "<div class='no_posts_found_text'>%s</div>", esc_html( $data['no_posts_found_text'] ) );
187 } else {
188 printf( "<div class='no_posts_found_text'>%s</div>", esc_html__( 'No post found', 'the-post-grid' ) );
189 }
190 }
191 wp_reset_postdata();
192 ?>
193 </div>
194
195 <?php Fns::print_html( Fns::get_pagination_markup( $query, $data ) ); ?>
196
197 </div>
198 </div>
199 <?php
200
201 do_action( 'tpg_elementor_script' );
202
203 return ob_get_clean();
204 }
205 }