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 +169 -46 0.41.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,41 +288,53 @@
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 );
183 - wp_enqueue_media();
184 292 if ( $this->should_enqueue() ) {
185 293
294 + self::register_vendors();
295 +
186 296 $config = $this->generate_frontend_config();
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 - 'heartbeat',
194 301 'wp-i18n',
195 302 'wp-keycodes',
196 303 'wp-dom-ready',
197 304 'wp-components',
198 305 'wp-date',
306 + 'bb-fluid',
307 + 'bb-forms',
308 + 'bb-app-core',
309 + 'bb-cloud',
310 + 'bb-icons'
199 311 ];
312 + $css_deps = [
313 + 'bb-fluid',
314 + 'bb-forms',
315 + 'wp-components'
316 + ];
200 317
201 - wp_enqueue_style( 'fl-assistant-system', $url . 'build/fl-assistant-system.bundle.css', [ 'fl-fluid', 'wp-components' ], $ver, null );
202 - 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 );
203 321
204 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_CONFIG', $config );
205 - 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 );
206 324
207 - // Apps - loaded in header
208 - wp_enqueue_style( 'fl-assistant-apps', $url . 'build/fl-assistant-apps.bundle.css', [], $ver, null );
209 - 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 );
210 327
211 - // UI Render - loaded in footer
212 - wp_enqueue_style( 'fl-assistant-render', $url . 'build/fl-assistant-render.bundle.css', [], $ver, null );
213 - 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 );
334 +
335 + // WordPress Media Uploader
336 + wp_enqueue_media();
214 337
215 338 do_action( 'fl_assistant_enqueue' );
216 339 }
217 340 }