PluginProbe
Getwid – Gutenberg Blocks / 2.1.3
Getwid – Gutenberg Blocks v2.1.3
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 / scripts-manager.php

scripts-manager.php in Getwid – Gutenberg Blocks 2.1.3, at includes/scripts-manager.php

299 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Getwid;
4
5 /**
6 * Class ScriptsManager
7 * @package Getwid
8 */
9 class ScriptsManager {
10
11 private $version;
12 private $prefix;
13
14 /**
15 * ScriptsManager constructor.
16 */
17 public function __construct() {
18
19 $settings = getwid()->settings();
20
21 $this->version = $settings->getVersion();
22 $this->prefix = $settings->getPrefix();
23
24 // Fires after block assets have been enqueued for the editing interface.
25 add_action( 'enqueue_block_editor_assets', [ $this, 'enqueueEditorAssets'] );
26
27 // Fires after enqueuing block assets for both editor and front-end.
28 add_action( 'enqueue_block_assets', [ $this, 'enqueueFrontBlockAssets' ] );
29
30 // section_content_width inline styles
31 add_action( 'after_theme_setup', [ $this, 'enqueue_editor_section_css' ] );
32
33 add_action( 'wp_footer', [ $this, 'localizeFrontend' ] );
34
35 // Register frontend styles
36 add_action( 'wp_footer', [ $this, 'wp_late_enqueue_scripts' ] );
37 }
38
39 public function get_image_sizes() {
40
41 global $_wp_additional_image_sizes;
42
43 $intermediate_image_sizes = get_intermediate_image_sizes();
44
45 $image_sizes = array();
46 foreach ( $intermediate_image_sizes as $size ) {
47 if ( isset( $_wp_additional_image_sizes[ $size ] ) ) {
48 $image_sizes[ $size ] = array(
49 'width' => $_wp_additional_image_sizes[ $size ][ 'width' ],
50 'height' => $_wp_additional_image_sizes[ $size ][ 'height' ]
51 );
52 } else {
53 $image_sizes[ $size ] = array(
54 'width' => intval( get_option( "{$size}_size_w" ) ),
55 'height' => intval( get_option( "{$size}_size_h" ) )
56 );
57 }
58 }
59
60 $sizes_arr = [];
61 foreach ( $image_sizes as $key => $value ) {
62 $temp_arr = [];
63 $temp_arr[ 'value' ] = $key;
64 $temp_arr[ 'label' ] = ucwords( strtolower( preg_replace( '/[-_]/', ' ', $key ) ) ) . " - {$value['width']} x {$value['height']}";
65 $sizes_arr[] = $temp_arr;
66 }
67
68 $sizes_arr[] = array(
69 'value' => 'full',
70 'label' => __( 'Full Size', 'getwid' )
71 );
72
73 return $sizes_arr;
74 }
75
76 /**
77 * Enqueue editor-only js and css (Enqueue scripts (only on Edit Post Page))
78 */
79 public function enqueueEditorAssets() {
80
81 global $pagenow;
82
83 $dependencies = array( 'wp-i18n', 'wp-element', 'wp-blocks', 'wp-components', 'wp-api', 'wp-api-fetch', 'lodash' );
84
85 if ( $pagenow && $pagenow === 'widgets.php' ) {
86 array_push( $dependencies, 'wp-edit-widgets' );
87 } else {
88 array_push( $dependencies, 'wp-editor' );
89 }
90
91 // Enqueue the bundled block JS file
92 wp_enqueue_script(
93 "{$this->prefix}-blocks-editor-js",
94 getwid_get_plugin_url( 'assets/js/editor.blocks.js' ),
95 apply_filters(
96 'getwid/editor_blocks_js/dependencies',
97 $dependencies
98 ),
99 $this->version,
100 true
101 );
102
103 //disabled blocks
104 $disabledBlocks = [];
105 $disabledBlocksData = [];
106 if ( getwid()->blocksManager()->hasDisabledBlocks() ) {
107 $disabledBlocks = getwid()->blocksManager()->getDisabledBlocks();
108 foreach ( $disabledBlocks as $block ) {
109 $disabledBlocksData[] = $block->getBlockName();
110 }
111 }
112
113 $current_user_can_manage_options = current_user_can( 'manage_options' );
114
115 $mailchimp_api_key = get_option( 'getwid_mailchimp_api_key', '' );
116
117 if ( !$current_user_can_manage_options ) {
118 $mailchimp_api_key = $mailchimp_api_key ? '1' : '';
119 }
120
121 $recaptcha_site_key = $current_user_can_manage_options ? get_option( 'getwid_recaptcha_v2_site_key' , '' ) : '1';
122 $recaptcha_secret_key = $current_user_can_manage_options ? get_option( 'getwid_recaptcha_v2_secret_key', '' ) : '1';
123
124 wp_localize_script(
125 "{$this->prefix}-blocks-editor-js",
126 'Getwid',
127 apply_filters(
128 'getwid/editor_blocks_js/localize_data',
129 [
130 'disabled_blocks' => $disabledBlocksData,
131 'settings' => [
132 'wide_support' => get_theme_support( 'align-wide' ),
133 'date_time_utc' => current_time('Y-m-d H:i:s'),
134 'post_type' => get_post_type(),
135 'google_api_key' => get_option( 'getwid_google_api_key', '' ),
136 'instagram_token_isset' => (bool) get_option( 'getwid_instagram_token', '' ),
137
138 'assets_path' => getwid_get_plugin_url( '/assets' ),
139 'image_sizes' => $this->get_image_sizes(),
140
141 'excerpt_length' => apply_filters( 'excerpt_length', 55 ),
142 'recaptcha_site_key' => $recaptcha_site_key,
143 'recaptcha_secret_key' => $recaptcha_secret_key,
144 'mailchimp_api_key' => $mailchimp_api_key,
145 'debug' => ( defined( 'WP_DEBUG' ) ? WP_DEBUG : false )
146 ],
147 'templates' => [
148 'name' => getwid()->postTemplatePart()->postType,
149 'new' => admin_url( 'post-new.php?post_type=' . getwid()->postTemplatePart()->postType ),
150 'view' => admin_url( 'edit.php?post_type=' . getwid()->postTemplatePart()->postType ),
151 'edit' => admin_url( 'post.php?post=' )
152 ],
153 'ajax_url' => admin_url( 'admin-ajax.php' ),
154 'options_general_url' => admin_url( 'options-general.php' ),
155 'get_instagram_token_url' => add_query_arg(
156 ['nonce' => wp_create_nonce('getwid_nonce_save_instagram_token') ],
157 admin_url( 'options-general.php' )
158 ),
159 'options_url' => [
160 'general' => getwid()->settingsPage()->getTabUrl('general'),
161 'appearance' => getwid()->settingsPage()->getTabUrl('appearance'),
162 'blocks' => getwid()->settingsPage()->getTabUrl('blocks'),
163 ],
164 'nonces' => array(
165 'google_api_key' => wp_create_nonce( 'getwid_nonce_google_api_key' ),
166 'recaptcha_v2' => wp_create_nonce( 'getwid_nonce_recaptcha_v2' ),
167 'mailchimp_api_key' => wp_create_nonce( 'getwid_nonce_mailchimp_api_key' ),
168 'check_instagram_token' => wp_create_nonce( 'getwid_nonce_check_instagram_token' )
169 ),
170 'acf_exist' => getwid_acf_is_active(),
171 'current_user' => [
172 'can_manage_options' => $current_user_can_manage_options,
173 ]
174 ]
175 )
176 );
177
178 wp_set_script_translations( "{$this->prefix}-blocks-editor-js", "getwid" );
179
180 $rtl = is_rtl() ? '.rtl' : '';
181 // Enqueue optional editor only styles
182 wp_enqueue_style(
183 "{$this->prefix}-blocks-editor",
184 getwid_get_plugin_url( 'assets/css/blocks.editor' . $rtl . '.css' ),
185 apply_filters(
186 'getwid/editor_blocks_css/dependencies',
187 []
188 ),
189 $this->version
190 );
191 }
192
193 /**
194 * Enqueue js and css for both editor and front-end
195 *
196 */
197 public function enqueueFrontBlockAssets() {
198
199 // *** Start of Backend & Frontend ***
200
201 /**
202 * Assets optimization. Currently in Beta.
203 * @since 1.5.3
204 */
205 $_has_enabled_blocks = getwid()->blocksManager()->hasEnabledBlocks();
206
207 if ( $_has_enabled_blocks ) {
208
209 if ( FALSE == getwid()->assetsOptimization()->load_assets_on_demand() || is_admin() ) {
210
211 $rtl = is_rtl() ? '.rtl' : '';
212
213 wp_enqueue_style(
214 "{$this->prefix}-blocks",
215 getwid_get_plugin_url( 'assets/css/blocks.style' . $rtl . '.css' ),
216
217 // section, banner, icon-box, icon, image-box, image-hotspot, media-text-slider, video-popup, post-carousel, post-slider, images-slider
218 /**
219 * Filters frontend style dependencies.
220 */
221 apply_filters(
222 'getwid/blocks_style_css/dependencies',
223 []
224 ),
225 $this->version
226 );
227
228 wp_add_inline_style( "{$this->prefix}-blocks", getwid_generate_section_content_width_css() );
229 wp_add_inline_style( "{$this->prefix}-blocks", getwid_generate_smooth_animation_css() );
230 }
231
232 }
233
234 // *** End of Backend & Frontend ***
235
236 /**
237 * Assets optimization. Currently in Beta.
238 * @since 1.5.3
239 */
240 if ( is_admin() || ! $_has_enabled_blocks || ( TRUE == getwid()->assetsOptimization()->load_assets_on_demand() ) ) {
241 return;
242 }
243
244 /**
245 * Filters frontend script dependencies.
246 */
247 wp_enqueue_script(
248 "{$this->prefix}-blocks-frontend-js",
249 getwid_get_plugin_url( 'assets/js/frontend.blocks.js' ),
250 apply_filters(
251 'getwid/frontend_blocks_js/dependencies',
252 [ 'jquery' ]
253 ),
254 $this->version,
255 true
256 );
257 }
258
259 public function localizeFrontend() {
260 wp_localize_script(
261 "{$this->prefix}-blocks-frontend-js",
262 'Getwid',
263 apply_filters(
264 'getwid/frontend_blocks_js/localize_data',
265 [
266 'settings' => [],
267 'ajax_url' => admin_url( 'admin-ajax.php' ),
268 'isRTL' => is_rtl(),
269 'nonces' => array(
270 'contact_form' => wp_create_nonce( 'getwid_nonce_send_contact_form' )
271 ),
272 ]
273 )
274 );
275 }
276
277 public function wp_late_enqueue_scripts() {
278
279 $should_enqueue_common_style = apply_filters('getwid/optimize/should_load_common_css', false);
280
281 if ( TRUE == getwid()->assetsOptimization()->load_assets_on_demand() && $should_enqueue_common_style ) {
282
283 $rtl = is_rtl() ? '.rtl' : '';
284
285 wp_enqueue_style(
286 "{$this->prefix}-blocks-common",
287 getwid_get_plugin_url( 'assets/blocks/common.style' . $rtl . '.css' ),
288 [],
289 $this->version
290 );
291 }
292 }
293
294 public function enqueue_editor_section_css() {
295 add_editor_style( getwid_generate_section_content_width_css() );
296 }
297
298 }
299