PluginProbe
Gutenify – Visual Site Builder Blocks & Starter Templates / 1.0.3
Gutenify – Visual Site Builder Blocks & Starter Templates v1.0.3
1.9.0 1.8.0 1.7.0 1.6.6 1.6.5 1.6.4 trunk 0.0.1 0.0.2 0.0.3 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 All 74 releases
gutenify / inc / class-block-assets.php

class-block-assets.php in Gutenify – Visual Site Builder Blocks & Starter Templates 1.0.3, at inc/class-block-assets.php

502 lines 14.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Load assets for our blocks.
4 *
5 * @package Gutenify
6 */
7
8 // Exit if accessed directly.
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 /**
14 * Load general assets for our blocks.
15 *
16 * @since 1.0.0
17 */
18 class Gutenify_Block_Assets {
19 /**
20 * This plugin's instance.
21 *
22 * @var Gutenify_Block_Assets
23 */
24 private static $instance;
25
26 /**
27 * Registers the plugin.
28 *
29 * @return Gutenify_Block_Assets
30 */
31 public static function register() {
32 if ( null === self::$instance ) {
33 self::$instance = new Gutenify_Block_Assets();
34 }
35
36 return self::$instance;
37 }
38
39 /**
40 * The Constructor.
41 */
42 public function __construct() {
43 add_action( 'enqueue_block_assets', array( $this, 'block_assets' ) );
44 add_action( 'init', array( $this, 'editor_assets' ) );
45 add_action( 'wp_enqueue_scripts', array( $this, 'add_block_inline_css' ), 200 );
46 add_action( 'admin_footer', array( $this, 'add_admin_global_inline_css' ), 200 );
47 add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts' ), 9 );
48 add_action( 'enqueue_block_editor_assets', array( $this, 'editor_scripts' ) );
49 add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
50 }
51
52 /**
53 * Loads the asset file for the given script or style.
54 * Returns a default if the asset file is not found.
55 *
56 * @param string $filepath The name of the file without the extension.
57 *
58 * @return array The asset file contents.
59 */
60 public function get_asset_file( $filepath ) {
61 $asset_path = GUTENIFY_PLUGIN_DIR . $filepath . '.asset.php';
62
63 return file_exists( $asset_path )
64 ? include $asset_path
65 : array(
66 'dependencies' => array(),
67 'version' => GUTENIFY_VERSION,
68 );
69 }
70
71 /**
72 * Enqueue block assets for use within Gutenberg.
73 *
74 * @access public
75 */
76 public function block_assets() {
77 if ( is_admin() ) {
78 return false;
79 }
80 global $post;
81
82 // Only load the front end CSS if a Gutenify is in use.
83 $has_gutenify = ! is_singular();
84
85 if ( ! is_admin() && is_singular() ) {
86 $wp_post = get_post( $post );
87
88 // This is similar to has_block() in core, but will match anything
89 // in the gutenify/* namespace.
90 if ( $wp_post instanceof WP_Post ) {
91 $has_gutenify = ! empty(
92 array_filter(
93 array(
94 false !== strpos( $wp_post->post_content, '<!-- wp:gutenify/' ),
95 has_block( 'core/block', $wp_post ),
96 has_block( 'core/button', $wp_post ),
97 has_block( 'core/cover', $wp_post ),
98 has_block( 'core/heading', $wp_post ),
99 has_block( 'core/image', $wp_post ),
100 has_block( 'core/gallery', $wp_post ),
101 has_block( 'core/list', $wp_post ),
102 has_block( 'core/paragraph', $wp_post ),
103 has_block( 'core/pullquote', $wp_post ),
104 has_block( 'core/quote', $wp_post ),
105 )
106 )
107 );
108 }
109 }
110
111 if ( ! $has_gutenify && ! $this->is_page_gutenberg() ) {
112 return;
113 }
114
115 $fonts_url = gutenify_fonts_url();
116 wp_enqueue_style( 'gutenify-fonts', $fonts_url, array(), null );
117
118 // Styles.
119 $name = 'gutenify-style';
120 $filepath = 'dist/' . $name;
121 $asset_file = $this->get_asset_file( $filepath );
122 $rtl = ! is_rtl() ? '' : '-rtl';
123
124 $deps = array( 'gutenify-fontawesome-style' );
125
126 if ( $fonts_url ) {
127 $deps[] = 'gutenify-fonts';
128 }
129
130 global $wp_styles;
131 if ( in_array( 'global-styles', $wp_styles->queue ) ) {
132 $deps[] = 'global-styles';
133 }
134 if ( in_array( 'woocommerce-layout', $wp_styles->queue ) ) {
135 $deps[] = 'woocommerce-layout';
136 }
137
138 wp_enqueue_style( 'gutenify-frontend', GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css', $deps, $asset_file['version'] );
139 }
140
141 /**
142 * Enqueue block assets for use within Gutenberg.
143 *
144 * @access public
145 */
146 public function editor_assets() {
147
148 // Styles.
149 $name = 'gutenify-editor';
150 $filepath = 'dist/' . $name;
151 $asset_file = $this->get_asset_file( $filepath );
152 $rtl = ! is_rtl() ? '' : '-rtl';
153
154 wp_register_style( 'gutenify-fontawesome-style', GUTENIFY_PLUGIN_URL . '/assets/fontawesome/css/all.css', array(), 'v4' );
155
156 $fonts_url = gutenify_fonts_url();
157 wp_enqueue_style( 'gutenify-fonts', $fonts_url, array(), null );
158
159 $deps = array( 'gutenify-fontawesome-style' );
160
161 if ( $fonts_url ) {
162 $deps[] = 'gutenify-fonts';
163 }
164
165 wp_register_style(
166 'gutenify-editor',
167 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
168 $deps,
169 $asset_file['version']
170 );
171
172 // Scripts.
173 $name = 'gutenify'; // gutenify.js.
174 $filepath = 'dist/' . $name;
175 $asset_file = $this->get_asset_file( $filepath );
176
177 wp_register_script(
178 'gutenify-editor',
179 GUTENIFY_PLUGIN_URL . $filepath . '.js',
180 array_merge( $asset_file['dependencies'], array( 'wp-api', 'gutenify-global' ) ),
181 $asset_file['version'],
182 true
183 );
184
185 $post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
186
187 wp_localize_script(
188 'gutenify-editor',
189 'gutenify_block_data',
190 array(
191 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
192 'site_url' => esc_url( site_url() ),
193 'settings_url' => esc_url( admin_url( 'edit.php?post_type=gutenify_template&page=gutenify-settings' ) ),
194 'add_template_url' => esc_url( admin_url( 'post-new.php?post_type=gutenify_template' ) ),
195 )
196 );
197
198 }
199
200 /**
201 * Enqueue front-end assets for blocks.
202 *
203 * @access public
204 * @since 1.9.5
205 */
206 public function frontend_scripts() {
207
208 // Scripts.
209 $name = 'swiper-bundle'; // swiper.js.
210 $filepath = 'assets/js/lib/' . $name;
211
212 wp_register_script(
213 'gutenify-swiper',
214 GUTENIFY_PLUGIN_URL . $filepath . '.js',
215 array( 'jquery' ),
216 '6.8.2',
217 false
218 );
219
220 // Scripts.
221 $name = 'gutenify-frontend'; // gutenify.js.
222 $filepath = 'dist/js/' . $name;
223 $asset_file = $this->get_asset_file( $filepath );
224
225 $deps = array( 'jquery', 'gutenify-swiper' );
226
227
228 // Enqueue for gutenify animations.
229 wp_enqueue_script(
230 'gutenify-frontend',
231 GUTENIFY_PLUGIN_URL . $filepath . '.js',
232 $deps,
233 GUTENIFY_VERSION,
234 false
235 );
236
237 // Styles.
238 $name = 'swiper-bundle.min'; // swiper.js.
239 $filepath = 'assets/css/lib/' . $name;
240 $asset_file = $this->get_asset_file( $filepath );
241 wp_enqueue_style(
242 'gutenify-swiper-style',
243 GUTENIFY_PLUGIN_URL . $filepath . '.css',
244 array(),
245 '6.8.2'
246 );
247
248 }
249
250 /**
251 * Enqueue editor scripts for blocks.
252 *
253 * @access public
254 * @since 1.9.5
255 */
256 public function editor_scripts() {
257 }
258
259 /**
260 * Return whether a post type should display the Block Editor.
261 *
262 * @param string $post_type The post_type slug to check.
263 */
264 protected function is_post_type_gutenberg( $post_type ) {
265 return use_block_editor_for_post_type( $post_type );
266 }
267
268 /**
269 * Return whether the page we are on is loading the Block Editor.
270 */
271 protected function is_page_gutenberg() {
272 if ( ! is_admin() ) {
273 return false;
274 }
275
276 $admin_page = wp_basename( esc_url( $_SERVER['REQUEST_URI'] ) );
277
278 if ( false !== strpos( $admin_page, 'post-new.php' ) && empty( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
279 return true;
280 }
281
282 if ( false !== strpos( $admin_page, 'post-new.php' ) && isset( $_GET['post_type'] ) && $this->is_post_type_gutenberg( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
283 return true;
284 }
285
286 if ( false !== strpos( $admin_page, 'post.php' ) ) {
287 $wp_post = get_post( $_GET['post'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
288 if ( isset( $wp_post ) && isset( $wp_post->post_type ) && $this->is_post_type_gutenberg( $wp_post->post_type ) ) {
289 return true;
290 }
291 }
292
293 if ( false !== strpos( $admin_page, 'revision.php' ) ) {
294 $wp_post = get_post( $_GET['revision'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
295 $post_parent = get_post( $wp_post->post_parent );
296 if ( isset( $post_parent ) && isset( $post_parent->post_type ) && $this->is_post_type_gutenberg( $post_parent->post_type ) ) {
297 return true;
298 }
299 }
300 return false;
301 }
302
303 /**
304 * Add inline css
305 *
306 * @return void
307 */
308 public static function add_block_inline_css() {
309 if ( is_singular() ) {
310 global $post;
311 // $style_file = trailingslashit( wp_upload_dir()['basedir'] ) . 'gutenify/styles/style-' . 'post-' . $post->ID . '.css';
312
313 // if ( file_exists( $style_file ) ) {
314 // $style_file_url = trailingslashit( wp_upload_dir()['baseurl'] ) . 'gutenify/styles/style-' . 'post-' . $post->ID . '.css';
315
316 // wp_enqueue_style( 'gutenify-frontend-post', $style_file_url, array( 'gutenify-frontend' ), GUTENIFY_VERSION );
317 // } else {
318 // }
319 $post_meta = get_post_meta( $post->ID );
320 $gutenify_custom_css = ! empty( $post_meta['gutenify_custom_css'][0] ) ? $post_meta['gutenify_custom_css'][0] : '';
321 wp_add_inline_style( 'gutenify-frontend', $gutenify_custom_css );
322 }
323 $gutenify_global_style = get_option( 'gutenify_global_style' );
324
325 $deps = array();
326 wp_register_style( 'gutenify-global-inline-handle', false, $deps );
327 wp_enqueue_style( 'gutenify-global-inline-handle' );
328
329 if ( $gutenify_global_style ) {
330 $handle = 'gutenify-global-inline-handle';
331 wp_add_inline_style( $handle, $gutenify_global_style );
332 }
333 }
334
335 /**
336 * Add Global inline css
337 *
338 * @return void
339 */
340 public static function add_admin_global_inline_css() {
341
342 $gutenify_admin_global_style = get_option( 'gutenify_admin_global_style' );
343 $deps = array( );
344 wp_register_style( 'gutenify-global-inline-handle', false, $deps );
345 wp_enqueue_style( 'gutenify-global-inline-handle' );
346
347 if ( $gutenify_admin_global_style ) {
348 wp_add_inline_style( 'gutenify-global-inline-handle', $gutenify_admin_global_style );
349 }
350 }
351
352 /**
353 * Admin scripts.
354 *
355 * @return mixed
356 */
357 public function admin_scripts() {
358 // Scripts.
359 $name = 'gutenify-global'; // gutenify.js.
360 $filepath = 'dist/' . $name;
361 $asset_file = $this->get_asset_file( $filepath );
362
363 // Enqueue for gutenify animations.
364 wp_register_script(
365 $name,
366 GUTENIFY_PLUGIN_URL . $filepath . '.js',
367 $asset_file['dependencies'],
368 $asset_file['version'],
369 true
370 );
371
372 // Site options
373 if ( ( ! empty( $_GET['page'] ) && 'gutenify-site-options' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
374 // Scripts.
375 $name = 'gutenify-site-options-admin'; // gutenify.js.
376 $filepath = 'dist/' . $name;
377 $asset_file = $this->get_asset_file( $filepath );
378
379 // Enqueue for gutenify animations.
380 wp_enqueue_script(
381 'gutenify-site-options-admin',
382 GUTENIFY_PLUGIN_URL . $filepath . '.js',
383 $asset_file['dependencies'],
384 $asset_file['version'],
385 true
386 );
387
388 // Styles.
389 $name = 'gutenify-site-options-admin-style';
390 $filepath = 'dist/' . $name;
391 $asset_file = $this->get_asset_file( $filepath );
392 $rtl = ! is_rtl() ? '' : '-rtl';
393
394 wp_enqueue_style(
395 $name,
396 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
397 array( 'gutenify-fontawesome-style', 'wp-components' ),
398 $asset_file['version']
399 );
400
401 wp_localize_script(
402 'gutenify-site-options-admin',
403 '_gutenify_site_options',
404 array(
405 'site_url' => esc_url( site_url() ),
406 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
407 'is_block_theme' => function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
408 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
409 )
410 );
411 }
412
413 // if ( ! empty( $_GET['post_type'] ) && 'gutenify_kit' === $_GET['post_type'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
414 if ( ! empty( $_GET['post_type'] ) && 'gutenify_template' === $_GET['post_type'] && ( ! empty( $_GET['page'] ) && 'gutenify-template-kits' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
415 // Scripts.
416 $name = 'gutenify-kit-admin'; // gutenify.js.
417 $filepath = 'dist/' . $name;
418 $asset_file = $this->get_asset_file( $filepath );
419
420 // Enqueue for gutenify animations.
421 wp_enqueue_script(
422 'gutenify-kit-admin',
423 GUTENIFY_PLUGIN_URL . $filepath . '.js',
424 $asset_file['dependencies'],
425 $asset_file['version'],
426 true
427 );
428
429 // Styles.
430 $name = 'gutenify-kit-admin-style';
431 $filepath = 'dist/' . $name;
432 $asset_file = $this->get_asset_file( $filepath );
433 $rtl = ! is_rtl() ? '' : '-rtl';
434
435 wp_enqueue_style(
436 $name,
437 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
438 array( 'gutenify-fontawesome-style', 'wp-components' ),
439 $asset_file['version']
440 );
441
442 wp_localize_script(
443 'gutenify-kit-admin',
444 '_gutenify_kit',
445 array(
446 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
447 'site_url' => esc_url( site_url() ),
448 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
449 'is_block_theme' => function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
450 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
451 )
452 );
453 }
454
455 if ( empty( $_GET['post_type'] ) || empty( 'page' ) || 'gutenify_template' !== $_GET['post_type'] || ( ! empty( $_GET['page'] ) && 'gutenify-settings' !== $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
456 return false;
457 }
458 // Scripts.
459 $name = 'gutenify-admin-settings'; // gutenify.js.
460 $filepath = 'dist/' . $name;
461 $asset_file = $this->get_asset_file( $filepath );
462
463 $asset_file['dependencies'][] = 'gutenify-global';
464
465 // Enqueue for gutenify animations.
466 wp_enqueue_script(
467 'gutenify-admin-settings',
468 GUTENIFY_PLUGIN_URL . $filepath . '.js',
469 $asset_file['dependencies'],
470 $asset_file['version'],
471 true
472 );
473
474 wp_localize_script(
475 'gutenify-admin-settings',
476 '_gutenify',
477 array(
478 'site_url' => esc_url( site_url() ),
479 'pro_account_url' => esc_url( admin_url( 'edit.php?post_type=gutenify_template&page=gutenify-pro-license' ) ),
480 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
481 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
482 'font_families' => gutenify_font_families(),
483 )
484 );
485
486 // Styles.
487 $name = 'gutenify-admin-settings-style';
488 $filepath = 'dist/' . $name;
489 $asset_file = $this->get_asset_file( $filepath );
490 $rtl = ! is_rtl() ? '' : '-rtl';
491
492 wp_enqueue_style(
493 $name,
494 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
495 array( 'gutenify-fontawesome-style', 'wp-components' ),
496 $asset_file['version']
497 );
498 }
499 }
500
501 Gutenify_Block_Assets::register();
502