PluginProbe
Gutenify – Visual Site Builder Blocks & Starter Templates / 1.0.6
Gutenify – Visual Site Builder Blocks & Starter Templates v1.0.6
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.6, at inc/class-block-assets.php

530 lines 15.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 // Styles.
141 $name = 'gutenify-theme-style';
142 $filepath = 'dist/' . $name;
143 $asset_file = $this->get_asset_file( $filepath );
144 $rtl = ! is_rtl() ? '' : '-rtl';
145
146 $deps = array( 'gutenify-frontend' );
147
148 // wp_enqueue_style( $name, GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css', $deps, $asset_file['version'] );
149 }
150
151 /**
152 * Enqueue block assets for use within Gutenberg.
153 *
154 * @access public
155 */
156 public function editor_assets() {
157
158 // Styles.
159 $name = 'gutenify-editor';
160 $filepath = 'dist/' . $name;
161 $asset_file = $this->get_asset_file( $filepath );
162 $rtl = ! is_rtl() ? '' : '-rtl';
163
164 wp_register_style( 'gutenify-fontawesome-style', GUTENIFY_PLUGIN_URL . '/assets/fontawesome/css/all.css', array(), 'v4' );
165
166 $fonts_url = gutenify_fonts_url();
167 wp_enqueue_style( 'gutenify-fonts', $fonts_url, array(), null );
168
169 $deps = array( 'gutenify-fontawesome-style' );
170
171 if ( $fonts_url ) {
172 $deps[] = 'gutenify-fonts';
173 }
174
175 if ( class_exists( 'woocommerce' ) ) {
176 $deps[] = 'wc-blocks-editor-style';
177 }
178
179 wp_register_style(
180 'gutenify-editor',
181 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
182 $deps,
183 $asset_file['version']
184 );
185
186 // Scripts.
187 $name = 'gutenify'; // gutenify.js.
188 $filepath = 'dist/' . $name;
189 $asset_file = $this->get_asset_file( $filepath );
190
191 wp_register_script(
192 'gutenify-editor',
193 GUTENIFY_PLUGIN_URL . $filepath . '.js',
194 array_merge( $asset_file['dependencies'], array( 'wp-api', 'gutenify-global' ) ),
195 $asset_file['version'],
196 true
197 );
198
199 $post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
200
201 wp_localize_script(
202 'gutenify-editor',
203 'gutenify_block_data',
204 array(
205 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
206 'site_url' => esc_url( site_url() ),
207 'settings_url' => esc_url( admin_url( 'edit.php?post_type=gutenify_template&page=gutenify-settings' ) ),
208 'add_template_url' => esc_url( admin_url( 'post-new.php?post_type=gutenify_template' ) ),
209 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
210 )
211 );
212
213 $localized_values = array(
214 'font_families' => gutenify_font_families(),
215 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
216 'site_url' => esc_url( site_url() ),
217 );
218 wp_localize_script(
219 'gutenify-editor',
220 '_gutenify',
221 apply_filters( 'gutenify-admin-localized-values', $localized_values ),
222 );
223
224 }
225
226 /**
227 * Enqueue front-end assets for blocks.
228 *
229 * @access public
230 * @since 1.9.5
231 */
232 public function frontend_scripts() {
233
234 // Scripts.
235 $name = 'swiper-bundle'; // swiper.js.
236 $filepath = 'assets/js/lib/' . $name;
237
238 wp_register_script(
239 'gutenify-swiper',
240 GUTENIFY_PLUGIN_URL . $filepath . '.js',
241 array( 'jquery' ),
242 '6.8.2',
243 false
244 );
245
246 // Scripts.
247 $name = 'gutenify-frontend'; // gutenify.js.
248 $filepath = 'dist/js/' . $name;
249 $asset_file = $this->get_asset_file( $filepath );
250
251 $deps = array( 'jquery', 'gutenify-swiper' );
252
253 // Enqueue for gutenify animations.
254 wp_enqueue_script(
255 'gutenify-frontend',
256 GUTENIFY_PLUGIN_URL . $filepath . '.js',
257 $deps,
258 GUTENIFY_VERSION,
259 false
260 );
261
262 // Styles.
263 $name = 'swiper-bundle.min'; // swiper.js.
264 $filepath = 'assets/css/lib/' . $name;
265 $asset_file = $this->get_asset_file( $filepath );
266 wp_enqueue_style(
267 'gutenify-swiper-style',
268 GUTENIFY_PLUGIN_URL . $filepath . '.css',
269 array(),
270 '6.8.2'
271 );
272
273 }
274
275 /**
276 * Enqueue editor scripts for blocks.
277 *
278 * @access public
279 * @since 1.9.5
280 */
281 public function editor_scripts() {
282 }
283
284 /**
285 * Return whether a post type should display the Block Editor.
286 *
287 * @param string $post_type The post_type slug to check.
288 */
289 protected function is_post_type_gutenberg( $post_type ) {
290 return use_block_editor_for_post_type( $post_type );
291 }
292
293 /**
294 * Return whether the page we are on is loading the Block Editor.
295 */
296 protected function is_page_gutenberg() {
297 if ( ! is_admin() ) {
298 return false;
299 }
300
301 $admin_page = wp_basename( esc_url( $_SERVER['REQUEST_URI'] ) );
302
303 if ( false !== strpos( $admin_page, 'post-new.php' ) && empty( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
304 return true;
305 }
306
307 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
308 return true;
309 }
310
311 if ( false !== strpos( $admin_page, 'post.php' ) ) {
312 $wp_post = get_post( $_GET['post'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
313 if ( isset( $wp_post ) && isset( $wp_post->post_type ) && $this->is_post_type_gutenberg( $wp_post->post_type ) ) {
314 return true;
315 }
316 }
317
318 if ( false !== strpos( $admin_page, 'revision.php' ) ) {
319 $wp_post = get_post( $_GET['revision'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
320 $post_parent = get_post( $wp_post->post_parent );
321 if ( isset( $post_parent ) && isset( $post_parent->post_type ) && $this->is_post_type_gutenberg( $post_parent->post_type ) ) {
322 return true;
323 }
324 }
325 return false;
326 }
327
328 /**
329 * Add inline css
330 *
331 * @return void
332 */
333 public static function add_block_inline_css() {
334 if ( is_singular() ) {
335 global $post;
336 // $style_file = trailingslashit( wp_upload_dir()['basedir'] ) . 'gutenify/styles/style-' . 'post-' . $post->ID . '.css';
337
338 // if ( file_exists( $style_file ) ) {
339 // $style_file_url = trailingslashit( wp_upload_dir()['baseurl'] ) . 'gutenify/styles/style-' . 'post-' . $post->ID . '.css';
340
341 // wp_enqueue_style( 'gutenify-frontend-post', $style_file_url, array( 'gutenify-frontend' ), GUTENIFY_VERSION );
342 // } else {
343 // }
344 $post_meta = get_post_meta( $post->ID );
345 $gutenify_custom_css = ! empty( $post_meta['gutenify_custom_css'][0] ) ? $post_meta['gutenify_custom_css'][0] : '';
346 wp_add_inline_style( 'gutenify-frontend', $gutenify_custom_css );
347 }
348 $gutenify_global_style = get_option( 'gutenify_global_style' );
349
350 $deps = array();
351 wp_register_style( 'gutenify-global-inline-handle', false, $deps );
352 wp_enqueue_style( 'gutenify-global-inline-handle' );
353
354 if ( $gutenify_global_style ) {
355 $handle = 'gutenify-global-inline-handle';
356 wp_add_inline_style( $handle, $gutenify_global_style );
357 }
358 }
359
360 /**
361 * Add Global inline css
362 *
363 * @return void
364 */
365 public static function add_admin_global_inline_css() {
366
367 $gutenify_admin_global_style = get_option( 'gutenify_admin_global_style' );
368 $deps = array();
369 wp_register_style( 'gutenify-global-inline-handle', false, $deps );
370 wp_enqueue_style( 'gutenify-global-inline-handle' );
371
372 if ( $gutenify_admin_global_style ) {
373 wp_add_inline_style( 'gutenify-global-inline-handle', $gutenify_admin_global_style );
374 }
375 }
376
377 /**
378 * Admin scripts.
379 *
380 * @return mixed
381 */
382 public function admin_scripts() {
383 // Scripts.
384 $name = 'gutenify-global'; // gutenify.js.
385 $filepath = 'dist/' . $name;
386 $asset_file = $this->get_asset_file( $filepath );
387
388 // Enqueue for gutenify animations.
389 wp_register_script(
390 $name,
391 GUTENIFY_PLUGIN_URL . $filepath . '.js',
392 $asset_file['dependencies'],
393 $asset_file['version'],
394 true
395 );
396
397 // Site options
398 if ( ( ! empty( $_GET['page'] ) && 'gutenify-site-options' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
399 // Scripts.
400 $name = 'gutenify-site-options-admin'; // gutenify.js.
401 $filepath = 'dist/' . $name;
402 $asset_file = $this->get_asset_file( $filepath );
403
404 // Enqueue for gutenify animations.
405 wp_enqueue_script(
406 'gutenify-site-options-admin',
407 GUTENIFY_PLUGIN_URL . $filepath . '.js',
408 $asset_file['dependencies'],
409 $asset_file['version'],
410 true
411 );
412
413 // Styles.
414 $name = 'gutenify-site-options-admin-style';
415 $filepath = 'dist/' . $name;
416 $asset_file = $this->get_asset_file( $filepath );
417 $rtl = ! is_rtl() ? '' : '-rtl';
418
419 wp_enqueue_style(
420 $name,
421 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
422 array( 'gutenify-fontawesome-style', 'wp-components' ),
423 $asset_file['version']
424 );
425
426 wp_localize_script(
427 'gutenify-site-options-admin',
428 '_gutenify_site_options',
429 array(
430 'site_url' => esc_url( site_url() ),
431 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
432 'is_block_theme' => function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
433 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
434 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
435 )
436 );
437 }
438
439 // if ( ! empty( $_GET['post_type'] ) && 'gutenify_kit' === $_GET['post_type'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
440 if ( ! empty( $_GET['post_type'] ) && 'gutenify_template' === $_GET['post_type'] && ( ! empty( $_GET['page'] ) && 'gutenify-template-kits' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
441 // Scripts.
442 $name = 'gutenify-kit-admin'; // gutenify.js.
443 $filepath = 'dist/' . $name;
444 $asset_file = $this->get_asset_file( $filepath );
445
446 // Enqueue for gutenify animations.
447 wp_enqueue_script(
448 'gutenify-kit-admin',
449 GUTENIFY_PLUGIN_URL . $filepath . '.js',
450 $asset_file['dependencies'],
451 $asset_file['version'],
452 true
453 );
454
455 // Styles.
456 $name = 'gutenify-kit-admin-style';
457 $filepath = 'dist/' . $name;
458 $asset_file = $this->get_asset_file( $filepath );
459 $rtl = ! is_rtl() ? '' : '-rtl';
460
461 wp_enqueue_style(
462 $name,
463 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
464 array( 'gutenify-fontawesome-style', 'wp-components' ),
465 $asset_file['version']
466 );
467
468 wp_localize_script(
469 'gutenify-kit-admin',
470 '_gutenify_kit',
471 array(
472 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
473 'site_url' => esc_url( site_url() ),
474 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
475 'is_block_theme' => wp_is_block_theme(), // function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
476 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
477 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
478 )
479 );
480 }
481
482 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
483 return false;
484 }
485 // Scripts.
486 $name = 'gutenify-admin-settings'; // gutenify.js.
487 $filepath = 'dist/' . $name;
488 $asset_file = $this->get_asset_file( $filepath );
489
490 $asset_file['dependencies'][] = 'gutenify-global';
491
492 // Enqueue for gutenify animations.
493 wp_enqueue_script(
494 'gutenify-admin-settings',
495 GUTENIFY_PLUGIN_URL . $filepath . '.js',
496 $asset_file['dependencies'],
497 $asset_file['version'],
498 true
499 );
500
501 wp_localize_script(
502 'gutenify-admin-settings',
503 '_gutenify',
504 array(
505 'site_url' => esc_url( site_url() ),
506 'pro_account_url' => esc_url( admin_url( 'edit.php?post_type=gutenify_template&page=gutenify-pro-license' ) ),
507 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
508 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
509 'font_families' => gutenify_font_families(),
510 'global_settings' => wp_get_global_settings(),
511 )
512 );
513
514 // Styles.
515 $name = 'gutenify-admin-settings-style';
516 $filepath = 'dist/' . $name;
517 $asset_file = $this->get_asset_file( $filepath );
518 $rtl = ! is_rtl() ? '' : '-rtl';
519
520 wp_enqueue_style(
521 $name,
522 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
523 array( 'gutenify-fontawesome-style', 'wp-components' ),
524 $asset_file['version']
525 );
526 }
527 }
528
529 Gutenify_Block_Assets::register();
530