PluginProbe
Getwid – Gutenberg Blocks / 2.1.1
Getwid – Gutenberg Blocks v2.1.1
3.0.1 3.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.2.0 trunk 1.8.7 1.9.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9
getwid / includes / blocks / section.php

section.php in Getwid – Gutenberg Blocks 2.1.1, at includes/blocks/section.php

220 lines 5.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Getwid\Blocks;
4
5 class Section extends \Getwid\Blocks\AbstractBlock {
6
7 protected static $blockName = 'getwid/section';
8 private $assetsAlreadyEnqueued = false;
9
10 public function __construct() {
11
12 parent::__construct( self::$blockName );
13
14 register_block_type(
15 'getwid/section',
16 array(
17 'render_callback' => [ $this, 'render_callback' ]
18 )
19 );
20
21 if ( $this->isEnabled() ) {
22
23 add_filter( 'getwid/editor_blocks_js/dependencies', [ $this, 'block_editor_scripts'] );
24 add_filter( 'getwid/blocks_style_css/dependencies', [ $this, 'block_frontend_styles' ] );
25
26 //Register JS/CSS assets
27 wp_register_script(
28 'wow',
29 getwid_get_plugin_url( 'vendors/wow.js/dist/wow.min.js' ),
30 [ 'jquery' ],
31 '1.2.1',
32 true
33 );
34
35 wp_register_script(
36 'slick',
37 getwid_get_plugin_url( 'vendors/slick/slick/slick.min.js' ),
38 [ 'jquery' ],
39 '1.9.0',
40 true
41 );
42
43 wp_register_style(
44 'animate',
45 getwid_get_plugin_url( 'vendors/animate.css/animate.min.css' ),
46 [],
47 '3.7.0'
48 );
49
50 wp_register_style(
51 'slick',
52 getwid_get_plugin_url( 'vendors/slick/slick/slick.min.css' ),
53 [],
54 '1.9.0'
55 );
56
57 wp_register_style(
58 'slick-theme',
59 getwid_get_plugin_url( 'vendors/slick/slick/slick-theme.min.css' ),
60 [],
61 '1.9.0'
62 );
63 }
64 }
65
66 public function getLabel() {
67 return __('Section', 'getwid');
68 }
69
70 public function block_frontend_styles($styles) {
71
72 //fontawesome
73 $styles = getwid()->fontIconsManager()->enqueueFonts( $styles );
74
75 //animate.min.css
76 if ( is_admin() && ! in_array( 'animate', $styles ) ) {
77 array_push( $styles, 'animate' );
78 }
79
80 //slick.min.css
81 if ( ! in_array( 'slick', $styles ) ) {
82 array_push( $styles, 'slick' );
83 }
84
85 //slick-theme.min.css
86 if ( ! in_array( 'slick-theme', $styles ) ) {
87 array_push( $styles, 'slick-theme' );
88 }
89
90 return $styles;
91 }
92
93 public function block_editor_scripts($scripts) {
94
95 //wow.min.js
96 if ( ! in_array( 'wow', $scripts ) ) {
97 array_push( $scripts, 'wow' );
98 }
99
100 //wow.min.js
101 if ( ! in_array( 'slick', $scripts ) ) {
102 array_push( $scripts, 'slick' );
103 }
104
105 return $scripts;
106 }
107
108 public function block_frontend_assets( $attributes = [], $content = '' ) {
109
110 if ( is_admin() ) {
111 return;
112 }
113
114 if ( ! empty( $attributes['entranceAnimation'] ) ) {
115 //wow.min.js
116 if ( ! wp_script_is( 'wow', 'enqueued' ) ){
117 wp_enqueue_script('wow');
118 }
119
120 //animate.min.css
121 if ( ! wp_style_is( 'animate', 'enqueued' ) ) {
122 wp_enqueue_style( 'animate' );
123 }
124 }
125
126 $has_background_slider = false !== strpos( $content, 'wp-block-getwid-section__background-slider-item' );
127 //slick.min.js
128 if ( $has_background_slider && ! wp_script_is( 'slick', 'enqueued' ) ) {
129 wp_enqueue_script('slick');
130 }
131
132 //imagesloaded.min.js
133 if ( $has_background_slider && ! wp_script_is( 'imagesloaded', 'enqueued' ) ) {
134 wp_enqueue_script('imagesloaded');
135 }
136
137 /* optimization */
138 if ( FALSE == getwid()->assetsOptimization()->load_assets_on_demand() ) {
139 return;
140 }
141
142 $deps_css = [
143 'slick', 'slick-theme'
144 ];
145
146 $deps_js = [ 'jquery', 'imagesloaded' ];
147
148 if ( $has_background_slider && ! wp_script_is( 'slick', 'enqueued' ) ) {
149 $deps_js[] = 'slick';
150 }
151
152 if ( ! empty( $attributes['entranceAnimation'] ) ) {
153 $deps_css[] = 'animate';
154 $deps_js[] = 'wow';
155 }
156
157 //fontawesome
158 $deps_css = getwid()->fontIconsManager()->enqueueFonts( $deps_css );
159
160 add_filter( 'getwid/optimize/assets',
161 function ( $assets ) {
162 $assets[] = 'slick';
163 $assets[] = 'slick-theme';
164 $assets[] = getwid()->settings()->getPrefix() . '-blocks-common';
165
166 return $assets;
167 }
168 );
169
170 add_filter( 'getwid/optimize/should_load_common_css', '__return_true' );
171
172 $rtl = is_rtl() ? '.rtl' : '';
173
174 wp_enqueue_style(
175 self::$blockName,
176 getwid_get_plugin_url( 'assets/blocks/section/style' . $rtl . '.css' ),
177 $deps_css,
178 getwid()->settings()->getVersion()
179 );
180
181 // ensure that inline styles are enqueued only once
182 if ( !$this->assetsAlreadyEnqueued ) {
183 wp_add_inline_style( self::$blockName, getwid_generate_section_content_width_css() . getwid_generate_smooth_animation_css() );
184 }
185
186 wp_enqueue_script(
187 self::$blockName,
188 getwid_get_plugin_url( 'assets/blocks/section/frontend.js' ),
189 $deps_js,
190 getwid()->settings()->getVersion(),
191 true
192 );
193
194 if ( !$this->assetsAlreadyEnqueued ) {
195 $inline_script =
196 'var Getwid = Getwid || {};' .
197 'Getwid["isRTL"] = ' . json_encode( is_rtl() ) . ';';
198
199 wp_add_inline_script(
200 self::$blockName,
201 $inline_script,
202 'before'
203 );
204 }
205
206 $this->assetsAlreadyEnqueued = true;
207 }
208
209 public function render_callback( $attributes, $content ) {
210
211 $this->block_frontend_assets( $attributes, $content );
212
213 return $content;
214 }
215 }
216
217 getwid()->blocksManager()->addBlock(
218 new \Getwid\Blocks\Section()
219 );
220