PluginProbe
Assistant – Every Day Productivity Apps / 1.0.2
Assistant – Every Day Productivity Apps v1.0.2
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 +166 -45 0.4.21.0.2 View file →
@@ -6,8 +6,10 @@
6 6 use FL\Assistant\Data\Repository\UsersRepository;
7 7 use FL\Assistant\Data\Site;
8 8 use FL\Assistant\Data\Transformers\UserTransformer;
9 9 use FL\Assistant\Data\UserState;
10 +use FL\Assistant\Data\Mockup;
11 +use FL\Assistant\Services\ThemeService;
10 12 use FLBuilderModel;
11 13
12 14 /**
13 15 * Class OnEnqueueScripts
@@ -67,27 +69,56 @@
67 69 return [];
68 70 }
69 71
70 72 $user_state = UserState::get();
73 + $config = self::generate_frontend_config();
74 + $frame = $config[ 'frameDefaults' ];
71 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 +
72 103 // Always show in admin bar and hidden in wp-admin.
73 104 if ( is_admin() ) {
74 - $user_state['window']['isHidden'] = true;
75 - $user_state['window']['hiddenAppearance'] = 'admin_bar';
105 + $window['isHidden'] = true;
106 + $window['hiddenAppearance'] = 'admin_bar';
76 107 }
77 108
109 + $user_state['window'] = $window;
110 +
78 111 return [
112 + 'shouldShowLabels' => false, /* Disabled */
79 113 'appOrder' => $user_state['appOrder'],
80 - 'shouldReduceMotion' => false, /* Disabled */
81 -
82 - /* New UI Props */
83 114 'appearance' => $user_state['appearance'],
84 115 'history' => $user_state['history'],
85 116 'searchHistory' => $user_state['searchHistory'],
86 - 'shouldShowLabels' => false, /* Disabled */
87 117 'window' => $user_state['window'],
118 + 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
119 + 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
88 120 ];
89 -
90 121 }
91 122
92 123 /**
93 124 *
@@ -100,38 +131,53 @@
100 131 */
101 132 public function generate_frontend_config() {
102 133
103 134 $current_user = $this->users->current( $this->user_transform );
135 + $theme_service = new ThemeService();
136 + $theme = $theme_service->get_current_theme_data();
104 137
105 138 return [
106 - 'adminURLs' => $this->site->get_admin_urls(),
107 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
108 - 'apiRoot' => esc_url_raw( get_rest_url() ),
109 - 'cloudUrl' => FL_ASSISTANT_CLOUD_URL,
110 - 'contentTypes' => $this->posts->get_types(),
111 - 'contentStatus' => $this->posts->get_stati(),
112 - 'currentPageView' => $this->site->get_current_view(),
113 - 'currentUser' => $current_user,
114 - 'defaultAppName' => 'fl-dashboard',
115 - 'emptyTrashDays' => EMPTY_TRASH_DAYS,
116 - 'isShowingAdminBar' => is_admin_bar_showing(),
117 - 'isAdmin' => is_admin(),
118 - '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', 'fl-assistant' ),
144 + 'image' => __( 'Photo', 'fl-assistant' ),
145 + 'document' => __( 'Document', 'fl-assistant' ),
146 + 'video' => __( 'Video', 'fl-assistant' ),
147 + 'audio' => __( 'Audio', 'fl-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 + 'isShowingAdminBar' => is_admin_bar_showing(),
158 + 'isAdmin' => is_admin(),
159 + 'isSiteAdmin' => is_super_admin(),
160 + 'isLocalhost' => $this->site->is_local(),
161 + 'mockup' => Mockup::get(),
162 + 'nonce' => [
119 163 'api' => wp_create_nonce( 'wp_rest' ),
120 164 'reply' => wp_create_nonce( 'replyto-comment' ),
121 165 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
122 166 'updates' => wp_create_nonce( 'updates' ),
123 167 ],
124 - 'pluginURL' => FL_ASSISTANT_URL,
125 - 'taxonomies' => $this->posts->get_taxononies(),
126 - 'userRoles' => $this->users->get_roles(),
127 -
128 - /*
129 - 'integrations' => [
130 - 'yoastSEO' => [
131 - 'isActive' => is_plugin_active('wordpress-seo/wp-seo.php')
132 - ]
133 - ],*/
168 + 'pluginURL' => FL_ASSISTANT_URL,
169 + 'taxonomies' => $this->posts->get_taxononies(),
170 + 'userRoles' => $this->users->get_roles(),
171 + 'cloudConfig' => [
172 + 'apiUrl' => FL_ASSISTANT_CLOUD_URL,
173 + 'appUrl' => FL_ASSISTANT_CLOUD_APP_URL,
174 + 'pusherKey' => FL_ASSISTANT_PUSHER_KEY,
175 + 'pusherCluster' => FL_ASSISTANT_PUSHER_CLUSTER,
176 + ],
177 + 'embedInBB' => FL_ASST_SUPPORTS_BB,
178 + 'themeSlug' => $theme['slug'],
179 + 'themeParentSlug' => $theme['parent'] ? $theme['parent']['slug'] : null,
134 180 ];
135 181 }
136 182
137 183 /**
@@ -153,8 +199,18 @@
153 199 if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) {
154 200 return false;
155 201 }
156 202
203 + // Don't show in post previews.
204 + if ( isset( $_GET['fl_asst_post_preview'] ) ) {
205 + return false;
206 + }
207 +
208 + // Don't show in Oxygen.
209 + if ( isset( $_GET['ct_builder'] ) ) {
210 + return false;
211 + }
212 +
157 213 // User is logged in, and the current request is not customizer or an iframe
158 214 $state = UserState::get();
159 215
160 216 // Don't show Assistant in the WP Admin if the user has turned it off.
@@ -169,8 +225,63 @@
169 225
170 226 return true;
171 227 }
172 228
229 + public function register_vendors() {
230 +
231 + $url = FL_ASSISTANT_URL;
232 + $ver = FL_ASSISTANT_VERSION;
233 +
234 + // Bundled vendors
235 + // These vendors are special in that they attache a global reference to themselves on the FL.vendors object.
236 + // classnames
237 + wp_register_script( 'classnames', $url . 'build/vendor-classnames.js', [], $ver, false );
238 +
239 + // redux
240 + wp_register_script( 'redux', $url . 'build/vendor-redux.js', [], $ver, false );
241 +
242 + // react-router-dom
243 + wp_register_script( 'react-router-dom', $url . 'build/vendor-react-router-dom.js', [ 'react' ], $ver, false );
244 +
245 + // framer-motion
246 + wp_register_script( 'framer-motion', $url . 'build/vendor-framer-motion.js', [ 'react' ], $ver, false );
247 +
248 + // react-laag
249 + wp_register_script( 'react-laag', $url . 'build/vendor-react-laag.js', [ 'react' ], $ver, false );
250 +
251 + // HTML2Canvas
252 + wp_register_script( 'html2canvas', $url . 'build/vendor-html2canvas.js', [], $ver, false );
253 +
254 + // @beaverbuilder/app-core
255 + wp_register_script( 'bb-app-core', $url . 'build/vendor-bb-app-core.js', [ 'react', 'redux' ], $ver, false );
256 +
257 + // @beaverbuilder/cloud
258 + wp_register_script( 'bb-cloud', $url . 'build/vendor-bb-cloud.js', [ 'react' ], $ver, false );
259 +
260 + // @beaverbuilder/icons
261 + wp_register_script( 'bb-icons', $url . 'build/vendor-bb-icons.js', [ 'react' ], $ver, false );
262 +
263 + // @beaverbuilder/fluid
264 + $fluid_deps = [
265 + 'react',
266 + 'react-dom',
267 + 'redux',
268 + 'react-router-dom',
269 + 'classnames',
270 + 'framer-motion',
271 + 'react-laag',
272 + 'wp-i18n',
273 + 'bb-icons'
274 + ];
275 + wp_register_script( 'bb-fluid', $url . 'build/vendor-bb-fluid.js', $fluid_deps, $ver, false );
276 + wp_register_style( 'bb-fluid', $url . 'build/vendor-bb-fluid.css', [], $ver, null );
277 +
278 + // @beaverbuilder/forms
279 + wp_register_script( 'bb-forms', $url . 'build/vendor-bb-forms.js', [ 'bb-fluid' ], $ver, false );
280 + wp_register_style( 'bb-forms', $url . 'build/vendor-bb-forms.css', [ 'bb-fluid' ], $ver, null );
281 +
282 + }
283 +
173 284 /**
174 285 * Enqueue all scripts and styles
175 286 */
176 287 public function enqueue() {
@@ -177,12 +288,11 @@
177 288
178 289 $url = FL_ASSISTANT_URL;
179 290 $ver = FL_ASSISTANT_VERSION;
180 291
181 - wp_register_script( 'fl-fluid', $url . 'build/fl-assistant-fluid.bundle.js', [ 'react', 'react-dom' ], $ver, false );
182 - wp_register_style( 'fl-fluid', $url . 'build/fl-assistant-fluid.bundle.css', [], $ver, null );
292 + if ( $this->should_enqueue() ) {
183 293
184 - if ( $this->should_enqueue() ) {
294 + self::register_vendors();
185 295
186 296 $config = $this->generate_frontend_config();
187 297 $state = $this->generate_initial_state();
188 298
@@ -187,30 +297,41 @@
187 297 $state = $this->generate_initial_state();
188 298
189 299 // API - loaded in header
190 300 $js_deps = [
191 - 'fl-fluid',
192 - 'lodash',
193 301 'wp-i18n',
194 302 'wp-keycodes',
195 303 'wp-dom-ready',
196 304 'wp-components',
197 305 'wp-date',
306 + 'bb-fluid',
307 + 'bb-forms',
308 + 'bb-app-core',
309 + 'bb-cloud',
310 + 'bb-icons'
198 311 ];
312 + $css_deps = [
313 + 'bb-fluid',
314 + 'bb-forms',
315 + 'wp-components'
316 + ];
199 317
200 - wp_enqueue_style( 'fl-assistant-system', $url . 'build/fl-assistant-system.bundle.css', [ 'fl-fluid', 'wp-components' ], $ver, null );
201 - wp_enqueue_script( 'fl-assistant-system', $url . 'build/fl-assistant-system.bundle.js', $js_deps, $ver, false );
318 + // System - loaded in header
319 + wp_enqueue_style( 'fl-assistant', $url . 'build/system.css', $css_deps, $ver, null );
320 + wp_enqueue_script( 'fl-assistant', $url . 'build/system.js', $js_deps, $ver, false );
202 321
203 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_CONFIG', $config );
204 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_INITIAL_STATE', $state );
322 + wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_CONFIG', $config );
323 + wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_INITIAL_STATE', $state );
205 324
206 - // Apps - loaded in header
207 - wp_enqueue_style( 'fl-assistant-apps', $url . 'build/fl-assistant-apps.bundle.css', [], $ver, null );
208 - wp_enqueue_script( 'fl-assistant-apps', $url . 'build/fl-assistant-apps.bundle.js', $js_deps, $ver, false );
325 + // Apps - loaded in footer
326 + wp_enqueue_script( 'fl-assistant-apps', $url . 'build/apps.js', [ 'fl-assistant', 'html2canvas' ], $ver, true );
209 327
210 - // UI Render - loaded in footer
211 - wp_enqueue_style( 'fl-assistant-render', $url . 'build/fl-assistant-render.bundle.css', [], $ver, null );
212 - wp_enqueue_script( 'fl-assistant-render', $url . 'build/fl-assistant-render.bundle.js', $js_deps, $ver, true );
328 + // Currently don't need apps stylesheet
329 + //wp_enqueue_style( 'fl-assistant-apps', $url . 'build/apps.css', [ 'fl-assistant' ], $ver, null );
330 +
331 + // Render - loaded in footer
332 + wp_enqueue_script( 'fl-assistant-render', $url . 'build/render.js', [ 'fl-assistant' ], $ver, true );
333 + wp_enqueue_style( 'fl-assistant-render', $url . 'build/render.css', [ 'fl-assistant' ], $ver, null );
213 334
214 335 // WordPress Media Uploader
215 336 wp_enqueue_media();
216 337