PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.4.3
GenerateBlocks v1.4.3
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 4 years ago class-enqueue-css.php 4 years ago class-legacy-attributes.php 4 years ago class-plugin-update.php 5 years ago class-render-blocks.php 4 years ago class-rest.php 4 years ago class-settings.php 5 years ago dashboard.php 5 years ago defaults.php 4 years ago functions.php 4 years ago general.php 4 years ago generate-css.php 4 years ago
class-render-blocks.php
280 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 'title' => esc_html__( 'Container', 'generateblocks' ),
58 'render_callback' => array( $this, 'do_container_block' ),
59 'editor_script' => 'generateblocks',
60 'editor_style' => 'generateblocks',
61 )
62 );
63
64 register_block_type(
65 'generateblocks/grid',
66 array(
67 'title' => esc_html__( 'Grid', 'generateblocks' ),
68 'render_callback' => array( $this, 'do_grid_block' ),
69 )
70 );
71
72 register_block_type(
73 'generateblocks/button-container',
74 array(
75 'title' => esc_html__( 'Buttons', 'generateblocks' ),
76 'render_callback' => array( $this, 'do_button_container' ),
77 )
78 );
79 }
80
81 /**
82 * Output the dynamic aspects of our Container block.
83 *
84 * @since 1.2.0
85 * @param array $attributes The block attributes.
86 * @param string $content The inner blocks.
87 */
88 public function do_container_block( $attributes, $content ) {
89 if ( ! isset( $attributes['isDynamic'] ) || ! $attributes['isDynamic'] ) {
90 return $content;
91 }
92
93 $defaults = generateblocks_get_block_defaults();
94
95 $settings = wp_parse_args(
96 $attributes,
97 $defaults['container']
98 );
99
100 $output = '';
101
102 if ( $settings['isGrid'] ) {
103 $gridItemClassNames = array(
104 'gb-grid-column',
105 'gb-grid-column-' . $settings['uniqueId'],
106 );
107
108 $output .= sprintf(
109 '<div %s>',
110 generateblocks_attr(
111 'grid-item',
112 array(
113 'class' => implode( ' ', $gridItemClassNames ),
114 ),
115 $settings
116 )
117 );
118 }
119
120 $classNames = array(
121 'gb-container',
122 'gb-container-' . $settings['uniqueId'],
123 );
124
125 if ( ! empty( $settings['className'] ) ) {
126 $classNames[] = $settings['className'];
127 }
128
129 if ( ! $settings['isGrid'] && ! empty( $settings['align'] ) ) {
130 $classNames[] = 'align' . $settings['align'];
131 }
132
133 $tagName = apply_filters( 'generateblocks_container_tagname', $settings['tagName'], $attributes );
134
135 $allowedTagNames = apply_filters(
136 'generateblocks_container_allowed_tagnames',
137 array(
138 'div',
139 'section',
140 'header',
141 'footer',
142 'aside',
143 'a',
144 ),
145 $attributes
146 );
147
148 if ( ! in_array( $tagName, $allowedTagNames ) ) {
149 $tagName = 'div';
150 }
151
152 $output .= sprintf(
153 '<%1$s %2$s>',
154 $tagName,
155 generateblocks_attr(
156 'container',
157 array(
158 'id' => isset( $settings['anchor'] ) ? $settings['anchor'] : null,
159 'class' => implode( ' ', $classNames ),
160 ),
161 $settings
162 )
163 );
164
165 $output = apply_filters( 'generateblocks_after_container_open', $output, $attributes );
166 $output .= '<div class="gb-inside-container">';
167 $output = apply_filters( 'generateblocks_inside_container', $output, $attributes );
168 $output .= $content;
169 $output .= '</div>';
170 $output = apply_filters( 'generateblocks_before_container_close', $output, $attributes );
171
172 $output .= sprintf(
173 '</%s>',
174 $tagName
175 );
176
177 if ( $settings['isGrid'] ) {
178 $output .= '</div>';
179 }
180
181 return $output;
182 }
183
184 /**
185 * Output the dynamic aspects of our Grid block.
186 *
187 * @since 1.2.0
188 * @param array $attributes The block attributes.
189 * @param string $content The inner blocks.
190 */
191 public function do_grid_block( $attributes, $content ) {
192 if ( ! isset( $attributes['isDynamic'] ) || ! $attributes['isDynamic'] ) {
193 return $content;
194 }
195
196 $defaults = generateblocks_get_block_defaults();
197
198 $settings = wp_parse_args(
199 $attributes,
200 $defaults['gridContainer']
201 );
202
203 $classNames = array(
204 'gb-grid-wrapper',
205 'gb-grid-wrapper-' . $settings['uniqueId'],
206 );
207
208 if ( ! empty( $settings['className'] ) ) {
209 $classNames[] = $settings['className'];
210 }
211
212 $output = sprintf(
213 '<div %s>',
214 generateblocks_attr(
215 'grid-wrapper',
216 array(
217 'id' => isset( $settings['anchor'] ) ? $settings['anchor'] : null,
218 'class' => implode( ' ', $classNames ),
219 ),
220 $settings
221 )
222 );
223
224 $output .= $content;
225
226 $output .= '</div>';
227
228 return $output;
229 }
230
231 /**
232 * Output the dynamic aspects of our Button Container block.
233 *
234 * @since 1.2.0
235 * @param array $attributes The block attributes.
236 * @param string $content The inner blocks.
237 */
238 public function do_button_container( $attributes, $content ) {
239 if ( ! isset( $attributes['isDynamic'] ) || ! $attributes['isDynamic'] ) {
240 return $content;
241 }
242
243 $defaults = generateblocks_get_block_defaults();
244
245 $settings = wp_parse_args(
246 $attributes,
247 $defaults['buttonContainer']
248 );
249
250 $classNames = array(
251 'gb-button-wrapper',
252 'gb-button-wrapper-' . $settings['uniqueId'],
253 );
254
255 if ( ! empty( $settings['className'] ) ) {
256 $classNames[] = $settings['className'];
257 }
258
259 $output = sprintf(
260 '<div %s>',
261 generateblocks_attr(
262 'button-container',
263 array(
264 'id' => isset( $settings['anchor'] ) ? $settings['anchor'] : null,
265 'class' => implode( ' ', $classNames ),
266 ),
267 $settings
268 )
269 );
270
271 $output .= $content;
272
273 $output .= '</div>';
274
275 return $output;
276 }
277 }
278
279 GenerateBlocks_Render_Block::get_instance();
280