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 +102 -38 0.6.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,17 +74,47 @@
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 [
80 - 'shouldReduceMotion' => false, /* Disabled */
81 117 'shouldShowLabels' => false, /* Disabled */
82 118 'appOrder' => $user_state['appOrder'],
83 119 'appearance' => $user_state['appearance'],
84 120 'history' => $user_state['history'],
@@ -100,40 +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 - 'contentTypes' => $this->posts->get_types(),
110 - 'contentStatus' => $this->posts->get_stati(),
111 - 'currentPageView' => $this->site->get_current_view(),
112 - 'currentUser' => $current_user,
113 - 'defaultAppName' => 'fl-home',
114 - 'emptyTrashDays' => EMPTY_TRASH_DAYS,
115 - 'isShowingAdminBar' => is_admin_bar_showing(),
116 - 'isAdmin' => is_admin(),
117 - 'isSiteAdmin' => is_super_admin(),
118 - 'isLocalhost' => $this->site->is_local(),
119 - 'mockup' => Mockup::get(),
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(),
129 - 'cloudConfig' => [
130 - 'apiUrl' => FL_ASSISTANT_CLOUD_URL,
131 - 'appUrl' => FL_ASSISTANT_CLOUD_APP_URL,
132 - 'pusherKey' => FL_ASSISTANT_PUSHER_KEY,
133 - 'pusherCluster' => FL_ASSISTANT_PUSHER_CLUSTER,
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,
134 185 ],
135 - 'embedInBB' => FL_ASST_SUPPORTS_BB,
186 + 'embedInBB' => FL_ASST_SUPPORTS_BB,
187 + 'isBBExtension' => BeaverBuilderHelper::is_assistant_extension(),
188 + 'themeSlug' => $theme['slug'],
189 + 'themeParentSlug' => $theme['parent'] ? $theme['parent']['slug'] : null,
136 190 ];
137 191 }
138 192
139 193 /**
@@ -140,8 +194,13 @@
140 194 * Check if the frontend scripts/styles should be enqueued
141 195 */
142 196 public function should_enqueue() {
143 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 +
144 203 // Users must be logged in.
145 204 if ( ! is_user_logged_in() ) {
146 205 return false;
147 206 }
@@ -150,10 +209,10 @@
150 209 if ( is_customize_preview() ) {
151 210 return false;
152 211 }
153 212
154 - // Don't show in admin iframes.
155 - if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST ) {
213 + // Don't show in iframes.
214 + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
156 215 return false;
157 216 }
158 217
159 218 // Don't show in post previews.
@@ -160,8 +219,13 @@
160 219 if ( isset( $_GET['fl_asst_post_preview'] ) ) {
161 220 return false;
162 221 }
163 222
223 + // Don't show in Oxygen.
224 + if ( isset( $_GET['ct_builder'] ) ) {
225 + return false;
226 + }
227 +
164 228 // User is logged in, and the current request is not customizer or an iframe
165 229 $state = UserState::get();
166 230
167 231 // Don't show Assistant in the WP Admin if the user has turned it off.
@@ -173,9 +237,9 @@
173 237 if ( ! current_user_can( 'edit_others_posts' ) ) {
174 238 return false;
175 239 }
176 240
177 - return true;
241 + return apply_filters( 'fl_assistant_should_enqueue', true );
178 242 }
179 243
180 244 public function register_vendors() {
181 245
@@ -236,15 +300,15 @@
236 300 * Enqueue all scripts and styles
237 301 */
238 302 public function enqueue() {
239 303
240 - self::register_vendors();
241 -
242 304 $url = FL_ASSISTANT_URL;
243 305 $ver = FL_ASSISTANT_VERSION;
244 306
245 307 if ( $this->should_enqueue() ) {
246 308
309 + self::register_vendors();
310 +
247 311 $config = $this->generate_frontend_config();
248 312 $state = $this->generate_initial_state();
249 313
250 314 // API - loaded in header
@@ -272,15 +336,15 @@
272 336
273 337 wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_CONFIG', $config );
274 338 wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_INITIAL_STATE', $state );
275 339
276 - // Apps - loaded in header
277 - wp_enqueue_script( 'fl-assistant-apps', $url . 'build/apps.js', [ 'fl-assistant', 'html2canvas' ], $ver, false );
278 - wp_enqueue_style( 'fl-assistant-apps', $url . 'build/apps.css', [ 'fl-assistant' ], $ver, null );
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 );
279 343
280 344 // Render - loaded in footer
345 + wp_enqueue_script( 'fl-assistant-render', $url . 'build/render.js', [ 'fl-assistant' ], $ver, true );
281 346 wp_enqueue_style( 'fl-assistant-render', $url . 'build/render.css', [ 'fl-assistant' ], $ver, null );
282 - wp_enqueue_script( 'fl-assistant-render', $url . 'build/render.js', [ 'fl-assistant' ], $ver, true );
283 347
284 348 // WordPress Media Uploader
285 349 wp_enqueue_media();
286 350