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

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