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