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 -47 0.5.0 → 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,29 +74,56 @@
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 -
83 - /* New UI Props */
84 119 'appearance' => $user_state['appearance'],
85 120 'history' => $user_state['history'],
86 121 'searchHistory' => $user_state['searchHistory'],
87 - 'shouldShowLabels' => false, /* Disabled */
88 122 'window' => $user_state['window'],
89 123 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
90 124 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
91 125 ];
92 -
93 126 }
94 127
95 128 /**
96 129 *
@@ -103,34 +136,58 @@
103 136 */
104 137 public function generate_frontend_config() {
105 138
106 139 $current_user = $this->users->current( $this->user_transform );
140 + $theme_service = new ThemeService();
141 + $theme = $theme_service->get_current_theme_data();
107 142
108 143 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' => [
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' => [
125 170 'api' => wp_create_nonce( 'wp_rest' ),
126 171 'reply' => wp_create_nonce( 'replyto-comment' ),
127 172 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
128 173 'updates' => wp_create_nonce( 'updates' ),
129 174 ],
130 - 'pluginURL' => FL_ASSISTANT_URL,
131 - 'taxonomies' => $this->posts->get_taxononies(),
132 - '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,
133 190 ];
134 191 }
135 192
136 193 /**
@@ -137,8 +194,13 @@
137 194 * Check if the frontend scripts/styles should be enqueued
138 195 */
139 196 public function should_enqueue() {
140 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 +
141 203 // Users must be logged in.
142 204 if ( ! is_user_logged_in() ) {
143 205 return false;
144 206 }
@@ -147,13 +209,23 @@
147 209 if ( is_customize_preview() ) {
148 210 return false;
149 211 }
150 212
151 - // Don't show in admin iframes.
152 - if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) {
213 + // Don't show in iframes.
214 + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
153 215 return false;
154 216 }
155 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 +
156 228 // User is logged in, and the current request is not customizer or an iframe
157 229 $state = UserState::get();
158 230
159 231 // Don't show Assistant in the WP Admin if the user has turned it off.
@@ -165,11 +237,66 @@
165 237 if ( ! current_user_can( 'edit_others_posts' ) ) {
166 238 return false;
167 239 }
168 240
169 - return true;
241 + return apply_filters( 'fl_assistant_should_enqueue', true );
170 242 }
171 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 +
172 299 /**
173 300 * Enqueue all scripts and styles
174 301 */
175 302 public function enqueue() {
@@ -176,12 +303,11 @@
176 303
177 304 $url = FL_ASSISTANT_URL;
178 305 $ver = FL_ASSISTANT_VERSION;
179 306
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 );
307 + if ( $this->should_enqueue() ) {
182 308
183 - if ( $this->should_enqueue() ) {
309 + self::register_vendors();
184 310
185 311 $config = $this->generate_frontend_config();
186 312 $state = $this->generate_initial_state();
187 313
@@ -186,34 +312,42 @@
186 312 $state = $this->generate_initial_state();
187 313
188 314 // API - loaded in header
189 315 $js_deps = [
190 - 'fl-fluid',
191 316 'wp-i18n',
192 317 'wp-keycodes',
193 318 'wp-dom-ready',
194 319 'wp-components',
195 320 'wp-date',
321 + 'bb-fluid',
322 + 'bb-forms',
323 + 'bb-app-core',
324 + 'bb-cloud',
325 + 'bb-icons'
196 326 ];
327 + $css_deps = [
328 + 'bb-fluid',
329 + 'bb-forms',
330 + 'wp-components'
331 + ];
197 332
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 );
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 );
200 336
201 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_CONFIG', $config );
202 - 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 );
203 339
204 - // Apps - loaded in header
205 - 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 );
206 343
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 );
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 );
210 347
211 348 // WordPress Media Uploader
212 349 wp_enqueue_media();
213 -
214 - // Drip email script
215 - wp_enqueue_script( 'fl-assistant-drip', 'https://tag.getdrip.com/3112548.js', [], $ver, false );
216 350
217 351 do_action( 'fl_assistant_enqueue' );
218 352 }
219 353 }