PluginProbe
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration / 2.2.0
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration v2.2.0
2.2.1 2.2.0 2.1.0 2.0.15 2.0.12 2.0.10 2.0.4 2.0.1 2.0.0 1.95.3 1.95.2 1.95 1.91.6 trunk 1.11 1.12 1.13 1.20 1.21 1.22 1.23 1.30 1.31 1.32 1.35 All 44 releases
← All changes | app/Hooks/Handlers/AdminMenuHandler.php +30 -18 2.0.0 → 2.2.0 View file →
@@ -126,8 +126,17 @@
126 126 );
127 127
128 128 add_submenu_page(
129 129 'fluent-boards',
130 + __('Addons', 'fluent-boards'),
131 + __('Addons', 'fluent-boards'),
132 + 'manage_options',
133 + 'fluent-boards#/add-ons',
134 + [$this, 'render']
135 + );
136 +
137 + add_submenu_page(
138 + 'fluent-boards',
130 139 __('Settings', 'fluent-boards'),
131 140 __('Settings', 'fluent-boards'),
132 141 'manage_options',
133 142 'fluent-boards#/settings/general-settings',
@@ -148,11 +157,8 @@
148 157 $baseUrl = fluent_boards_page_url();
149 158
150 159 do_action('fluent_boards/rendering_app');
151 160
152 - // For subtask sync
153 - UpdateHandler::maybeSubtaskGroupSync();
154 -
155 161 App::make('view')->render('admin.menu', [
156 162 'name' => $name,
157 163 'slug' => $slug,
158 164 'menuItems' => $this->getMenuItems($app),
@@ -295,23 +301,11 @@
295 301
296 302 // Inject Vite HMR client in dev mode
297 303 Vite::injectViteClient();
298 304
299 - $isRtl = is_rtl();
300 - $adminAppCss = $isRtl ? 'scss/admin.scss' : 'scss/admin.scss';
301 - Vite::enqueueStyle($slug . '_admin_app', $adminAppCss);
305 + $isRtl = fluent_boards_is_rtl();
306 + Vite::enqueueStyle($slug . '_admin_app', 'scss/admin.scss');
302 307
303 - // In production, load the RTL version if needed
304 - if ($isRtl && !Vite::underDevelopment()) {
305 - $assets = $app['url.assets'];
306 - wp_enqueue_style(
307 - $slug . '_admin_app_rtl',
308 - $assets . 'admin/admin-rtl.css',
309 - [$slug . '_admin_app'],
310 - FLUENT_BOARDS_PLUGIN_VERSION
311 - );
312 - }
313 -
314 308 // Enqueue merged chunk CSS (Vue SFC styles) in production
315 309 if (!Vite::underDevelopment()) {
316 310 $assets = $app['url.assets'];
317 311 $styleCssPath = FLUENT_BOARDS_PLUGIN_PATH . 'assets/admin/style.css';
@@ -324,8 +318,23 @@
324 318 );
325 319 }
326 320 }
327 321
322 + // RTL overrides must load after style.css so rules appended to the
323 + // element-plus layer win by source order, not only by specificity.
324 + if ($isRtl) {
325 + $rtlDeps = [$slug . '_admin_app'];
326 + if (wp_style_is($slug . '_vite_style', 'enqueued')) {
327 + $rtlDeps[] = $slug . '_vite_style';
328 + }
329 + Vite::enqueueStyle(
330 + $slug . '_admin_app_rtl',
331 + 'scss/admin_rtl.scss',
332 + $rtlDeps,
333 + FLUENT_BOARDS_PLUGIN_VERSION
334 + );
335 + }
336 +
328 337 do_action('fluent-boards_loading_app');
329 338
330 339 Vite::enqueueScript(
331 340 $slug . '_admin_app',
@@ -379,8 +388,9 @@
379 388 'has_pro' => !!defined('FLUENT_BOARDS_PRO_VERSION'),
380 389 'upgrade_url' => fluent_boards_get_upgrade_url(),
381 390 'board_solid_colors' => Constant::BOARD_BACKGROUND_DEFAULT_SOLID_COLORS,
382 391 'board_gradient_colors' => Constant::BOARD_BACKGROUND_DEFAULT_GRADIENT_COLORS,
392 + 'label_color_presets' => Constant::LABEL_COLOR_PRESETS,
383 393 'ai_features' => [
384 394 'enabled' => (new \FluentBoards\App\Services\AiService())->isReady(),
385 395 ],
386 396 'me' => [
@@ -404,8 +414,10 @@
404 414 'trans' => TransStrings::getStrings(),
405 415 'is_new' => Board::count() == 0 ? 'yes' : 'no',
406 416 'is_onboarded' => $onboardingValue,
407 417 'render_in' => is_admin() ? 'admin' : 'front',
418 + // Gates wp-admin links (WP profile, CRM, application passwords) so the frontend portal shows no admin traces.
419 + 'can_access_wp_admin' => (bool) apply_filters('fluent_boards/can_access_wp_admin', is_admin() || current_user_can('manage_options'), $currentUser),
408 420 'dashboard_notices' => apply_filters('fluent_boards/dashboard_notices', []),
409 421 'is_beta' => defined('FLUENT_BOARDS_PRO_VERSION') && !defined('FLUENT_BOARDS_PRO_LIVE'),
410 422 'advanced_modules' => fluent_boards_get_pref_settings(),
411 423 'crm_base_url' => defined('FLUENTCRM') ? fluentcrm_menu_url_base() : '',
@@ -419,9 +431,9 @@
419 431 'dashiconsCss' => add_query_arg(
420 432 'ver', get_bloginfo('version'),
421 433 site_url('/wp-includes/css/dashicons.css')
422 434 ),
423 - 'is_rtl' => is_rtl(),
435 + 'is_rtl' => fluent_boards_is_rtl(),
424 436 'board_menu_items' => BoardMenuHandler::getMenuItems(),
425 437 'reminder_types' => defined('FLUENT_BOARDS_PRO') ? Helper::taskReminderTypes() : [],
426 438 ]);
427 439 }