PluginProbe
Assistant – Every Day Productivity Apps / 1.4.7
Assistant – Every Day Productivity Apps v1.4.7
1.5.5 trunk 0.1.0 0.2.0 0.2.1 0.2.2 0.3.0 0.3.1 0.4 0.4.1 0.4.2 0.5.0 0.5.1 0.6.0 0.7.0 0.7.0.2 0.7.0.3 0.7.0.4 0.7.0.5 0.7.0.6 0.7.0.7 0.7.0.8 0.7.0.9 0.7.1 1.0 All 71 releases
← All changes | backend/src/Hooks/Actions/OnEnqueueScripts.php +165 -45 0.5.01.4.7 View file →
@@ -7,8 +7,9 @@
7 7 use FL\Assistant\Data\Site;
8 8 use FL\Assistant\Data\Transformers\UserTransformer;
9 9 use FL\Assistant\Data\UserState;
10 10 use FL\Assistant\Data\Mockup;
11 +use FL\Assistant\Services\ThemeService;
11 12 use FLBuilderModel;
12 13
13 14 /**
14 15 * Class OnEnqueueScripts
@@ -68,29 +69,56 @@
68 69 return [];
69 70 }
70 71
71 72 $user_state = UserState::get();
73 + $config = self::generate_frontend_config();
74 + $frame = $config[ 'frameDefaults' ];
72 75
76 +
77 + // Ensure shape of window property
78 + $window = $user_state['window'];
79 + // Ensure is set
80 + if ( ! isset( $window['width'] ) || null === $window['width'] ) {
81 + $window['width'] = $frame[ 'defaultWidth' ];
82 + }
83 + // Respect min and max width
84 + if ( $frame[ 'minWidth' ] > $window['width'] ) {
85 + $window['width'] = $frame[ 'minWidth' ];
86 + } else if ( $frame[ 'maxWidth' ] < $window[ 'width' ] ) {
87 + $window['width'] = $frame[ 'maxWidth' ];
88 + }
89 +
90 + // Set frame origin to top/right if not set.
91 + if ( ! isset( $window['origin'] ) || ! is_array( $window['origin'] ) ) {
92 + $window['origin'] = $frame[ 'defaultOrigin' ];
93 + }
94 +
95 + // Remove Deprecated properties
96 + if ( isset( $window['size'] ) ) {
97 + unset( $window['size'] );
98 + }
99 + if ( isset( $window['overlayToolbar'] ) ) {
100 + unset( $window['overlayToolbar'] );
101 + }
102 +
73 103 // Always show in admin bar and hidden in wp-admin.
74 104 if ( is_admin() ) {
75 - $user_state['window']['isHidden'] = true;
76 - $user_state['window']['hiddenAppearance'] = 'admin_bar';
105 + $window['isHidden'] = true;
106 + // $window['hiddenAppearance'] = 'admin_bar';
77 107 }
78 108
109 + $user_state['window'] = $window;
110 +
79 111 return [
112 + 'shouldShowLabels' => false, /* Disabled */
80 113 'appOrder' => $user_state['appOrder'],
81 - 'shouldReduceMotion' => false, /* Disabled */
82 -
83 - /* New UI Props */
84 114 'appearance' => $user_state['appearance'],
85 115 'history' => $user_state['history'],
86 116 'searchHistory' => $user_state['searchHistory'],
87 - 'shouldShowLabels' => false, /* Disabled */
88 117 'window' => $user_state['window'],
89 118 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
90 119 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
91 120 ];
92 -
93 121 }
94 122
95 123 /**
96 124 *
@@ -103,34 +131,54 @@
103 131 */
104 132 public function generate_frontend_config() {
105 133
106 134 $current_user = $this->users->current( $this->user_transform );
135 + $theme_service = new ThemeService();
136 + $theme = $theme_service->get_current_theme_data();
107 137
108 138 return [
109 - 'adminURLs' => $this->site->get_admin_urls(),
110 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
111 - 'apiRoot' => esc_url_raw( get_rest_url() ),
112 - 'cloudUrl' => FL_ASSISTANT_CLOUD_URL,
113 - 'cloudWpUrl' => FL_ASSISTANT_WP_API_URL,
114 - 'contentTypes' => $this->posts->get_types(),
115 - 'contentStatus' => $this->posts->get_stati(),
116 - 'currentPageView' => $this->site->get_current_view(),
117 - 'currentUser' => $current_user,
118 - 'defaultAppName' => 'fl-dashboard',
119 - 'emptyTrashDays' => EMPTY_TRASH_DAYS,
120 - 'isShowingAdminBar' => is_admin_bar_showing(),
121 - 'isAdmin' => is_admin(),
122 - 'isSiteAdmin' => is_super_admin(),
123 - 'mockup' => Mockup::get(),
124 - 'nonce' => [
139 + 'adminURLs' => $this->site->get_admin_urls(),
140 + 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
141 + 'apiRoot' => esc_url_raw( get_rest_url() ),
142 + 'attachmentTypes' => [
143 + 'all' => __( 'All', 'assistant' ),
144 + 'image' => __( 'Photo', 'assistant' ),
145 + 'document' => __( 'Document', 'assistant' ),
146 + 'video' => __( 'Video', 'assistant' ),
147 + 'audio' => __( 'Audio', 'assistant' ),
148 + ],
149 + 'contentTypes' => $this->posts->get_types(),
150 + 'contentStatus' => $this->posts->get_stati(),
151 + 'currentPageView' => $this->site->get_current_view(),
152 + 'currentUser' => $current_user,
153 + 'defaultAppName' => 'fl-home',
154 + 'emptyTrashDays' => EMPTY_TRASH_DAYS,
155 + 'frameDefaults' => UserState::getFrameDefaults(),
156 + 'homeUrl' => home_url(),
157 + 'baseUrl' => get_bloginfo( 'url' ),
158 + 'isShowingAdminBar' => is_admin_bar_showing(),
159 + 'isAdmin' => is_admin(),
160 + 'isSiteAdmin' => is_super_admin(),
161 + 'isLocalhost' => $this->site->is_local(),
162 + 'mockup' => Mockup::get(),
163 + 'nonce' => [
125 164 'api' => wp_create_nonce( 'wp_rest' ),
126 165 'reply' => wp_create_nonce( 'replyto-comment' ),
127 166 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
128 167 'updates' => wp_create_nonce( 'updates' ),
129 168 ],
130 - 'pluginURL' => FL_ASSISTANT_URL,
131 - 'taxonomies' => $this->posts->get_taxononies(),
132 - 'userRoles' => $this->users->get_roles(),
169 + 'pluginURL' => FL_ASSISTANT_URL,
170 + 'taxonomies' => $this->posts->get_taxononies(),
171 + 'userRoles' => $this->users->get_roles(),
172 + 'cloudConfig' => [
173 + 'apiUrl' => FL_ASSISTANT_CLOUD_URL,
174 + 'appUrl' => FL_ASSISTANT_CLOUD_APP_URL,
175 + 'pusherKey' => FL_ASSISTANT_PUSHER_KEY,
176 + 'pusherCluster' => FL_ASSISTANT_PUSHER_CLUSTER,
177 + ],
178 + 'embedInBB' => FL_ASST_SUPPORTS_BB,
179 + 'themeSlug' => $theme['slug'],
180 + 'themeParentSlug' => $theme['parent'] ? $theme['parent']['slug'] : null,
133 181 ];
134 182 }
135 183
136 184 /**
@@ -147,13 +195,23 @@
147 195 if ( is_customize_preview() ) {
148 196 return false;
149 197 }
150 198
151 - // Don't show in admin iframes.
152 - if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) {
199 + // Don't show in iframes.
200 + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
153 201 return false;
154 202 }
155 203
204 + // Don't show in post previews.
205 + if ( isset( $_GET['fl_asst_post_preview'] ) ) {
206 + return false;
207 + }
208 +
209 + // Don't show in Oxygen.
210 + if ( isset( $_GET['ct_builder'] ) ) {
211 + return false;
212 + }
213 +
156 214 // User is logged in, and the current request is not customizer or an iframe
157 215 $state = UserState::get();
158 216
159 217 // Don't show Assistant in the WP Admin if the user has turned it off.
@@ -165,11 +223,66 @@
165 223 if ( ! current_user_can( 'edit_others_posts' ) ) {
166 224 return false;
167 225 }
168 226
169 - return true;
227 + return apply_filters( 'fl_assistant_should_enqueue', true );
170 228 }
171 229
230 + public function register_vendors() {
231 +
232 + $url = FL_ASSISTANT_URL;
233 + $ver = FL_ASSISTANT_VERSION;
234 +
235 + // Bundled vendors
236 + // These vendors are special in that they attache a global reference to themselves on the FL.vendors object.
237 + // classnames
238 + wp_register_script( 'classnames', $url . 'build/vendor-classnames.js', [], $ver, false );
239 +
240 + // redux
241 + wp_register_script( 'redux', $url . 'build/vendor-redux.js', [], $ver, false );
242 +
243 + // react-router-dom
244 + wp_register_script( 'react-router-dom', $url . 'build/vendor-react-router-dom.js', [ 'react' ], $ver, false );
245 +
246 + // framer-motion
247 + wp_register_script( 'framer-motion', $url . 'build/vendor-framer-motion.js', [ 'react' ], $ver, false );
248 +
249 + // react-laag
250 + wp_register_script( 'react-laag', $url . 'build/vendor-react-laag.js', [ 'react' ], $ver, false );
251 +
252 + // HTML2Canvas
253 + wp_register_script( 'html2canvas', $url . 'build/vendor-html2canvas.js', [], $ver, false );
254 +
255 + // @beaverbuilder/app-core
256 + wp_register_script( 'bb-app-core', $url . 'build/vendor-bb-app-core.js', [ 'react', 'redux' ], $ver, false );
257 +
258 + // @beaverbuilder/cloud
259 + wp_register_script( 'bb-cloud', $url . 'build/vendor-bb-cloud.js', [ 'react' ], $ver, false );
260 +
261 + // @beaverbuilder/icons
262 + wp_register_script( 'bb-icons', $url . 'build/vendor-bb-icons.js', [ 'react' ], $ver, false );
263 +
264 + // @beaverbuilder/fluid
265 + $fluid_deps = [
266 + 'react',
267 + 'react-dom',
268 + 'redux',
269 + 'react-router-dom',
270 + 'classnames',
271 + 'framer-motion',
272 + 'react-laag',
273 + 'wp-i18n',
274 + 'bb-icons'
275 + ];
276 + wp_register_script( 'bb-fluid', $url . 'build/vendor-bb-fluid.js', $fluid_deps, $ver, false );
277 + wp_register_style( 'bb-fluid', $url . 'build/vendor-bb-fluid.css', [], $ver, null );
278 +
279 + // @beaverbuilder/forms
280 + wp_register_script( 'bb-forms', $url . 'build/vendor-bb-forms.js', [ 'bb-fluid' ], $ver, false );
281 + wp_register_style( 'bb-forms', $url . 'build/vendor-bb-forms.css', [ 'bb-fluid' ], $ver, null );
282 +
283 + }
284 +
172 285 /**
173 286 * Enqueue all scripts and styles
174 287 */
175 288 public function enqueue() {
@@ -176,12 +289,11 @@
176 289
177 290 $url = FL_ASSISTANT_URL;
178 291 $ver = FL_ASSISTANT_VERSION;
179 292
180 - wp_register_script( 'fl-fluid', $url . 'build/fl-assistant-fluid.bundle.js', [ 'react', 'react-dom', 'lodash' ], $ver, false );
181 - wp_register_style( 'fl-fluid', $url . 'build/fl-assistant-fluid.bundle.css', [], $ver, null );
293 + if ( $this->should_enqueue() ) {
182 294
183 - if ( $this->should_enqueue() ) {
295 + self::register_vendors();
184 296
185 297 $config = $this->generate_frontend_config();
186 298 $state = $this->generate_initial_state();
187 299
@@ -186,34 +298,42 @@
186 298 $state = $this->generate_initial_state();
187 299
188 300 // API - loaded in header
189 301 $js_deps = [
190 - 'fl-fluid',
191 302 'wp-i18n',
192 303 'wp-keycodes',
193 304 'wp-dom-ready',
194 305 'wp-components',
195 306 'wp-date',
307 + 'bb-fluid',
308 + 'bb-forms',
309 + 'bb-app-core',
310 + 'bb-cloud',
311 + 'bb-icons'
196 312 ];
313 + $css_deps = [
314 + 'bb-fluid',
315 + 'bb-forms',
316 + 'wp-components'
317 + ];
197 318
198 - wp_enqueue_style( 'fl-assistant-system', $url . 'build/fl-assistant-system.bundle.css', [ 'fl-fluid', 'wp-components' ], $ver, null );
199 - wp_enqueue_script( 'fl-assistant-system', $url . 'build/fl-assistant-system.bundle.js', $js_deps, $ver, false );
319 + // System - loaded in header
320 + wp_enqueue_style( 'fl-assistant', $url . 'build/system.css', $css_deps, $ver, null );
321 + wp_enqueue_script( 'fl-assistant', $url . 'build/system.js', $js_deps, $ver, false );
200 322
201 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_CONFIG', $config );
202 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_INITIAL_STATE', $state );
323 + wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_CONFIG', $config );
324 + wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_INITIAL_STATE', $state );
203 325
204 - // Apps - loaded in header
205 - wp_enqueue_script( 'fl-assistant-apps', $url . 'build/fl-assistant-apps.bundle.js', $js_deps, $ver, false );
326 + // Apps - loaded in footer
327 + wp_enqueue_script( 'fl-assistant-apps', $url . 'build/apps.js', [ 'fl-assistant', 'html2canvas' ], $ver, true );
328 + //wp_enqueue_style( 'fl-assistant-apps', $url . 'build/apps.css', [ 'fl-assistant' ], $ver, null );
206 329
207 - // UI Render - loaded in footer
208 - wp_enqueue_style( 'fl-assistant-render', $url . 'build/fl-assistant-render.bundle.css', [], $ver, null );
209 - wp_enqueue_script( 'fl-assistant-render', $url . 'build/fl-assistant-render.bundle.js', $js_deps, $ver, true );
330 + // Render - loaded in footer
331 + wp_enqueue_script( 'fl-assistant-render', $url . 'build/render.js', [ 'fl-assistant' ], $ver, true );
332 + wp_enqueue_style( 'fl-assistant-render', $url . 'build/render.css', [ 'fl-assistant' ], $ver, null );
210 333
211 334 // WordPress Media Uploader
212 335 wp_enqueue_media();
213 -
214 - // Drip email script
215 - wp_enqueue_script( 'fl-assistant-drip', 'https://tag.getdrip.com/3112548.js', [], $ver, false );
216 336
217 337 do_action( 'fl_assistant_enqueue' );
218 338 }
219 339 }