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 +188 -56 0.3.1 → 1.5.5.1 View file →
@@ -6,10 +6,13 @@
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 -use WP_REST_Request;
12 15
13 16 /**
14 17 * Class OnEnqueueScripts
15 18 * @package FL\Assistant\Hooks\Actions
@@ -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,28 +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 - 'counts' => $this->get_counts(),
82 - 'shouldReduceMotion' => false, /* Disabled */
83 -
84 - /* New UI Props */
85 119 'appearance' => $user_state['appearance'],
86 120 'history' => $user_state['history'],
87 121 'searchHistory' => $user_state['searchHistory'],
88 - 'shouldShowLabels' => false, /* Disabled */
89 122 'window' => $user_state['window'],
123 + 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
124 + 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
90 125 ];
91 -
92 126 }
93 127
94 128 /**
95 129 *
@@ -102,49 +136,71 @@
102 136 */
103 137 public function generate_frontend_config() {
104 138
105 139 $current_user = $this->users->current( $this->user_transform );
140 + $theme_service = new ThemeService();
141 + $theme = $theme_service->get_current_theme_data();
106 142
107 143 return [
108 - 'adminURLs' => $this->site->get_admin_urls(),
109 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
110 - 'apiRoot' => esc_url_raw( get_rest_url() ),
111 - 'cloudUrl' => FL_ASSISTANT_CLOUD_URL,
112 - 'contentTypes' => $this->posts->get_types(),
113 - 'contentStatus' => $this->posts->get_stati(),
114 - 'currentPageView' => $this->site->get_current_view(),
115 - 'currentUser' => $current_user,
116 - 'defaultAppName' => 'fl-dashboard',
117 - 'emptyTrashDays' => EMPTY_TRASH_DAYS,
118 - 'isShowingAdminBar' => is_admin_bar_showing(),
119 - 'isAdmin' => is_admin(),
120 - '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' => [
121 170 'api' => wp_create_nonce( 'wp_rest' ),
122 171 'reply' => wp_create_nonce( 'replyto-comment' ),
123 172 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
124 173 'updates' => wp_create_nonce( 'updates' ),
125 174 ],
126 - 'pluginURL' => FL_ASSISTANT_URL,
127 - 'taxonomies' => $this->posts->get_taxononies(),
128 - '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,
129 190 ];
130 191 }
131 192
132 193 /**
133 - * Returns an array of all counts to hydrate the store.
134 - */
135 - public function get_counts() {
136 - $request = new WP_REST_Request( 'GET', '/fl-assistant/v1/counts' );
137 - $response = rest_do_request( $request );
138 -
139 - return $response->get_data();
140 - }
141 -
142 - /**
143 194 * Check if the frontend scripts/styles should be enqueued
144 195 */
145 196 public function should_enqueue() {
146 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 +
147 203 // Users must be logged in.
148 204 if ( ! is_user_logged_in() ) {
149 205 return false;
150 206 }
@@ -153,13 +209,23 @@
153 209 if ( is_customize_preview() ) {
154 210 return false;
155 211 }
156 212
157 - // Don't show in admin iframes.
158 - if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) {
213 + // Don't show in iframes.
214 + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
159 215 return false;
160 216 }
161 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 +
162 228 // User is logged in, and the current request is not customizer or an iframe
163 229 $state = UserState::get();
164 230
165 231 // Don't show Assistant in the WP Admin if the user has turned it off.
@@ -171,11 +237,66 @@
171 237 if ( ! current_user_can( 'edit_others_posts' ) ) {
172 238 return false;
173 239 }
174 240
175 - return true;
241 + return apply_filters( 'fl_assistant_should_enqueue', true );
176 242 }
177 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 +
178 299 /**
179 300 * Enqueue all scripts and styles
180 301 */
181 302 public function enqueue() {
@@ -182,40 +303,51 @@
182 303
183 304 $url = FL_ASSISTANT_URL;
184 305 $ver = FL_ASSISTANT_VERSION;
185 306
186 - wp_register_script( 'fl-fluid', $url . 'build/fl-assistant-fluid.bundle.js', [ 'react', 'react-dom' ], $ver, false );
187 - wp_register_style( 'fl-fluid', $url . 'build/fl-assistant-fluid.bundle.css', [], $ver, null );
188 - wp_enqueue_media();
189 307 if ( $this->should_enqueue() ) {
190 308
309 + self::register_vendors();
310 +
191 311 $config = $this->generate_frontend_config();
192 312 $state = $this->generate_initial_state();
193 313
194 314 // API - loaded in header
195 315 $js_deps = [
196 - 'fl-fluid',
197 - 'lodash',
198 - 'heartbeat',
199 316 'wp-i18n',
200 317 'wp-keycodes',
201 318 'wp-dom-ready',
319 + 'wp-components',
320 + 'wp-date',
321 + 'bb-fluid',
322 + 'bb-forms',
323 + 'bb-app-core',
324 + 'bb-cloud',
325 + 'bb-icons'
326 + ];
327 + $css_deps = [
328 + 'bb-fluid',
329 + 'bb-forms',
202 330 'wp-components'
203 331 ];
204 332
205 - wp_enqueue_style( 'fl-assistant-system', $url . 'build/fl-assistant-system.bundle.css', [ 'fl-fluid', 'wp-components' ], $ver, null );
206 - 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 );
207 336
208 - wp_localize_script( 'fl-assistant-system', 'FL_ASSISTANT_CONFIG', $config );
209 - 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 );
210 339
211 - // Apps - loaded in header
212 - wp_enqueue_style( 'fl-assistant-apps', $url . 'build/fl-assistant-apps.bundle.css', [], $ver, null );
213 - 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 );
214 343
215 - // UI Render - loaded in footer
216 - wp_enqueue_style( 'fl-assistant-render', $url . 'build/fl-assistant-render.bundle.css', [], $ver, null );
217 - 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 );
347 +
348 + // WordPress Media Uploader
349 + wp_enqueue_media();
218 350
219 351 do_action( 'fl_assistant_enqueue' );
220 352 }
221 353 }