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 +184 -50 0.4.1 → 1.5.5.1 View file →
@@ -6,8 +6,12 @@
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;
12 +use FL\Assistant\Helpers\BeaverBuilderHelper;
13 +use FL\Assistant\System\Integrations\BeaverBuilder;
10 14 use FLBuilderModel;
11 15
12 16 /**
13 17 * Class OnEnqueueScripts
@@ -24,8 +28,10 @@
24 28 * @var PostsRepository
25 29 */
26 30 protected $posts;
27 31
32 + protected $beaver_builder;
33 +
28 34 /**
29 35 * @var Site
30 36 */
31 37 protected $site;
@@ -47,9 +53,10 @@
47 53 public function __construct(
48 54 UsersRepository $users,
49 55 PostsRepository $posts,
50 56 Site $site,
51 - UserTransformer $user_transform
57 + UserTransformer $user_transform,
58 + BeaverBuilder $beaver_builder
52 59 ) {
53 60
54 61 $this->users = $users;
55 62 $this->posts = $posts;
@@ -54,11 +61,11 @@
54 61 $this->users = $users;
55 62 $this->posts = $posts;
56 63 $this->site = $site;
57 64 $this->user_transform = $user_transform;
65 + $this->beaver_builder = $beaver_builder;
58 66 }
59 67
60 -
61 68 /**
62 69 * @return array
63 70 * @throws \Exception
64 71 */
@@ -67,27 +74,56 @@
67 74 return [];
68 75 }
69 76
70 77 $user_state = UserState::get();
78 + $config = self::generate_frontend_config();
79 + $frame = $config[ 'frameDefaults' ];
71 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 +
72 108 // Always show in admin bar and hidden in wp-admin.
73 109 if ( is_admin() ) {
74 - $user_state['window']['isHidden'] = true;
75 - $user_state['window']['hiddenAppearance'] = 'admin_bar';
110 + $window['isHidden'] = true;
111 + // $window['hiddenAppearance'] = 'admin_bar';
76 112 }
77 113
114 + $user_state['window'] = $window;
115 +
78 116 return [
117 + 'shouldShowLabels' => false, /* Disabled */
79 118 'appOrder' => $user_state['appOrder'],
80 - 'shouldReduceMotion' => false, /* Disabled */
81 -
82 - /* New UI Props */
83 119 'appearance' => $user_state['appearance'],
84 120 'history' => $user_state['history'],
85 121 'searchHistory' => $user_state['searchHistory'],
86 - 'shouldShowLabels' => false, /* Disabled */
87 122 'window' => $user_state['window'],
123 + 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
124 + 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
88 125 ];
89 -
90 126 }
91 127
92 128 /**
93 129 *
@@ -100,38 +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 - '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' => [
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' => [
119 170 'api' => wp_create_nonce( 'wp_rest' ),
120 171 'reply' => wp_create_nonce( 'replyto-comment' ),
121 172 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
122 173 'updates' => wp_create_nonce( 'updates' ),
123 174 ],
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 - ],*/
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,
134 190 ];
135 191 }
136 192
137 193 /**
@@ -138,8 +194,13 @@
138 194 * Check if the frontend scripts/styles should be enqueued
139 195 */
140 196 public function should_enqueue() {
141 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 +
142 203 // Users must be logged in.
143 204 if ( ! is_user_logged_in() ) {
144 205 return false;
145 206 }
@@ -148,13 +209,23 @@
148 209 if ( is_customize_preview() ) {
149 210 return false;
150 211 }
151 212
152 - // Don't show in admin iframes.
153 - if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) {
213 + // Don't show in iframes.
214 + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
154 215 return false;
155 216 }
156 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 +
157 228 // User is logged in, and the current request is not customizer or an iframe
158 229 $state = UserState::get();
159 230
160 231 // Don't show Assistant in the WP Admin if the user has turned it off.
@@ -166,11 +237,66 @@
166 237 if ( ! current_user_can( 'edit_others_posts' ) ) {
167 238 return false;
168 239 }
169 240
170 - return true;
241 + return apply_filters( 'fl_assistant_should_enqueue', true );
171 242 }
172 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 +
173 299 /**
174 300 * Enqueue all scripts and styles
175 301 */
176 302 public function enqueue() {
@@ -177,12 +303,11 @@
177 303
178 304 $url = FL_ASSISTANT_URL;
179 305 $ver = FL_ASSISTANT_VERSION;
180 306
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 );
307 + if ( $this->should_enqueue() ) {
183 308
184 - if ( $this->should_enqueue() ) {
309 + self::register_vendors();
185 310
186 311 $config = $this->generate_frontend_config();
187 312 $state = $this->generate_initial_state();
188 313
@@ -187,30 +312,39 @@
187 312 $state = $this->generate_initial_state();
188 313
189 314 // API - loaded in header
190 315 $js_deps = [
191 - 'fl-fluid',
192 - 'lodash',
193 316 'wp-i18n',
194 317 'wp-keycodes',
195 318 'wp-dom-ready',
196 319 'wp-components',
197 320 'wp-date',
321 + 'bb-fluid',
322 + 'bb-forms',
323 + 'bb-app-core',
324 + 'bb-cloud',
325 + 'bb-icons'
198 326 ];
327 + $css_deps = [
328 + 'bb-fluid',
329 + 'bb-forms',
330 + 'wp-components'
331 + ];
199 332
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 );
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 );
202 336
203 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_CONFIG', $config );
204 - 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 );
205 339
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 );
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 );
209 343
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 );
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 );
213 347
214 348 // WordPress Media Uploader
215 349 wp_enqueue_media();
216 350