PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.3.0
GenerateBlocks v1.3.0
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / includes / class-render-blocks.php
generateblocks / includes Last commit date
class-do-css.php 5 years ago class-enqueue-css.php 5 years ago class-plugin-update.php 5 years ago class-render-blocks.php 5 years ago class-rest.php 5 years ago class-settings.php 5 years ago dashboard.php 5 years ago defaults.php 5 years ago functions.php 5 years ago general.php 5 years ago generate-css.php 5 years ago
class-render-blocks.php
258 lines
1 <?php
2 /**
3 * This file handles the dynamic parts of our blocks.
4 *
5 * @package GenerateBlocks
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 /**
13 * Render the dynamic aspects of our blocks.
14 *
15 * @since 1.2.0
16 */
17 class GenerateBlocks_Render_Block {
18 /**
19 * Instance.
20 *
21 * @access private
22 * @var object Instance
23 * @since 1.2.0
24 */
25 private static $instance;
26
27 /**
28 * Initiator.
29 *
30 * @since 1.2.0
31 * @return object initialized object of class.
32 */
33 public static function get_instance() {
34 if ( ! isset( self::$instance ) ) {
35 self::$instance = new self();
36 }
37
38 return self::$instance;
39 }
40
41 /**
42 * Constructor.
43 */
44 public function __construct() {
45 add_action( 'init', array( $this, 'register_blocks' ) );
46 }
47
48 /**
49 * Register our dynamic blocks.
50 *
51 * @since 1.2.0
52 */
53 public function register_blocks() {
54 register_block_type(
55 'generateblocks/container',
56 array(
57 'render_callback' => array( $this, 'do_container_block' ),
58 )
59 );
60
61 register_block_type(
62 'generateblocks/grid',
63 array(
64 'render_callback' => array( $this, 'do_grid_block' ),
65 )
66 );
67
68 register_block_type(
69 'generateblocks/button-container',
70 array(
71 'render_callback' => array( $this, 'do_button_container' ),
72 )
73 );
74 }
75
76 /**
77 * Output the dynamic aspects of our Container block.
78 *
79 * @since 1.2.0
80 * @param array $attributes The block attributes.
81 * @param string $content The inner blocks.
82 */
83 public function do_container_block( $attributes, $content ) {
84 if ( ! isset( $attributes['isDynamic'] ) || ! $attributes['isDynamic'] ) {
85 return $content;
86 }
87
88 $defaults = generateblocks_get_block_defaults();
89
90 $settings = wp_parse_args(
91 $attributes,
92 $defaults['container']
93 );
94
95 $output = '';
96
97 if ( $settings['isGrid'] ) {
98 $gridItemClassNames = array(
99 'gb-grid-column',
100 'gb-grid-column-' . $settings['uniqueId'],
101 );
102
103 $output .= sprintf(
104 '<div %s>',
105 generateblocks_attr(
106 'grid-item',
107 array(
108 'class' => implode( ' ', $gridItemClassNames ),
109 ),
110 $settings
111 )
112 );
113 }
114
115 $classNames = array(
116 'gb-container',
117 'gb-container-' . $settings['uniqueId'],
118 );
119
120 if ( ! empty( $settings['className'] ) ) {
121 $classNames[] = $settings['className'];
122 }
123
124 if ( ! $settings['isGrid'] && ! empty( $settings['align'] ) ) {
125 $classNames[] = 'align' . $settings['align'];
126 }
127
128 $tagName = apply_filters( 'generateblocks_container_tagname', $settings['tagName'], $attributes );
129
130 $output .= sprintf(
131 '<%1$s %2$s>',
132 $tagName,
133 generateblocks_attr(
134 'container',
135 array(
136 'id' => isset( $settings['anchor'] ) ? $settings['anchor'] : null,
137 'class' => implode( ' ', $classNames ),
138 ),
139 $settings
140 )
141 );
142
143 $output = apply_filters( 'generateblocks_after_container_open', $output, $attributes );
144 $output .= '<div class="gb-inside-container">';
145 $output = apply_filters( 'generateblocks_inside_container', $output, $attributes );
146 $output .= $content;
147 $output .= '</div>';
148 $output = apply_filters( 'generateblocks_before_container_close', $output, $attributes );
149
150 $output .= sprintf(
151 '</%s>',
152 $tagName
153 );
154
155 if ( $settings['isGrid'] ) {
156 $output .= '</div>';
157 }
158
159 return $output;
160 }
161
162 /**
163 * Output the dynamic aspects of our Grid block.
164 *
165 * @since 1.2.0
166 * @param array $attributes The block attributes.
167 * @param string $content The inner blocks.
168 */
169 public function do_grid_block( $attributes, $content ) {
170 if ( ! isset( $attributes['isDynamic'] ) || ! $attributes['isDynamic'] ) {
171 return $content;
172 }
173
174 $defaults = generateblocks_get_block_defaults();
175
176 $settings = wp_parse_args(
177 $attributes,
178 $defaults['gridContainer']
179 );
180
181 $classNames = array(
182 'gb-grid-wrapper',
183 'gb-grid-wrapper-' . $settings['uniqueId'],
184 );
185
186 if ( ! empty( $settings['className'] ) ) {
187 $classNames[] = $settings['className'];
188 }
189
190 $output = sprintf(
191 '<div %s>',
192 generateblocks_attr(
193 'grid-wrapper',
194 array(
195 'id' => isset( $settings['anchor'] ) ? $settings['anchor'] : null,
196 'class' => implode( ' ', $classNames ),
197 ),
198 $settings
199 )
200 );
201
202 $output .= $content;
203
204 $output .= '</div>';
205
206 return $output;
207 }
208
209 /**
210 * Output the dynamic aspects of our Button Container block.
211 *
212 * @since 1.2.0
213 * @param array $attributes The block attributes.
214 * @param string $content The inner blocks.
215 */
216 public function do_button_container( $attributes, $content ) {
217 if ( ! isset( $attributes['isDynamic'] ) || ! $attributes['isDynamic'] ) {
218 return $content;
219 }
220
221 $defaults = generateblocks_get_block_defaults();
222
223 $settings = wp_parse_args(
224 $attributes,
225 $defaults['buttonContainer']
226 );
227
228 $classNames = array(
229 'gb-button-wrapper',
230 'gb-button-wrapper-' . $settings['uniqueId'],
231 );
232
233 if ( ! empty( $settings['className'] ) ) {
234 $classNames[] = $settings['className'];
235 }
236
237 $output = sprintf(
238 '<div %s>',
239 generateblocks_attr(
240 'button-container',
241 array(
242 'id' => isset( $settings['anchor'] ) ? $settings['anchor'] : null,
243 'class' => implode( ' ', $classNames ),
244 ),
245 $settings
246 )
247 );
248
249 $output .= $content;
250
251 $output .= '</div>';
252
253 return $output;
254 }
255 }
256
257 GenerateBlocks_Render_Block::get_instance();
258