From d457e1a176a6be28b1ec84a2782d34bdc17d049e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Sun, 10 Dec 2023 16:59:55 +0100 Subject: [PATCH 01/12] IBX-7329: Updated naming --- src/lib/Tab/LocationView/ContentTab.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Tab/LocationView/ContentTab.php b/src/lib/Tab/LocationView/ContentTab.php index 100a01a5f3..100fc9c9c6 100644 --- a/src/lib/Tab/LocationView/ContentTab.php +++ b/src/lib/Tab/LocationView/ContentTab.php @@ -53,7 +53,7 @@ public function getIdentifier(): string public function getName(): string { - return $this->translator->trans(/** @Desc("Data") */ 'tab.name.data', [], 'ibexa_locationview'); + return $this->translator->trans(/** @Desc("Fields") */ 'tab.name.data', [], 'ibexa_locationview'); } public function getOrder(): int From 9a3be947094983df4144a3dfdf91f1c4ae2336cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Sun, 10 Dec 2023 17:23:10 +0100 Subject: [PATCH 02/12] IBX-7329: Renamed "Focus mode" to "Distraction free mode" --- .../Resources/encore/ibexa.js.config.js | 2 +- ...mode.js => admin.distraction.free.mode.js} | 30 +++++------ .../scss/fieldType/edit/_base-field.scss | 26 +++++----- .../translations/ibexa_locationview.en.xliff | 4 +- .../Resources/translations/messages.en.xliff | 50 +++++++++---------- .../admin/content/form_fields.html.twig | 8 +-- .../themes/admin/ui/form_fields.html.twig | 26 +++++----- 7 files changed, 73 insertions(+), 73 deletions(-) rename src/bundle/Resources/public/js/scripts/{admin.focus.mode.js => admin.distraction.free.mode.js} (51%) diff --git a/src/bundle/Resources/encore/ibexa.js.config.js b/src/bundle/Resources/encore/ibexa.js.config.js index 72deeb9054..df29adb2c6 100644 --- a/src/bundle/Resources/encore/ibexa.js.config.js +++ b/src/bundle/Resources/encore/ibexa.js.config.js @@ -38,7 +38,7 @@ const layout = [ path.resolve(__dirname, '../public/js/scripts/admin.form.autosubmit.js'), path.resolve(__dirname, '../public/js/scripts/admin.anchor.navigation'), path.resolve(__dirname, '../public/js/scripts/admin.context.menu'), - path.resolve(__dirname, '../public/js/scripts/admin.focus.mode.js'), + path.resolve(__dirname, '../public/js/scripts/admin.distraction.free.mode.js'), path.resolve(__dirname, '../public/js/scripts/admin.user.mode.js'), path.resolve(__dirname, '../public/js/scripts/sidebar/main.menu.js'), path.resolve(__dirname, '../public/js/scripts/admin.input.text.js'), diff --git a/src/bundle/Resources/public/js/scripts/admin.focus.mode.js b/src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js similarity index 51% rename from src/bundle/Resources/public/js/scripts/admin.focus.mode.js rename to src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js index b532d3a2b7..dc5314f475 100644 --- a/src/bundle/Resources/public/js/scripts/admin.focus.mode.js +++ b/src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js @@ -1,20 +1,20 @@ (function (global, doc) { let activeFieldEdit = null; - const FOCUS_MODE_ENABLE_EVENT_NAME = 'ibexa-focus-mode:enable'; - const FOCUS_MODE_DISABLE_EVENT_NAME = 'ibexa-focus-mode:disable'; - const focusModeEnableBtns = doc.querySelectorAll('.ibexa-field-edit__focus-mode-control-btn--enable'); - const focusModeDisbaleBtns = doc.querySelectorAll('.ibexa-field-edit__focus-mode-control-btn--disable'); - const changeFocusModeState = (active) => { + const DISTRACTION_FREE_MODE_ENABLE_EVENT_NAME = 'ibexa-distraction-free:enable'; + const DISTRACTION_FREE_DISABLE_EVENT_NAME = 'ibexa-distraction-free:disable'; + const distractionFreeModeEnableBtns = doc.querySelectorAll('.ibexa-field-edit__distraction-free-control-btn--enable'); + const distractionFreeModeDisableBtns = doc.querySelectorAll('.ibexa-field-edit__distraction-free-control-btn--disable'); + const changeDistractionFreeModeState = (active) => { if (!activeFieldEdit) { return; } - const dispatchEventName = active ? FOCUS_MODE_ENABLE_EVENT_NAME : FOCUS_MODE_DISABLE_EVENT_NAME; + const dispatchEventName = active ? DISTRACTION_FREE_MODE_ENABLE_EVENT_NAME : DISTRACTION_FREE_DISABLE_EVENT_NAME; const editorSourceElement = activeFieldEdit.querySelector('.ibexa-data-source__richtext'); const editorInstance = editorSourceElement.ckeditorInstance; - activeFieldEdit.classList.toggle('ibexa-field-edit--focus-mode-active', active); - editorInstance.set('focusModeActive', active); + activeFieldEdit.classList.toggle('ibexa-field-edit--distraction-free-mode-active', active); + editorInstance.set('distractionFreeModeActive', active); doc.body.dispatchEvent( new CustomEvent(dispatchEventName, { @@ -30,33 +30,33 @@ }; const handleKeyPress = (event) => { if (event.key === 'Escape') { - changeFocusModeState(false); + changeDistractionFreeModeState(false); } }; - focusModeEnableBtns.forEach((btn) => { + distractionFreeModeEnableBtns.forEach((btn) => { btn.addEventListener( 'click', ({ currentTarget }) => { activeFieldEdit = currentTarget.closest('.ibexa-field-edit'); - changeFocusModeState(true); + changeDistractionFreeModeState(true); }, false, ); }); - focusModeDisbaleBtns.forEach((btn) => { - btn.addEventListener('click', () => changeFocusModeState(false), false); + distractionFreeModeDisableBtns.forEach((btn) => { + btn.addEventListener('click', () => changeDistractionFreeModeState(false), false); }); doc.body.addEventListener( - FOCUS_MODE_ENABLE_EVENT_NAME, + DISTRACTION_FREE_MODE_ENABLE_EVENT_NAME, () => { doc.body.addEventListener('keydown', handleKeyPress, false); }, false, ); doc.body.addEventListener( - FOCUS_MODE_DISABLE_EVENT_NAME, + DISTRACTION_FREE_DISABLE_EVENT_NAME, () => { doc.body.removeEventListener('keydown', handleKeyPress, false); }, diff --git a/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss b/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss index c8c1adfba8..98cf2c0fed 100644 --- a/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss +++ b/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss @@ -15,7 +15,7 @@ color: $ibexa-color-danger; } - &__focus-mode { + &__distraction-free-mode { display: flex; flex-direction: column; height: auto; @@ -23,11 +23,11 @@ border-radius: $ibexa-border-radius $ibexa-border-radius 0 0; } - &__focus-mode-notice-container { + &__distraction-free-mode-notice-container { display: none; } - &__focus-mode-control-container { + &__distraction-free-mode-control-container { display: flex; align-self: flex-end; @@ -36,7 +36,7 @@ } } - &__focus-mode-control-btn { + &__distraction-free-mode-control-btn { align-self: flex-end; &--enable { @@ -93,12 +93,12 @@ } } - &--has-focus-mode { + &--has-distraction-free-mode { display: flex; flex-wrap: wrap; .ibexa-field-edit { - &__focus-mode { + &__distraction-free-mode { margin: auto 0 0; align-self: baseline; } @@ -107,7 +107,7 @@ width: 80%; } - &__focus-mode { + &__distraction-free-mode { width: 20%; } @@ -117,7 +117,7 @@ } } - &--focus-mode-active { + &--distraction-free-mode-active { position: fixed; top: 0; left: 0; @@ -133,18 +133,18 @@ display: none; } - &__focus-mode { + &__distraction-free-mode { width: 100%; height: fit-content; padding: calculateRem(32px) calculateRem(32px) 0 calculateRem(32px); } - &__focus-mode-notice-container { + &__distraction-free-mode-notice-container { display: block; width: 100%; } - &__focus-mode-control-container { + &__distraction-free-mode-control-container { display: flex; justify-content: space-between; width: 100%; @@ -156,7 +156,7 @@ } } - &__focus-mode-control-btn { + &__distraction-free-mode-control-btn { margin: 0; &--enable { @@ -188,7 +188,7 @@ } } - &--focus-mode-active.is-invalid { + &--distraction-free-mode-active.is-invalid { .ibexa-field-edit { &__data { border-radius: 0; diff --git a/src/bundle/Resources/translations/ibexa_locationview.en.xliff b/src/bundle/Resources/translations/ibexa_locationview.en.xliff index fb26408d19..ad3086193a 100644 --- a/src/bundle/Resources/translations/ibexa_locationview.en.xliff +++ b/src/bundle/Resources/translations/ibexa_locationview.en.xliff @@ -277,8 +277,8 @@ key: tab.name.authors - Data - Data + Fields + Fields key: tab.name.data diff --git a/src/bundle/Resources/translations/messages.en.xliff b/src/bundle/Resources/translations/messages.en.xliff index 8b59c7a9a0..5172d0cff3 100644 --- a/src/bundle/Resources/translations/messages.en.xliff +++ b/src/bundle/Resources/translations/messages.en.xliff @@ -261,6 +261,31 @@ No results found key: dashboard.charts.no_results + + Exit Distraction free mode + Exit Distraction free mode + key: distraction_free_mode.disable.label + + + Exit Distraction free mode. + Exit Distraction free mode. + key: distraction_free_mode.disable.tooltip + + + To exit Distraction free mode, click the %icon% or press Esc. + To exit Distraction free mode, click the %icon% or press Esc. + key: distraction_free_mode.disable_hint + + + Distraction free mode + Distraction free mode + key: distraction_free_mode.enable.label + + + Enter distraction free mode. It shows only rich text editor toolbar and focuses your attention on editing text. + Enter distraction free mode. It shows only rich text editor toolbar and focuses your attention on editing text. + key: distraction_free_mode.enable.tooltip + Search... Search... @@ -428,31 +453,6 @@ Show key: fieldview.toggler.show - - Exit focus mode - Exit focus mode - key: focus_mode.disable.label - - - Exit focus mode. - Exit focus mode. - key: focus_mode.disable.tooltip - - - To exit focus mode, click the %icon% or press Esc. - To exit focus mode, click the %icon% or press Esc. - key: focus_mode.disable_hint - - - Focus mode - Focus mode - key: focus_mode.enable.label - - - Enter focus mode. It shows only rich text editor toolbar and focuses your attention on editing text. - Enter focus mode. It shows only rich text editor toolbar and focuses your attention on editing text. - key: focus_mode.enable.tooltip - diff --git a/src/bundle/Resources/views/themes/admin/content/form_fields.html.twig b/src/bundle/Resources/views/themes/admin/content/form_fields.html.twig index c8209085e5..968428750d 100644 --- a/src/bundle/Resources/views/themes/admin/content/form_fields.html.twig +++ b/src/bundle/Resources/views/themes/admin/content/form_fields.html.twig @@ -80,10 +80,10 @@ {% set fieldtype_identifier = fieldtype.vars.value.fieldDefinition.fieldTypeIdentifier %} {% set translation_mode = fieldtype.vars.mainLanguageCode != fieldtype.vars.languageCode %} {% set fieldtype_is_not_translatable = translation_mode and not fieldtype.vars.value.fieldDefinition.isTranslatable %} - {% set has_focus_mode = fieldtype_identifier == 'ezrichtext' %} + {% set has_distraction_free_mode = fieldtype_identifier == 'ezrichtext' %} {% set widget_wrapper_attr = widget_wrapper_attr|default({})|merge({'class': (widget_wrapper_attr.class|default('') ~ ' ibexa-field-edit__data ibexa-field-edit__data')|trim}) %} - {% set wrapper_class = 'ibexa-field-edit ibexa-field-edit--' ~ fieldtype_identifier ~ ' ibexa-field-edit ibexa-field-edit--' ~ fieldtype_identifier ~ (has_focus_mode ? ' ibexa-field-edit--has-focus-mode') %} + {% set wrapper_class = 'ibexa-field-edit ibexa-field-edit--' ~ fieldtype_identifier ~ ' ibexa-field-edit ibexa-field-edit--' ~ fieldtype_identifier ~ (has_distraction_free_mode ? ' ibexa-field-edit--has-distraction-free-mode') %} {% if fieldtype.vars.disabled %} {% set wrapper_class = wrapper_class ~ ' ibexa-field-edit--disabled ibexa-field-edit--disabled' %} @@ -118,8 +118,8 @@ {% with { 'compound': false } %}{{ block('form_label') }}{% endwith %} - {% if has_focus_mode %} - {{- block('focus_mode') }} + {% if has_distraction_free_mode %} + {{- block('distraction_free_mode') }} {% endif %} {% if widget_container_block is defined %} diff --git a/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig b/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig index 552faa8244..5b5de1fa60 100644 --- a/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig @@ -507,18 +507,18 @@ {%- endblock %} -{%- block focus_mode -%} +{%- block distraction_free_mode -%} {%- set title_icon -%} {%- endset -%} {%- set title -%} - {{ 'focus_mode.disable_hint'|trans({ '%icon%': title_icon|raw })|desc('To exit focus mode, click the %icon% or press Esc.')|raw }} + {{ 'distraction_free_mode.disable_hint'|trans({ '%icon%': title_icon|raw })|desc('To exit distraction free mode, click the %icon% or press Esc.')|raw }} {%- endset -%} -
-
+
+
{% include '@ibexadesign/ui/component/alert/alert.html.twig' with { type: 'complementary', title, @@ -526,31 +526,31 @@ show_close_btn: true } only %}
-
-
+
+
{{- form_label(form) -}}
-
- -
From 52e2681dcf00486b4917031e2c5df7ebd0c92863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Sun, 10 Dec 2023 20:04:58 +0100 Subject: [PATCH 03/12] IBX-7329: Renamed smart / expert mode to focus mode --- ...Controller.php => FocusModeController.php} | 22 ++++---- .../Configuration/Parser/AdminUiParser.php | 18 +++---- .../Resources/config/default_parameters.yaml | 2 +- src/bundle/Resources/config/routing.yaml | 8 +-- .../config/services/controllers.yaml | 2 +- .../Resources/config/services/twig.yaml | 2 +- .../config/services/user_settings.yaml | 6 +-- .../Resources/encore/ibexa.js.config.js | 2 +- ...admin.user.mode.js => admin.focus.mode.js} | 2 +- .../translations/ibexa_admin_ui.en.xliff | 16 +++--- .../translations/ibexa_fields_groups.en.xliff | 21 -------- .../translations/ibexa_user_settings.en.xliff | 52 +++++++++++++++++-- .../Resources/translations/messages.en.xliff | 4 +- .../content/tab/translations/tab.html.twig | 4 +- ...rm.html.twig => focus_mode_form.html.twig} | 2 +- .../themes/admin/ui/form_fields.html.twig | 8 +-- .../views/themes/admin/ui/menu/user.html.twig | 4 +- ...deExtension.php => FocusModeExtension.php} | 14 ++--- src/lib/Behat/Component/UpperMenu.php | 16 +++--- src/lib/Behat/Page/ContentViewPage.php | 2 +- ...ChangeData.php => FocusModeChangeData.php} | 14 ++--- ...ChangeType.php => FocusModeChangeType.php} | 10 ++-- src/lib/Form/Type/User/UserModeChoiceType.php | 6 +-- src/lib/Menu/MainMenuBuilder.php | 6 +-- ...ModeEnabled.php => IsFocusModeEnabled.php} | 14 ++--- src/lib/Tab/LocationView/AuthorsTab.php | 6 +-- src/lib/Tab/LocationView/DetailsTab.php | 6 +-- src/lib/Tab/LocationView/LocationsTab.php | 6 +-- src/lib/Tab/LocationView/VersionsTab.php | 8 +-- .../{UserMode.php => FocusMode.php} | 33 ++++++------ ...ionTest.php => FocusModeExtensionTest.php} | 14 ++--- .../focus_mode/ibexa_is_focus_mode_off.test | 8 +++ .../focus_mode/ibexa_is_focus_mode_on.test | 8 +++ .../user_mode/ibexa_is_expert_mode.test | 8 --- .../user_mode/ibexa_is_smart_mode.test | 8 --- tests/lib/Menu/MainMenuBuilerTest.php | 6 +-- ...ledTest.php => IsFocusModeEnabledTest.php} | 20 +++---- .../AbstractTabVisibilityTestCase.php | 4 +- .../LocationView/AuthorsTabVisibilityTest.php | 6 +-- .../LocationView/DetailsTabVisibilityTest.php | 6 +-- .../LocationsTabVisibilityTest.php | 6 +-- .../VersionsTabVisibilityTest.php | 10 ++-- 42 files changed, 221 insertions(+), 199 deletions(-) rename src/bundle/Controller/User/{UserModeController.php => FocusModeController.php} (75%) rename src/bundle/Resources/public/js/scripts/{admin.user.mode.js => admin.focus.mode.js} (84%) delete mode 100644 src/bundle/Resources/translations/ibexa_fields_groups.en.xliff rename src/bundle/Resources/views/themes/admin/ui/{user_mode_form.html.twig => focus_mode_form.html.twig} (83%) rename src/bundle/Templating/Twig/{UserModeExtension.php => FocusModeExtension.php} (64%) rename src/lib/Form/Data/User/{UserModeChangeData.php => FocusModeChangeData.php} (57%) rename src/lib/Form/Type/User/{UserModeChangeType.php => FocusModeChangeType.php} (77%) rename src/lib/Specification/UserMode/{IsUserModeEnabled.php => IsFocusModeEnabled.php} (63%) rename src/lib/UserSetting/{UserMode.php => FocusMode.php} (70%) rename tests/bundle/Templating/Twig/{UserModeExtensionTest.php => FocusModeExtensionTest.php} (64%) create mode 100644 tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_off.test create mode 100644 tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_on.test delete mode 100644 tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_expert_mode.test delete mode 100644 tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_smart_mode.test rename tests/lib/Specification/UserMode/{IsUserModeEnabledTest.php => IsFocusModeEnabledTest.php} (62%) diff --git a/src/bundle/Controller/User/UserModeController.php b/src/bundle/Controller/User/FocusModeController.php similarity index 75% rename from src/bundle/Controller/User/UserModeController.php rename to src/bundle/Controller/User/FocusModeController.php index 45025b2591..00f22e06a3 100644 --- a/src/bundle/Controller/User/UserModeController.php +++ b/src/bundle/Controller/User/FocusModeController.php @@ -8,16 +8,16 @@ namespace Ibexa\Bundle\AdminUi\Controller\User; -use Ibexa\AdminUi\Form\Data\User\UserModeChangeData; -use Ibexa\AdminUi\Form\Type\User\UserModeChangeType; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\Form\Data\User\FocusModeChangeData; +use Ibexa\AdminUi\Form\Type\User\FocusModeChangeType; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Controller\Controller; use Ibexa\User\UserSetting\UserSettingService; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -final class UserModeController extends Controller +final class FocusModeController extends Controller { private const RETURN_URL_PARAM = 'returnUrl'; @@ -30,15 +30,15 @@ public function __construct(UserSettingService $userSettingService) public function changeAction(Request $request, ?string $returnUrl): Response { - $data = new UserModeChangeData(); - $data->setMode($this->userSettingService->getUserSetting(UserMode::IDENTIFIER)->value === UserMode::EXPERT); + $data = new FocusModeChangeData(); + $data->setEnabled($this->userSettingService->getUserSetting(FocusMode::IDENTIFIER)->value === FocusMode::FOCUS_MODE_ON); $form = $this->createForm( - UserModeChangeType::class, + FocusModeChangeType::class, $data, [ 'action' => $this->generateUrl( - 'ibexa.user_mode.change', + 'ibexa.focus_mode.change', [ self::RETURN_URL_PARAM => $returnUrl, ] @@ -50,15 +50,15 @@ public function changeAction(Request $request, ?string $returnUrl): Response $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->userSettingService->setUserSetting( - UserMode::IDENTIFIER, - $data->getMode() ? UserMode::EXPERT : UserMode::SMART + FocusMode::IDENTIFIER, + $data->isEnabled() ? FocusMode::FOCUS_MODE_ON : FocusMode::FOCUS_MODE_OFF ); return $this->createRedirectToReturnUrl($request); } return $this->render( - '@ibexadesign/ui/user_mode_form.html.twig', + '@ibexadesign/ui/focus_mode_form.html.twig', [ 'form' => $form->createView(), ] diff --git a/src/bundle/DependencyInjection/Configuration/Parser/AdminUiParser.php b/src/bundle/DependencyInjection/Configuration/Parser/AdminUiParser.php index c50215dddc..0c454ca3df 100644 --- a/src/bundle/DependencyInjection/Configuration/Parser/AdminUiParser.php +++ b/src/bundle/DependencyInjection/Configuration/Parser/AdminUiParser.php @@ -8,7 +8,7 @@ namespace Ibexa\Bundle\AdminUi\DependencyInjection\Configuration\Parser; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Bundle\Core\DependencyInjection\Configuration\AbstractParser; use Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface; use Symfony\Component\Config\Definition\Builder\NodeBuilder; @@ -21,14 +21,14 @@ * system: * default: # configuration per siteaccess or siteaccess group * admin_ui: - * default_user_mode: smart + * default_focus_mode: on * ``` */ final class AdminUiParser extends AbstractParser { private const MODES = [ - 'expert' => UserMode::EXPERT, - 'smart' => UserMode::SMART, + 'off' => FocusMode::FOCUS_MODE_OFF, + 'on' => FocusMode::FOCUS_MODE_ON, ]; /** @@ -52,9 +52,9 @@ public function addSemanticConfig(NodeBuilder $nodeBuilder): void { $root = $nodeBuilder->arrayNode('admin_ui'); $root->children() - ->enumNode('default_user_mode') - ->info('Default user mode setting') - ->values(['smart', 'expert']) + ->enumNode('default_focus_mode') + ->info('Default focus mode value') + ->values(['on', 'off']) ->end() ->end(); } @@ -67,14 +67,14 @@ private function addUserModeParameters( string $currentScope, ContextualizerInterface $contextualizer ): void { - $userMode = $settings['default_user_mode']; + $userMode = $settings['default_focus_mode']; if (!array_key_exists($userMode, self::MODES)) { return; } $contextualizer->setContextualParameter( - 'admin_ui.default_user_mode', + 'admin_ui.default_focus_mode', $currentScope, self::MODES[$userMode] ); diff --git a/src/bundle/Resources/config/default_parameters.yaml b/src/bundle/Resources/config/default_parameters.yaml index 8be5cee2f0..be565731e7 100644 --- a/src/bundle/Resources/config/default_parameters.yaml +++ b/src/bundle/Resources/config/default_parameters.yaml @@ -77,4 +77,4 @@ parameters: ibexa.admin_ui.content_tree.node_factory.max_location_ids_in_single_aggregation: 100 - ibexa.site_access.config.default.admin_ui.default_user_mode: '1' + ibexa.site_access.config.default.admin_ui.default_focus_mode: '1' diff --git a/src/bundle/Resources/config/routing.yaml b/src/bundle/Resources/config/routing.yaml index bce3c86bfa..7061df744f 100644 --- a/src/bundle/Resources/config/routing.yaml +++ b/src/bundle/Resources/config/routing.yaml @@ -965,9 +965,9 @@ ibexa.permission.limitation.language.content_read: contentInfoId: \d+ -### User Mode +### Focus Mode -ibexa.user_mode.change: - path: /user/change-mode - controller: 'Ibexa\Bundle\AdminUi\Controller\User\UserModeController::changeAction' +ibexa.focus_mode.change: + path: /user/focus-mode + controller: 'Ibexa\Bundle\AdminUi\Controller\User\FocusModeController::changeAction' methods: [GET, POST] diff --git a/src/bundle/Resources/config/services/controllers.yaml b/src/bundle/Resources/config/services/controllers.yaml index 9c6adb1153..2d457e3d12 100644 --- a/src/bundle/Resources/config/services/controllers.yaml +++ b/src/bundle/Resources/config/services/controllers.yaml @@ -191,7 +191,7 @@ services: tags: - controller.service_arguments - Ibexa\Bundle\AdminUi\Controller\User\UserModeController: + Ibexa\Bundle\AdminUi\Controller\User\FocusModeController: parent: Ibexa\Contracts\AdminUi\Controller\Controller autowire: true tags: diff --git a/src/bundle/Resources/config/services/twig.yaml b/src/bundle/Resources/config/services/twig.yaml index 276c9b87da..21d61534a4 100644 --- a/src/bundle/Resources/config/services/twig.yaml +++ b/src/bundle/Resources/config/services/twig.yaml @@ -26,7 +26,7 @@ services: tags: - { name: twig.extension } - Ibexa\Bundle\AdminUi\Templating\Twig\UserModeExtension: + Ibexa\Bundle\AdminUi\Templating\Twig\FocusModeExtension: tags: - { name: twig.extension } diff --git a/src/bundle/Resources/config/services/user_settings.yaml b/src/bundle/Resources/config/services/user_settings.yaml index 84e4139290..564a18ffa8 100644 --- a/src/bundle/Resources/config/services/user_settings.yaml +++ b/src/bundle/Resources/config/services/user_settings.yaml @@ -30,7 +30,7 @@ services: tags: - { name: ibexa.user.setting.group, identifier: mode, priority: -10 } - Ibexa\AdminUi\UserSetting\UserMode: + Ibexa\AdminUi\UserSetting\FocusMode: tags: - - { name: ibexa.user.setting.value, identifier: user_mode, group: mode, priority: 10 } - - { name: ibexa.user.setting.mapper.form, identifier: user_mode } + - { name: ibexa.user.setting.value, identifier: focus_mode, group: mode, priority: 10 } + - { name: ibexa.user.setting.mapper.form, identifier: focus_mode } diff --git a/src/bundle/Resources/encore/ibexa.js.config.js b/src/bundle/Resources/encore/ibexa.js.config.js index df29adb2c6..eb915cc0ae 100644 --- a/src/bundle/Resources/encore/ibexa.js.config.js +++ b/src/bundle/Resources/encore/ibexa.js.config.js @@ -39,7 +39,7 @@ const layout = [ path.resolve(__dirname, '../public/js/scripts/admin.anchor.navigation'), path.resolve(__dirname, '../public/js/scripts/admin.context.menu'), path.resolve(__dirname, '../public/js/scripts/admin.distraction.free.mode.js'), - path.resolve(__dirname, '../public/js/scripts/admin.user.mode.js'), + path.resolve(__dirname, '../public/js/scripts/admin.focus.mode.js'), path.resolve(__dirname, '../public/js/scripts/sidebar/main.menu.js'), path.resolve(__dirname, '../public/js/scripts/admin.input.text.js'), path.resolve(__dirname, '../public/js/scripts/admin.table.js'), diff --git a/src/bundle/Resources/public/js/scripts/admin.user.mode.js b/src/bundle/Resources/public/js/scripts/admin.focus.mode.js similarity index 84% rename from src/bundle/Resources/public/js/scripts/admin.user.mode.js rename to src/bundle/Resources/public/js/scripts/admin.focus.mode.js index 65be41b779..d9927c81ac 100644 --- a/src/bundle/Resources/public/js/scripts/admin.user.mode.js +++ b/src/bundle/Resources/public/js/scripts/admin.focus.mode.js @@ -1,5 +1,5 @@ (function (global, doc) { - const FORM_SELECTOR = 'form[name=user_mode_change]'; + const FORM_SELECTOR = 'form[name=focus_mode_change]'; const form = doc.querySelector(FORM_SELECTOR); if (form) { diff --git a/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff b/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff index 74248ee60f..7319d438e9 100644 --- a/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff +++ b/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff @@ -26,15 +26,15 @@ Removed '%languageCode%' translation from '%name%'. key: translation.remove.success - - Expert mode - Expert mode - key: user.mode.expert + + Focus mode off + Focus mode off + key: user.focus_mode.off - - Smart mode - Smart mode - key: user.mode.smart + + Focus mode on + Focus mode on + key: user.focus_mode.on Edit diff --git a/src/bundle/Resources/translations/ibexa_fields_groups.en.xliff b/src/bundle/Resources/translations/ibexa_fields_groups.en.xliff deleted file mode 100644 index c3d51b6c33..0000000000 --- a/src/bundle/Resources/translations/ibexa_fields_groups.en.xliff +++ /dev/null @@ -1,21 +0,0 @@ - - - -
- - The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. -
- - - About - About - key: about - - - Contact - Contact - key: contact - - -
-
diff --git a/src/bundle/Resources/translations/ibexa_user_settings.en.xliff b/src/bundle/Resources/translations/ibexa_user_settings.en.xliff index beba83faa9..daf2867364 100644 --- a/src/bundle/Resources/translations/ibexa_user_settings.en.xliff +++ b/src/bundle/Resources/translations/ibexa_user_settings.en.xliff @@ -81,10 +81,54 @@ In-Context translation key: settings.in_context_translation.value.title
- - Mode - Mode - key: user.setting.mode.description + + Focus mode + Focus mode + key: user.setting.focus_mode.description + + + Focus mode: on – A clean and intuitive interface with a simplified content + structure, designed for new and non-advanced users. Features include:

+
    +
  • View
  • +
  • Hidden Technical Details tab
  • +
  • Hidden Locations and Versions tabs in Content items
  • +
+

Focus mode: off – Tailored for experienced users familiar with Ibexa DXP. + Provides comprehensive insights into the technical aspects of Content structure, including:

+
    +
  • Technical Details tab
  • +
  • Location: Archived versions
  • +
]]> + Focus mode: on – A clean and intuitive interface with a simplified content + structure, designed for new and non-advanced users. Features include:

+
    +
  • View
  • +
  • Hidden Technical Details tab
  • +
  • Hidden Locations and Versions tabs in Content items
  • +
+

Focus mode: off – Tailored for experienced users familiar with Ibexa DXP. + Provides comprehensive insights into the technical aspects of Content structure, including:

+
    +
  • Technical Details tab
  • +
  • Location: Archived versions
  • +
]]>
+ key: user.setting.focus_mode.help +
+ + Focus mode + Focus mode + key: user.setting.focus_mode.name + + + user.setting.focus_mode.off + user.setting.focus_mode.off + key: user.setting.focus_mode.off + + + user.setting.focus_mode.on + user.setting.focus_mode.on + key: user.setting.focus_mode.on Expert diff --git a/src/bundle/Resources/translations/messages.en.xliff b/src/bundle/Resources/translations/messages.en.xliff index 5172d0cff3..194212b817 100644 --- a/src/bundle/Resources/translations/messages.en.xliff +++ b/src/bundle/Resources/translations/messages.en.xliff @@ -272,8 +272,8 @@ key: distraction_free_mode.disable.tooltip - To exit Distraction free mode, click the %icon% or press Esc. - To exit Distraction free mode, click the %icon% or press Esc. + To exit distraction free mode, click the %icon% or press Esc. + To exit distraction free mode, click the %icon% or press Esc. key: distraction_free_mode.disable_hint diff --git a/src/bundle/Resources/views/themes/admin/content/tab/translations/tab.html.twig b/src/bundle/Resources/views/themes/admin/content/tab/translations/tab.html.twig index ef431c63b6..e6b00d77f6 100644 --- a/src/bundle/Resources/views/themes/admin/content/tab/translations/tab.html.twig +++ b/src/bundle/Resources/views/themes/admin/content/tab/translations/tab.html.twig @@ -31,7 +31,7 @@ { content: translation.name }, ]) %} - {% if ibexa_is_expert_mode() %} + {% if ibexa_is_focus_mode_off() %} {% set body_row_cols = body_row_cols|merge([ { content: translation.languageCode } ]) %} @@ -62,7 +62,7 @@ { content: 'tab.translations.language_name'|trans|desc('Language name') }, ] %} - {% if ibexa_is_expert_mode() %} + {% if ibexa_is_focus_mode_off() %} {% set head_cols = head_cols|merge([ { content: 'tab.translations.language_code'|trans|desc('Language code') } ]) %} diff --git a/src/bundle/Resources/views/themes/admin/ui/user_mode_form.html.twig b/src/bundle/Resources/views/themes/admin/ui/focus_mode_form.html.twig similarity index 83% rename from src/bundle/Resources/views/themes/admin/ui/user_mode_form.html.twig rename to src/bundle/Resources/views/themes/admin/ui/focus_mode_form.html.twig index b31c1edcd7..8652752dfc 100644 --- a/src/bundle/Resources/views/themes/admin/ui/user_mode_form.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/focus_mode_form.html.twig @@ -3,5 +3,5 @@ {% form_theme form '@ibexadesign/ui/form_fields.html.twig' %} {{ form_start(form, { attr: { class: 'mt-2'}}) }} - {{ form_widget(form.mode) }} + {{ form_widget(form.enabled) }} {{ form_end(form) }} diff --git a/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig b/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig index 5b5de1fa60..b8c3c03443 100644 --- a/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig @@ -558,11 +558,11 @@
{%- endblock -%} -{% block user_mode_toggle_widget %} - {% set label_on = 'user.mode.expert'|trans({}, 'ibexa_admin_ui')|desc('Expert mode') %} - {% set label_off = 'user.mode.smart'|trans({}, 'ibexa_admin_ui')|desc('Smart mode') %} +{% block focus_mode_toggle_widget %} + {% set label_on = 'user.focus_mode.on'|trans({}, 'ibexa_admin_ui')|desc('Focus mode on') %} + {% set label_off = 'user.focus_mode.off'|trans({}, 'ibexa_admin_ui')|desc('Focus mode off') %} {% set small = true %} - {% set checked = ibexa_is_expert_mode() %} + {% set checked = ibexa_is_focus_mode_on() %} {{ block('toggle_widget') }} {% endblock %} diff --git a/src/bundle/Resources/views/themes/admin/ui/menu/user.html.twig b/src/bundle/Resources/views/themes/admin/ui/menu/user.html.twig index 2e0e02c2ab..de6062fb2c 100644 --- a/src/bundle/Resources/views/themes/admin/ui/menu/user.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/menu/user.html.twig @@ -31,8 +31,8 @@ {{ 'user_menu.popup_menu.title'|trans({'%userName%': user.name})|desc('Logged as %userName%') }} {% endblock %} - {% block user_mode_toggle %} - {{ render(controller('Ibexa\\Bundle\\AdminUi\\Controller\\User\\UserModeController::changeAction', { + {% block focus_mode_toggle %} + {{ render(controller('Ibexa\\Bundle\\AdminUi\\Controller\\User\\FocusModeController::changeAction', { returnUrl: url(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) })) }} {% endblock %} diff --git a/src/bundle/Templating/Twig/UserModeExtension.php b/src/bundle/Templating/Twig/FocusModeExtension.php similarity index 64% rename from src/bundle/Templating/Twig/UserModeExtension.php rename to src/bundle/Templating/Twig/FocusModeExtension.php index fa793214ea..d938f8bc1e 100644 --- a/src/bundle/Templating/Twig/UserModeExtension.php +++ b/src/bundle/Templating/Twig/FocusModeExtension.php @@ -8,12 +8,12 @@ namespace Ibexa\Bundle\AdminUi\Templating\Twig; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\User\UserSetting\UserSettingService; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; -final class UserModeExtension extends AbstractExtension +final class FocusModeExtension extends AbstractExtension { private UserSettingService $userService; @@ -26,18 +26,18 @@ public function getFunctions(): array { return [ new TwigFunction( - 'ibexa_is_expert_mode', - fn (): bool => $this->isModeEnabled(UserMode::EXPERT) + 'ibexa_is_focus_mode_off', + fn (): bool => $this->isModeEnabled(FocusMode::FOCUS_MODE_OFF) ), new TwigFunction( - 'ibexa_is_smart_mode', - fn (): bool => $this->isModeEnabled(UserMode::SMART) + 'ibexa_is_focus_mode_on', + fn (): bool => $this->isModeEnabled(FocusMode::FOCUS_MODE_ON) ), ]; } private function isModeEnabled(string $mode): bool { - return $this->userService->getUserSetting(UserMode::IDENTIFIER)->value === $mode; + return $this->userService->getUserSetting(FocusMode::IDENTIFIER)->value === $mode; } } diff --git a/src/lib/Behat/Component/UpperMenu.php b/src/lib/Behat/Component/UpperMenu.php index 0cbcc2b332..3a8f59c23e 100644 --- a/src/lib/Behat/Component/UpperMenu.php +++ b/src/lib/Behat/Component/UpperMenu.php @@ -16,7 +16,7 @@ class UpperMenu extends Component { - private const USER_MODES = ['Smart', 'Expert']; + private const FOCUS_MODE = ['On', 'Off']; public function goToDashboard(): void { @@ -48,17 +48,17 @@ public function chooseFromUserDropdown(string $option): void $this->getHTMLPage()->findAll($this->getLocator('userSettingsItem'))->getByCriterion(new ElementTextCriterion($option))->click(); } - public function switchToUserMode(string $newMode): void + public function switchToFocusMode(string $newMode): void { $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); $currentMode = explode( ' ', - $this->getHTMLPage()->find($this->getLocator('userMode'))->getText() + $this->getHTMLPage()->find($this->getLocator('focusMode'))->getText() )[0]; if (strtolower($newMode) !== strtolower($currentMode)) { - $this->getHTMLPage()->find($this->getLocator('userMode'))->click(); + $this->getHTMLPage()->find($this->getLocator('focusMode'))->click(); $this->getHTMLPage() ->waitUntilCondition( new ElementNotExistsCondition($this->getHTMLPage(), $this->getLocator('userSettingsPopup')) @@ -68,15 +68,15 @@ public function switchToUserMode(string $newMode): void } } - public function getCurrentUserMode(): string + public function getCurrentFocusMode(): string { $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); $mode = explode( ' ', - $this->getHTMLPage()->find($this->getLocator('userMode'))->getText() + $this->getHTMLPage()->find($this->getLocator('focusMode'))->getText() )[0]; - Assert::assertContains($mode, self::USER_MODES); + Assert::assertContains($mode, self::FOCUS_MODE); $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); @@ -99,7 +99,7 @@ protected function specifyLocators(): array new VisibleCSSLocator('userSettingsPopup', '.ibexa-header-user-menu .ibexa-header-user-menu__popup-menu'), new VisibleCSSLocator('searchInput', '.ibexa-main-header #search_query'), new VisibleCSSLocator('searchButton', '.ibexa-main-header .ibexa-input-text-wrapper__action-btn--search'), - new VisibleCSSLocator('userMode', '[name="user_mode_change"] .ibexa-toggle__label'), + new VisibleCSSLocator('focusMode', '[name="focus_mode_change"] .ibexa-toggle__label'), ]; } } diff --git a/src/lib/Behat/Page/ContentViewPage.php b/src/lib/Behat/Page/ContentViewPage.php index 72ce5ec0ce..b4162b5163 100644 --- a/src/lib/Behat/Page/ContentViewPage.php +++ b/src/lib/Behat/Page/ContentViewPage.php @@ -184,7 +184,7 @@ public function choosePreview(string $language): void public function switchToUserMode(string $mode): void { - $this->upperMenu->switchToUserMode($mode); + $this->upperMenu->switchToFocusMode($mode); $expertModeTab = 'Technical Details'; diff --git a/src/lib/Form/Data/User/UserModeChangeData.php b/src/lib/Form/Data/User/FocusModeChangeData.php similarity index 57% rename from src/lib/Form/Data/User/UserModeChangeData.php rename to src/lib/Form/Data/User/FocusModeChangeData.php index cc3100cf0c..c940abed34 100644 --- a/src/lib/Form/Data/User/UserModeChangeData.php +++ b/src/lib/Form/Data/User/FocusModeChangeData.php @@ -8,22 +8,22 @@ namespace Ibexa\AdminUi\Form\Data\User; -final class UserModeChangeData +final class FocusModeChangeData { - private ?bool $mode; + private ?bool $enabled; public function __construct(?bool $data = null) { - $this->mode = $data; + $this->enabled = $data; } - public function getMode(): ?bool + public function isEnabled(): ?bool { - return $this->mode; + return $this->enabled; } - public function setMode(?bool $mode): void + public function setEnabled(?bool $enabled): void { - $this->mode = $mode; + $this->enabled = $enabled; } } diff --git a/src/lib/Form/Type/User/UserModeChangeType.php b/src/lib/Form/Type/User/FocusModeChangeType.php similarity index 77% rename from src/lib/Form/Type/User/UserModeChangeType.php rename to src/lib/Form/Type/User/FocusModeChangeType.php index 2d8ef67ff4..cc58fef7e4 100644 --- a/src/lib/Form/Type/User/UserModeChangeType.php +++ b/src/lib/Form/Type/User/FocusModeChangeType.php @@ -8,22 +8,22 @@ namespace Ibexa\AdminUi\Form\Type\User; -use Ibexa\AdminUi\Form\Data\User\UserModeChangeData; +use Ibexa\AdminUi\Form\Data\User\FocusModeChangeData; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -final class UserModeChangeType extends AbstractType +final class FocusModeChangeType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add( - 'mode', + 'enabled', CheckboxType::class, [ 'label' => null, - 'block_prefix' => 'user_mode_toggle', + 'block_prefix' => 'focus_mode_toggle', ] ); } @@ -31,7 +31,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ - 'data_class' => UserModeChangeData::class, + 'data_class' => FocusModeChangeData::class, ]); } } diff --git a/src/lib/Form/Type/User/UserModeChoiceType.php b/src/lib/Form/Type/User/UserModeChoiceType.php index 8ce56ea399..4ad0113280 100644 --- a/src/lib/Form/Type/User/UserModeChoiceType.php +++ b/src/lib/Form/Type/User/UserModeChoiceType.php @@ -8,7 +8,7 @@ namespace Ibexa\AdminUi\Form\Type\User; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -20,8 +20,8 @@ public function configureOptions(OptionsResolver $resolver): void $resolver->setDefaults([ 'translation_domain' => 'ibexa_user_settings', 'choices' => [ - 'user.setting.mode.smart' => UserMode::SMART, - 'user.setting.mode.expert' => UserMode::EXPERT, + 'user.setting.focus_mode.on' => FocusMode::FOCUS_MODE_ON, + 'user.setting.focus_mode.off' => FocusMode::FOCUS_MODE_OFF, ], ]); } diff --git a/src/lib/Menu/MainMenuBuilder.php b/src/lib/Menu/MainMenuBuilder.php index d4c498b989..149363a2fe 100644 --- a/src/lib/Menu/MainMenuBuilder.php +++ b/src/lib/Menu/MainMenuBuilder.php @@ -9,8 +9,8 @@ namespace Ibexa\AdminUi\Menu; use Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent; -use Ibexa\AdminUi\Specification\UserMode\IsUserModeEnabled; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\Specification\UserMode\IsFocusModeEnabled; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Menu\AbstractBuilder; use Ibexa\Contracts\Core\Repository\PermissionResolver; use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface; @@ -304,7 +304,7 @@ private function addContentMenuItems(ItemInterface $menu): void ] ); - if (IsUserModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(UserMode::EXPERT)) { + if (IsFocusModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(FocusMode::FOCUS_MODE_OFF)) { $contentGroupSettings = $menu->addChild( self::ITEM_CONTENT_GROUP_SETTINGS, [ diff --git a/src/lib/Specification/UserMode/IsUserModeEnabled.php b/src/lib/Specification/UserMode/IsFocusModeEnabled.php similarity index 63% rename from src/lib/Specification/UserMode/IsUserModeEnabled.php rename to src/lib/Specification/UserMode/IsFocusModeEnabled.php index ee0026f0e7..295e32af54 100644 --- a/src/lib/Specification/UserMode/IsUserModeEnabled.php +++ b/src/lib/Specification/UserMode/IsFocusModeEnabled.php @@ -8,17 +8,17 @@ namespace Ibexa\AdminUi\Specification\UserMode; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\Core\Specification\AbstractSpecification; use Ibexa\User\UserSetting\UserSettingService; -final class IsUserModeEnabled extends AbstractSpecification +final class IsFocusModeEnabled extends AbstractSpecification { - private string $mode; + private string $enabled; - public function __construct(string $mode) + public function __construct(string $enabled) { - $this->mode = $mode; + $this->enabled = $enabled; } /** @@ -26,11 +26,11 @@ public function __construct(string $mode) */ public function isSatisfiedBy($item): bool { - return $this->mode === $item; + return $this->enabled === $item; } public static function fromUserSettings(UserSettingService $userService): self { - return new self($userService->getUserSetting(UserMode::IDENTIFIER)->value); + return new self($userService->getUserSetting(FocusMode::IDENTIFIER)->value); } } diff --git a/src/lib/Tab/LocationView/AuthorsTab.php b/src/lib/Tab/LocationView/AuthorsTab.php index 8e701c4af3..12d4e17c42 100644 --- a/src/lib/Tab/LocationView/AuthorsTab.php +++ b/src/lib/Tab/LocationView/AuthorsTab.php @@ -9,8 +9,8 @@ namespace Ibexa\AdminUi\Tab\LocationView; use Ibexa\AdminUi\Specification\UserExists; -use Ibexa\AdminUi\Specification\UserMode\IsUserModeEnabled; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\Specification\UserMode\IsFocusModeEnabled; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\AbstractEventDispatchingTab; use Ibexa\Contracts\AdminUi\Tab\ConditionalTabInterface; use Ibexa\Contracts\AdminUi\Tab\OrderedTabInterface; @@ -92,7 +92,7 @@ public function getTemplateParameters(array $contextParameters = []): array public function evaluate(array $parameters): bool { - return IsUserModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(UserMode::SMART); + return IsFocusModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(FocusMode::FOCUS_MODE_ON); } /** diff --git a/src/lib/Tab/LocationView/DetailsTab.php b/src/lib/Tab/LocationView/DetailsTab.php index d2d99dd7ea..f18142f218 100644 --- a/src/lib/Tab/LocationView/DetailsTab.php +++ b/src/lib/Tab/LocationView/DetailsTab.php @@ -15,9 +15,9 @@ use Ibexa\AdminUi\Form\Type\Location\LocationAssignSectionType; use Ibexa\AdminUi\Form\Type\Location\LocationUpdateType; use Ibexa\AdminUi\Form\Type\ObjectState\ContentObjectStateUpdateType; -use Ibexa\AdminUi\Specification\UserMode\IsUserModeEnabled; +use Ibexa\AdminUi\Specification\UserMode\IsFocusModeEnabled; use Ibexa\AdminUi\UI\Dataset\DatasetFactory; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\AbstractEventDispatchingTab; use Ibexa\Contracts\AdminUi\Tab\ConditionalTabInterface; use Ibexa\Contracts\AdminUi\Tab\OrderedTabInterface; @@ -84,7 +84,7 @@ public function getOrder(): int public function evaluate(array $parameters): bool { - return IsUserModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(UserMode::EXPERT); + return IsFocusModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(FocusMode::FOCUS_MODE_OFF); } /** diff --git a/src/lib/Tab/LocationView/LocationsTab.php b/src/lib/Tab/LocationView/LocationsTab.php index 8a2f1f4342..43f53aeb1e 100644 --- a/src/lib/Tab/LocationView/LocationsTab.php +++ b/src/lib/Tab/LocationView/LocationsTab.php @@ -14,9 +14,9 @@ use Ibexa\AdminUi\Form\Data\Location\LocationSwapData; use Ibexa\AdminUi\Form\Data\Location\LocationUpdateVisibilityData; use Ibexa\AdminUi\Form\Factory\FormFactory; -use Ibexa\AdminUi\Specification\UserMode\IsUserModeEnabled; +use Ibexa\AdminUi\Specification\UserMode\IsFocusModeEnabled; use Ibexa\AdminUi\UI\Value\Content\Location\Mapper; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\AbstractEventDispatchingTab; use Ibexa\Contracts\AdminUi\Tab\ConditionalTabInterface; use Ibexa\Contracts\AdminUi\Tab\OrderedTabInterface; @@ -129,7 +129,7 @@ public function getOrder(): int public function evaluate(array $parameters): bool { - return IsUserModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(UserMode::EXPERT); + return IsFocusModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(FocusMode::FOCUS_MODE_OFF); } /** diff --git a/src/lib/Tab/LocationView/VersionsTab.php b/src/lib/Tab/LocationView/VersionsTab.php index be5764431c..70c94ba0ad 100644 --- a/src/lib/Tab/LocationView/VersionsTab.php +++ b/src/lib/Tab/LocationView/VersionsTab.php @@ -12,9 +12,9 @@ use Ibexa\AdminUi\Form\Data\Version\VersionRemoveData; use Ibexa\AdminUi\Form\Factory\FormFactory; use Ibexa\AdminUi\Specification\ContentIsUser; -use Ibexa\AdminUi\Specification\UserMode\IsUserModeEnabled; +use Ibexa\AdminUi\Specification\UserMode\IsFocusModeEnabled; use Ibexa\AdminUi\UI\Dataset\DatasetFactory; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\AbstractEventDispatchingTab; use Ibexa\Contracts\AdminUi\Tab\ConditionalTabInterface; use Ibexa\Contracts\AdminUi\Tab\OrderedTabInterface; @@ -122,8 +122,8 @@ public function getOrder(): int */ public function evaluate(array $parameters): bool { - $isExpertMode = IsUserModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(UserMode::EXPERT); - if ($isExpertMode) { + $isFocusModeOff = IsFocusModeEnabled::fromUserSettings($this->userSettingService)->isSatisfiedBy(FocusMode::FOCUS_MODE_OFF); + if ($isFocusModeOff) { return $this->permissionResolver->canUser('content', 'versionread', $parameters['content']); } diff --git a/src/lib/UserSetting/UserMode.php b/src/lib/UserSetting/FocusMode.php similarity index 70% rename from src/lib/UserSetting/UserMode.php rename to src/lib/UserSetting/FocusMode.php index 16b9b0db5c..bb3d72fab9 100644 --- a/src/lib/UserSetting/UserMode.php +++ b/src/lib/UserSetting/FocusMode.php @@ -12,17 +12,18 @@ use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface; use Ibexa\Contracts\User\UserSetting\FormMapperInterface; use Ibexa\Contracts\User\UserSetting\ValueDefinitionInterface; +use JMS\TranslationBundle\Annotation\Desc; use JMS\TranslationBundle\Model\Message; use JMS\TranslationBundle\Translation\TranslationContainerInterface; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Contracts\Translation\TranslatorInterface; -final class UserMode implements ValueDefinitionInterface, FormMapperInterface, TranslationContainerInterface +final class FocusMode implements ValueDefinitionInterface, FormMapperInterface, TranslationContainerInterface { - public const IDENTIFIER = 'user_mode'; + public const IDENTIFIER = 'focus_mode'; - public const EXPERT = '0'; - public const SMART = '1'; + public const FOCUS_MODE_OFF = '0'; + public const FOCUS_MODE_ON = '1'; private TranslatorInterface $translator; @@ -39,7 +40,8 @@ public function __construct( public function getName(): string { return $this->translator->trans( - 'user.setting.mode.name', + /** @Desc("Focus mode") */ + 'user.setting.focus_mode.name', [], 'ibexa_user_settings' ); @@ -48,7 +50,8 @@ public function getName(): string public function getDescription(): string { return $this->translator->trans( - 'user.setting.mode.description', + /** @Desc("Focus mode") */ + 'user.setting.focus_mode.description', [], 'ibexa_user_settings' ); @@ -57,8 +60,8 @@ public function getDescription(): string public function getDisplayValue(string $storageValue): string { $translationMap = [ - self::EXPERT => $this->translator->trans('user.setting.mode.expert', [], 'ibexa_user_settings'), - self::SMART => $this->translator->trans('user.setting.mode.smart', [], 'ibexa_user_settings'), + self::FOCUS_MODE_OFF => $this->translator->trans('user.setting.focus_mode.off', [], 'ibexa_user_settings'), + self::FOCUS_MODE_ON => $this->translator->trans('user.setting.focus_mode.on', [], 'ibexa_user_settings'), ]; return $translationMap[$storageValue] ?? $storageValue; @@ -66,7 +69,7 @@ public function getDisplayValue(string $storageValue): string public function getDefaultValue(): string { - return $this->configResolver->getParameter('admin_ui.default_user_mode'); + return $this->configResolver->getParameter('admin_ui.default_focus_mode'); } public function mapFieldForm( @@ -90,26 +93,22 @@ public function mapFieldForm( public static function getTranslationMessages(): array { return [ - (new Message('user.setting.mode.help', 'ibexa_user_settings')) + (new Message('user.setting.focus_mode.help', 'ibexa_user_settings')) ->setDesc( - '

Smart mode – A clean and intuitive interface with a simplified content + '

Focus mode: on – A clean and intuitive interface with a simplified content structure, designed for new and non-advanced users. Features include:

    -
  • Quick preview
  • +
  • View
  • Hidden Technical Details tab
  • Hidden Locations and Versions tabs in Content items
-

Expert mode – Tailored for experienced users familiar with Ibexa DXP. +

Focus mode: off – Tailored for experienced users familiar with Ibexa DXP. Provides comprehensive insights into the technical aspects of Content structure, including:

  • Technical Details tab
  • Location: Archived versions
' ), - (new Message('user.setting.mode.expert', 'ibexa_user_settings'))->setDesc('Expert'), - (new Message('user.setting.mode.smart', 'ibexa_user_settings'))->setDesc('Smart'), - (new Message('user.setting.mode.name', 'ibexa_user_settings'))->setDesc('Mode'), - (new Message('user.setting.mode.description', 'ibexa_user_settings'))->setDesc('Mode'), ]; } } diff --git a/tests/bundle/Templating/Twig/UserModeExtensionTest.php b/tests/bundle/Templating/Twig/FocusModeExtensionTest.php similarity index 64% rename from tests/bundle/Templating/Twig/UserModeExtensionTest.php rename to tests/bundle/Templating/Twig/FocusModeExtensionTest.php index f5a676c438..6ad03bb7d8 100644 --- a/tests/bundle/Templating/Twig/UserModeExtensionTest.php +++ b/tests/bundle/Templating/Twig/FocusModeExtensionTest.php @@ -8,29 +8,29 @@ namespace Ibexa\Tests\Bundle\AdminUi\Templating\Twig; -use Ibexa\AdminUi\UserSetting\UserMode; -use Ibexa\Bundle\AdminUi\Templating\Twig\UserModeExtension; +use Ibexa\AdminUi\UserSetting\FocusMode; +use Ibexa\Bundle\AdminUi\Templating\Twig\FocusModeExtension; use Ibexa\User\UserSetting\UserSetting; use Ibexa\User\UserSetting\UserSettingService; use Twig\Test\IntegrationTestCase; -final class UserModeExtensionTest extends IntegrationTestCase +final class FocusModeExtensionTest extends IntegrationTestCase { protected function getExtensions(): array { $userSetting = $this->createMock(UserSetting::class); - $userSetting->method('__get')->with('value')->willReturn(UserMode::SMART); + $userSetting->method('__get')->with('value')->willReturn(FocusMode::FOCUS_MODE_ON); $userSettingService = $this->createMock(UserSettingService::class); - $userSettingService->method('getUserSetting')->with(UserMode::IDENTIFIER)->willReturn($userSetting); + $userSettingService->method('getUserSetting')->with(FocusMode::IDENTIFIER)->willReturn($userSetting); return [ - new UserModeExtension($userSettingService), + new FocusModeExtension($userSettingService), ]; } protected function getFixturesDir(): string { - return __DIR__ . '/_fixtures/user_mode/'; + return __DIR__ . '/_fixtures/focus_mode/'; } } diff --git a/tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_off.test b/tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_off.test new file mode 100644 index 0000000000..f57109b70d --- /dev/null +++ b/tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_off.test @@ -0,0 +1,8 @@ +--TEST-- +"ibexa_is_focus_mode_off" function +--TEMPLATE-- +{{ ibexa_is_focus_mode_off() ? 'YES' : 'NO' }} +--DATA-- +return []; +--EXPECT-- +NO diff --git a/tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_on.test b/tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_on.test new file mode 100644 index 0000000000..c528a7e65b --- /dev/null +++ b/tests/bundle/Templating/Twig/_fixtures/focus_mode/ibexa_is_focus_mode_on.test @@ -0,0 +1,8 @@ +--TEST-- +"ibexa_is_focus_mode_on" function +--TEMPLATE-- +{{ ibexa_is_focus_mode_on() ? 'YES' : 'NO' }} +--DATA-- +return []; +--EXPECT-- +YES diff --git a/tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_expert_mode.test b/tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_expert_mode.test deleted file mode 100644 index d8c57d4996..0000000000 --- a/tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_expert_mode.test +++ /dev/null @@ -1,8 +0,0 @@ ---TEST-- -"ibexa_is_expert_mode" function ---TEMPLATE-- -{{ ibexa_is_expert_mode() ? 'YES' : 'NO' }} ---DATA-- -return []; ---EXPECT-- -NO diff --git a/tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_smart_mode.test b/tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_smart_mode.test deleted file mode 100644 index ad11d8e57a..0000000000 --- a/tests/bundle/Templating/Twig/_fixtures/user_mode/ibexa_is_smart_mode.test +++ /dev/null @@ -1,8 +0,0 @@ ---TEST-- -"ibexa_is_smart_mode" function ---TEMPLATE-- -{{ ibexa_is_smart_mode() ? 'YES' : 'NO' }} ---DATA-- -return []; ---EXPECT-- -YES diff --git a/tests/lib/Menu/MainMenuBuilerTest.php b/tests/lib/Menu/MainMenuBuilerTest.php index 1316e7b447..8553149269 100644 --- a/tests/lib/Menu/MainMenuBuilerTest.php +++ b/tests/lib/Menu/MainMenuBuilerTest.php @@ -10,7 +10,7 @@ use Ibexa\AdminUi\Menu\MainMenuBuilder; use Ibexa\AdminUi\Menu\MenuItemFactory; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\Core\Repository\PermissionResolver; use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface; use Ibexa\Core\MVC\Symfony\Security\UserInterface; @@ -159,10 +159,10 @@ protected function setUp(): void $this->tokenStorage->method('getToken')->willReturn($token); $userSetting = $this->createMock(UserSetting::class); - $userSetting->method('__get')->with('value')->willReturn(UserMode::EXPERT); + $userSetting->method('__get')->with('value')->willReturn(FocusMode::FOCUS_MODE_OFF); $this->userSettingService = $this->createMock(UserSettingService::class); - $this->userSettingService->method('getUserSetting')->with(UserMode::IDENTIFIER)->willReturn($userSetting); + $this->userSettingService->method('getUserSetting')->with(FocusMode::IDENTIFIER)->willReturn($userSetting); } protected function tearDown(): void diff --git a/tests/lib/Specification/UserMode/IsUserModeEnabledTest.php b/tests/lib/Specification/UserMode/IsFocusModeEnabledTest.php similarity index 62% rename from tests/lib/Specification/UserMode/IsUserModeEnabledTest.php rename to tests/lib/Specification/UserMode/IsFocusModeEnabledTest.php index 4a82811bb2..c03a30dac1 100644 --- a/tests/lib/Specification/UserMode/IsUserModeEnabledTest.php +++ b/tests/lib/Specification/UserMode/IsFocusModeEnabledTest.php @@ -8,13 +8,13 @@ namespace Ibexa\Tests\AdminUi\Specification\UserMode; -use Ibexa\AdminUi\Specification\UserMode\IsUserModeEnabled; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\Specification\UserMode\IsFocusModeEnabled; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\User\UserSetting\UserSetting; use Ibexa\User\UserSetting\UserSettingService; use PHPUnit\Framework\TestCase; -final class IsUserModeEnabledTest extends TestCase +final class IsFocusModeEnabledTest extends TestCase { /** * @dataProvider dataProviderForIsSatisfiedBy @@ -23,7 +23,7 @@ public function testIsSatisfiedBy(string $userMode, string $value, bool $expecte { self::assertEquals( $expectedResult, - (new IsUserModeEnabled($userMode))->isSatisfiedBy($value) + (new IsFocusModeEnabled($userMode))->isSatisfiedBy($value) ); } @@ -36,11 +36,11 @@ public function testFromUserSetting(string $userMode, string $value, bool $expec $userSetting->method('__get')->with('value')->willReturn($userMode); $userSettingService = $this->createMock(UserSettingService::class); - $userSettingService->method('getUserSetting')->with(UserMode::IDENTIFIER)->willReturn($userSetting); + $userSettingService->method('getUserSetting')->with(FocusMode::IDENTIFIER)->willReturn($userSetting); self::assertEquals( $expectedResult, - IsUserModeEnabled::fromUserSettings($userSettingService)->isSatisfiedBy($value) + IsFocusModeEnabled::fromUserSettings($userSettingService)->isSatisfiedBy($value) ); } @@ -49,9 +49,9 @@ public function testFromUserSetting(string $userMode, string $value, bool $expec */ public function dataProviderForIsSatisfiedBy(): iterable { - yield [UserMode::SMART, UserMode::SMART, true]; - yield [UserMode::SMART, UserMode::EXPERT, false]; - yield [UserMode::EXPERT, UserMode::SMART, false]; - yield [UserMode::EXPERT, UserMode::EXPERT, true]; + yield [FocusMode::FOCUS_MODE_ON, FocusMode::FOCUS_MODE_ON, true]; + yield [FocusMode::FOCUS_MODE_ON, FocusMode::FOCUS_MODE_OFF, false]; + yield [FocusMode::FOCUS_MODE_OFF, FocusMode::FOCUS_MODE_ON, false]; + yield [FocusMode::FOCUS_MODE_OFF, FocusMode::FOCUS_MODE_OFF, true]; } } diff --git a/tests/lib/Tab/LocationView/AbstractTabVisibilityTestCase.php b/tests/lib/Tab/LocationView/AbstractTabVisibilityTestCase.php index 879f730051..90a6f81bdb 100644 --- a/tests/lib/Tab/LocationView/AbstractTabVisibilityTestCase.php +++ b/tests/lib/Tab/LocationView/AbstractTabVisibilityTestCase.php @@ -8,7 +8,7 @@ namespace Ibexa\Tests\AdminUi\Tab\LocationView; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\TabInterface; use Ibexa\User\UserSetting\UserSetting; use Ibexa\User\UserSetting\UserSettingService; @@ -27,7 +27,7 @@ final public function testTabVisibilityInGivenUserMode(string $userMode, array $ $userSetting->method('__get')->with('value')->willReturn($userMode); $userSettingService = $this->createMock(UserSettingService::class); - $userSettingService->method('getUserSetting')->with(UserMode::IDENTIFIER)->willReturn($userSetting); + $userSettingService->method('getUserSetting')->with(FocusMode::IDENTIFIER)->willReturn($userSetting); $actualResult = $this->createTabForVisibilityInGivenUserModeTest($userSettingService)->evaluate($parameters); diff --git a/tests/lib/Tab/LocationView/AuthorsTabVisibilityTest.php b/tests/lib/Tab/LocationView/AuthorsTabVisibilityTest.php index c40700c65a..5eb61bada1 100644 --- a/tests/lib/Tab/LocationView/AuthorsTabVisibilityTest.php +++ b/tests/lib/Tab/LocationView/AuthorsTabVisibilityTest.php @@ -9,7 +9,7 @@ namespace Ibexa\Tests\AdminUi\Tab\LocationView; use Ibexa\AdminUi\Tab\LocationView\AuthorsTab; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\TabInterface; use Ibexa\Contracts\Core\Repository\UserService; use Ibexa\User\UserSetting\UserSettingService; @@ -32,7 +32,7 @@ protected function createTabForVisibilityInGivenUserModeTest(UserSettingService public function dataProviderForTestTabVisibilityInGivenUserMode(): iterable { - yield 'smart mode' => [UserMode::SMART, [], true]; - yield 'expert mode' => [UserMode::EXPERT, [], false]; + yield 'focus mode on' => [FocusMode::FOCUS_MODE_ON, [], true]; + yield 'focus mode off' => [FocusMode::FOCUS_MODE_OFF, [], false]; } } diff --git a/tests/lib/Tab/LocationView/DetailsTabVisibilityTest.php b/tests/lib/Tab/LocationView/DetailsTabVisibilityTest.php index d5e7cb5260..53fb7ed8e2 100644 --- a/tests/lib/Tab/LocationView/DetailsTabVisibilityTest.php +++ b/tests/lib/Tab/LocationView/DetailsTabVisibilityTest.php @@ -10,7 +10,7 @@ use Ibexa\AdminUi\Tab\LocationView\DetailsTab; use Ibexa\AdminUi\UI\Dataset\DatasetFactory; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\TabInterface; use Ibexa\Contracts\Core\Repository\PermissionResolver; use Ibexa\Contracts\Core\Repository\SectionService; @@ -38,7 +38,7 @@ protected function createTabForVisibilityInGivenUserModeTest(UserSettingService public function dataProviderForTestTabVisibilityInGivenUserMode(): iterable { - yield 'smart mode' => [UserMode::SMART, [], false]; - yield 'expert mode' => [UserMode::EXPERT, [], true]; + yield 'focus mode on' => [FocusMode::FOCUS_MODE_ON, [], false]; + yield 'focus mode off' => [FocusMode::FOCUS_MODE_OFF, [], true]; } } diff --git a/tests/lib/Tab/LocationView/LocationsTabVisibilityTest.php b/tests/lib/Tab/LocationView/LocationsTabVisibilityTest.php index bd4c8cef1b..0397523495 100644 --- a/tests/lib/Tab/LocationView/LocationsTabVisibilityTest.php +++ b/tests/lib/Tab/LocationView/LocationsTabVisibilityTest.php @@ -12,7 +12,7 @@ use Ibexa\AdminUi\Tab\LocationView\LocationsTab; use Ibexa\AdminUi\UI\Value\Content\Location\Mapper; use Ibexa\AdminUi\UI\Value\ValueFactory; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\TabInterface; use Ibexa\Contracts\Core\Repository\PermissionResolver; use Ibexa\Contracts\Core\Repository\SearchService; @@ -45,7 +45,7 @@ protected function createTabForVisibilityInGivenUserModeTest(UserSettingService public function dataProviderForTestTabVisibilityInGivenUserMode(): iterable { - yield 'smart mode' => [UserMode::SMART, [], false]; - yield 'expert mode' => [UserMode::EXPERT, [], true]; + yield 'focus mode on' => [FocusMode::FOCUS_MODE_ON, [], false]; + yield 'focus mode off' => [FocusMode::FOCUS_MODE_OFF, [], true]; } } diff --git a/tests/lib/Tab/LocationView/VersionsTabVisibilityTest.php b/tests/lib/Tab/LocationView/VersionsTabVisibilityTest.php index eb81241ff1..cfc37408ec 100644 --- a/tests/lib/Tab/LocationView/VersionsTabVisibilityTest.php +++ b/tests/lib/Tab/LocationView/VersionsTabVisibilityTest.php @@ -11,7 +11,7 @@ use Ibexa\AdminUi\Form\Factory\FormFactory; use Ibexa\AdminUi\Tab\LocationView\VersionsTab; use Ibexa\AdminUi\UI\Dataset\DatasetFactory; -use Ibexa\AdminUi\UserSetting\UserMode; +use Ibexa\AdminUi\UserSetting\FocusMode; use Ibexa\Contracts\AdminUi\Tab\TabInterface; use Ibexa\Contracts\Core\Repository\PermissionResolver; use Ibexa\Contracts\Core\Repository\UserService; @@ -52,14 +52,14 @@ protected function createTabForVisibilityInGivenUserModeTest(UserSettingService public function dataProviderForTestTabVisibilityInGivenUserMode(): iterable { - yield 'smart mode' => [ - UserMode::SMART, + yield 'focus mode on' => [ + FocusMode::FOCUS_MODE_ON, ['content' => $this->exampleContent], false, ]; - yield 'expert mode' => [ - UserMode::EXPERT, + yield 'focus mode off' => [ + FocusMode::FOCUS_MODE_OFF, ['content' => $this->exampleContent], true, ]; From 008f238e398b7b0098c621db50377d9c8e0c000f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Sun, 10 Dec 2023 22:36:44 +0100 Subject: [PATCH 04/12] fixup! IBX-7329: Renamed smart / expert mode to focus mode --- .../translations/ibexa_user_settings.en.xliff | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/bundle/Resources/translations/ibexa_user_settings.en.xliff b/src/bundle/Resources/translations/ibexa_user_settings.en.xliff index daf2867364..e33d108b94 100644 --- a/src/bundle/Resources/translations/ibexa_user_settings.en.xliff +++ b/src/bundle/Resources/translations/ibexa_user_settings.en.xliff @@ -130,11 +130,6 @@ user.setting.focus_mode.on key: user.setting.focus_mode.on - - Expert - Expert - key: user.setting.mode.expert - Smart mode – A clean and intuitive interface with a simplified content structure, designed for new and non-advanced users. Features include:

    @@ -165,11 +160,6 @@ Mode key: user.setting.mode.name - - Smart - Smart - key: user.setting.mode.smart - From 4fe62428de75f5f7fcdee710b4e3e9f47314e933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Mon, 11 Dec 2023 13:30:50 +0100 Subject: [PATCH 05/12] IBX-7329: Applied code review suggestions --- .../scss/fieldType/edit/_base-field.scss | 5 +--- .../translations/ibexa_admin_ui.en.xliff | 25 +++++++++++++++++++ .../Resources/translations/messages.en.xliff | 25 ------------------- .../themes/admin/ui/form_fields.html.twig | 2 ++ 4 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss b/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss index 98cf2c0fed..31f3982f5d 100644 --- a/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss +++ b/src/bundle/Resources/public/scss/fieldType/edit/_base-field.scss @@ -101,16 +101,13 @@ &__distraction-free-mode { margin: auto 0 0; align-self: baseline; + width: 20%; } &__label-wrapper { width: 80%; } - &__distraction-free-mode { - width: 20%; - } - &__data { width: 100%; } diff --git a/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff b/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff index 7319d438e9..053eb6b721 100644 --- a/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff +++ b/src/bundle/Resources/translations/ibexa_admin_ui.en.xliff @@ -11,6 +11,31 @@ Missing or invalid CSRF token key: asset.upload.invalid_csrf + + Exit distraction free mode + Exit distraction free mode + key: distraction_free_mode.disable.label + + + Exit distraction free mode. + Exit distraction free mode. + key: distraction_free_mode.disable.tooltip + + + To exit distraction free mode, click the %icon% or press Esc. + To exit distraction free mode, click the %icon% or press Esc. + key: distraction_free_mode.disable_hint + + + Distraction free mode + Distraction free mode + key: distraction_free_mode.enable.label + + + Enter distraction free mode. It shows only rich text editor toolbar and focuses your attention on editing text. + Enter distraction free mode. It shows only rich text editor toolbar and focuses your attention on editing text. + key: distraction_free_mode.enable.tooltip + Edit Edit diff --git a/src/bundle/Resources/translations/messages.en.xliff b/src/bundle/Resources/translations/messages.en.xliff index 194212b817..c54ed4c470 100644 --- a/src/bundle/Resources/translations/messages.en.xliff +++ b/src/bundle/Resources/translations/messages.en.xliff @@ -261,31 +261,6 @@ No results found key: dashboard.charts.no_results - - Exit Distraction free mode - Exit Distraction free mode - key: distraction_free_mode.disable.label - - - Exit Distraction free mode. - Exit Distraction free mode. - key: distraction_free_mode.disable.tooltip - - - To exit distraction free mode, click the %icon% or press Esc. - To exit distraction free mode, click the %icon% or press Esc. - key: distraction_free_mode.disable_hint - - - Distraction free mode - Distraction free mode - key: distraction_free_mode.enable.label - - - Enter distraction free mode. It shows only rich text editor toolbar and focuses your attention on editing text. - Enter distraction free mode. It shows only rich text editor toolbar and focuses your attention on editing text. - key: distraction_free_mode.enable.tooltip - Search... Search... diff --git a/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig b/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig index b8c3c03443..42c033d04c 100644 --- a/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/form_fields.html.twig @@ -508,6 +508,8 @@ {%- endblock %} {%- block distraction_free_mode -%} + {% trans_default_domain 'ibexa_admin_ui' %} + {%- set title_icon -%} From 66993a944cfb8e6e8bf1bd9628c7092a163fe289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Wed, 13 Dec 2023 21:12:20 +0100 Subject: [PATCH 06/12] [Behat] Adapted tests --- .../BrowserContext/ContentViewContext.php | 14 +++++-- src/lib/Behat/Component/UpperMenu.php | 37 ++++--------------- src/lib/Behat/Page/ContentViewPage.php | 16 ++++---- 3 files changed, 26 insertions(+), 41 deletions(-) diff --git a/src/lib/Behat/BrowserContext/ContentViewContext.php b/src/lib/Behat/BrowserContext/ContentViewContext.php index 6a122fc9bf..63a50929aa 100644 --- a/src/lib/Behat/BrowserContext/ContentViewContext.php +++ b/src/lib/Behat/BrowserContext/ContentViewContext.php @@ -45,11 +45,19 @@ public function startCreatingContent(string $contentType, string $language = nul } /** - * @Given I am using the DXP in :mode mode + * @Given I am using the DXP with Focus mode disabled */ - public function switchToUserMode(string $mode): void + public function disableFocusMode(string $mode): void { - $this->contentViewPage->switchToUserMode($mode); + $this->contentViewPage->setFocusMode(false); + } + + /** + * @Given I am using the DXP in Focus mode + */ + public function enableFocusMode(): void + { + $this->contentViewPage->setFocusMode(true); } /** diff --git a/src/lib/Behat/Component/UpperMenu.php b/src/lib/Behat/Component/UpperMenu.php index 3a8f59c23e..b49a4d988c 100644 --- a/src/lib/Behat/Component/UpperMenu.php +++ b/src/lib/Behat/Component/UpperMenu.php @@ -9,15 +9,11 @@ namespace Ibexa\AdminUi\Behat\Component; use Ibexa\Behat\Browser\Component\Component; -use Ibexa\Behat\Browser\Element\Condition\ElementNotExistsCondition; use Ibexa\Behat\Browser\Element\Criterion\ElementTextCriterion; use Ibexa\Behat\Browser\Locator\VisibleCSSLocator; -use PHPUnit\Framework\Assert; class UpperMenu extends Component { - private const FOCUS_MODE = ['On', 'Off']; - public function goToDashboard(): void { $this->getHTMLPage()->find($this->getLocator('dashboardLink'))->click(); @@ -48,39 +44,19 @@ public function chooseFromUserDropdown(string $option): void $this->getHTMLPage()->findAll($this->getLocator('userSettingsItem'))->getByCriterion(new ElementTextCriterion($option))->click(); } - public function switchToFocusMode(string $newMode): void + public function setFocusMode(bool $expectedModeStatus): void { $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); - $currentMode = explode( - ' ', - $this->getHTMLPage()->find($this->getLocator('focusMode'))->getText() - )[0]; + $isEnabled = $this->getHTMLPage()->setTimeout(3)->findAll($this->getLocator('userFocusEnabled'))->any(); - if (strtolower($newMode) !== strtolower($currentMode)) { + if ($expectedModeStatus != $isEnabled) { $this->getHTMLPage()->find($this->getLocator('focusMode'))->click(); - $this->getHTMLPage() - ->waitUntilCondition( - new ElementNotExistsCondition($this->getHTMLPage(), $this->getLocator('userSettingsPopup')) - ); - } else { - $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); - } - } - - public function getCurrentFocusMode(): string - { - $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); - $mode = explode( - ' ', - $this->getHTMLPage()->find($this->getLocator('focusMode'))->getText() - )[0]; - Assert::assertContains($mode, self::FOCUS_MODE); + return; + } $this->getHTMLPage()->find($this->getLocator('userSettingsToggle'))->click(); - - return $mode; } public function verifyIsLoaded(): void @@ -99,7 +75,8 @@ protected function specifyLocators(): array new VisibleCSSLocator('userSettingsPopup', '.ibexa-header-user-menu .ibexa-header-user-menu__popup-menu'), new VisibleCSSLocator('searchInput', '.ibexa-main-header #search_query'), new VisibleCSSLocator('searchButton', '.ibexa-main-header .ibexa-input-text-wrapper__action-btn--search'), - new VisibleCSSLocator('focusMode', '[name="focus_mode_change"] .ibexa-toggle__label'), + new VisibleCSSLocator('userFocusEnabled', '#focus_mode_change_enabled'), + new VisibleCSSLocator('userFocusMode', '[name="focus_mode_change"] .ibexa-toggle__switcher'), ]; } } diff --git a/src/lib/Behat/Page/ContentViewPage.php b/src/lib/Behat/Page/ContentViewPage.php index b4162b5163..8a901b827c 100644 --- a/src/lib/Behat/Page/ContentViewPage.php +++ b/src/lib/Behat/Page/ContentViewPage.php @@ -182,26 +182,26 @@ public function choosePreview(string $language): void $this->verifyIsLoaded(); } - public function switchToUserMode(string $mode): void + public function setFocusMode(bool $expectedModeStatus): void { - $this->upperMenu->switchToFocusMode($mode); + $this->upperMenu->setFocusMode($expectedModeStatus); - $expertModeTab = 'Technical Details'; + $focusModeExcludedTab = 'Versions'; - if (strtolower($mode) === 'expert') { + if ($expectedModeStatus) { $this->getHTMLPage() ->setTimeout(3) ->findAll($this->getLocator('tab')) - ->getByCriterion(new ElementTextCriterion($expertModeTab)) + ->filterBy(new ElementTextCriterion($focusModeExcludedTab)) ->assert() - ->isVisible(); + ->isEmpty(); } else { $this->getHTMLPage() ->setTimeout(3) ->findAll($this->getLocator('tab')) - ->filterBy(new ElementTextCriterion($expertModeTab)) + ->getByCriterion(new ElementTextCriterion($focusModeExcludedTab)) ->assert() - ->isEmpty(); + ->isVisible(); } } From 444fa4aebe0ed488017382b7112c6aa91a6f1c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Wed, 13 Dec 2023 23:44:47 +0100 Subject: [PATCH 07/12] Fixed distraction free mode selectors --- .../public/js/scripts/admin.distraction.free.mode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js b/src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js index dc5314f475..99f0f0f147 100644 --- a/src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js +++ b/src/bundle/Resources/public/js/scripts/admin.distraction.free.mode.js @@ -2,8 +2,8 @@ let activeFieldEdit = null; const DISTRACTION_FREE_MODE_ENABLE_EVENT_NAME = 'ibexa-distraction-free:enable'; const DISTRACTION_FREE_DISABLE_EVENT_NAME = 'ibexa-distraction-free:disable'; - const distractionFreeModeEnableBtns = doc.querySelectorAll('.ibexa-field-edit__distraction-free-control-btn--enable'); - const distractionFreeModeDisableBtns = doc.querySelectorAll('.ibexa-field-edit__distraction-free-control-btn--disable'); + const distractionFreeModeEnableBtns = doc.querySelectorAll('.ibexa-field-edit__distraction-free-mode-control-btn--enable'); + const distractionFreeModeDisableBtns = doc.querySelectorAll('.ibexa-field-edit__distraction-free-mode-control-btn--disable'); const changeDistractionFreeModeState = (active) => { if (!activeFieldEdit) { return; From 96e639368beacb154e00a27fe45fc7a982a24e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Thu, 14 Dec 2023 00:10:54 +0100 Subject: [PATCH 08/12] Added missing translations --- .../translations/ibexa_user_settings.en.xliff | 36 +++++-------------- src/lib/UserSetting/FocusMode.php | 4 +-- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/src/bundle/Resources/translations/ibexa_user_settings.en.xliff b/src/bundle/Resources/translations/ibexa_user_settings.en.xliff index e33d108b94..28493ccf0e 100644 --- a/src/bundle/Resources/translations/ibexa_user_settings.en.xliff +++ b/src/bundle/Resources/translations/ibexa_user_settings.en.xliff @@ -121,43 +121,23 @@ key: user.setting.focus_mode.name - user.setting.focus_mode.off - user.setting.focus_mode.off + Off + Off key: user.setting.focus_mode.off - user.setting.focus_mode.on - user.setting.focus_mode.on + On + On key: user.setting.focus_mode.on - Smart mode – A clean and intuitive interface with a simplified content structure, designed for new and non-advanced users. Features include:

    -
      -
    • Quick preview
    • -
    • Hidden Technical Details tab
    • -
    • Hidden Locations and Versions tabs in Content items
    • -
    -

    Expert mode – Tailored for experienced users familiar with Ibexa DXP. Provides comprehensive insights into the technical aspects of Content structure, including:

    -
      -
    • Technical Details tab
    • -
    • Location: Archived versions
    • -
    ]]> - Smart mode – A clean and intuitive interface with a simplified content structure, designed for new and non-advanced users. Features include:

    -
      -
    • Quick preview
    • -
    • Hidden Technical Details tab
    • -
    • Hidden Locations and Versions tabs in Content items
    • -
    -

    Expert mode – Tailored for experienced users familiar with Ibexa DXP. Provides comprehensive insights into the technical aspects of Content structure, including:

    -
      -
    • Technical Details tab
    • -
    • Location: Archived versions
    • -
    ]]>
    + user.setting.mode.help + user.setting.mode.help key: user.setting.mode.help
    - Mode - Mode + user.setting.mode.name + user.setting.mode.name key: user.setting.mode.name diff --git a/src/lib/UserSetting/FocusMode.php b/src/lib/UserSetting/FocusMode.php index bb3d72fab9..7688a3dbc7 100644 --- a/src/lib/UserSetting/FocusMode.php +++ b/src/lib/UserSetting/FocusMode.php @@ -60,8 +60,8 @@ public function getDescription(): string public function getDisplayValue(string $storageValue): string { $translationMap = [ - self::FOCUS_MODE_OFF => $this->translator->trans('user.setting.focus_mode.off', [], 'ibexa_user_settings'), - self::FOCUS_MODE_ON => $this->translator->trans('user.setting.focus_mode.on', [], 'ibexa_user_settings'), + self::FOCUS_MODE_OFF => $this->translator->trans(/** @Desc("Off") */'user.setting.focus_mode.off', [], 'ibexa_user_settings'), + self::FOCUS_MODE_ON => $this->translator->trans(/** @Desc("On") */'user.setting.focus_mode.on', [], 'ibexa_user_settings'), ]; return $translationMap[$storageValue] ?? $storageValue; From 8aa153c52a71a96200e6715541228234fa402014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20W=C3=B3js?= Date: Thu, 14 Dec 2023 00:39:49 +0100 Subject: [PATCH 09/12] fixup! IBX-7329: Renamed "Focus mode" to "Distraction free mode" --- .../translations/ibexa_fields_groups.en.xliff | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/bundle/Resources/translations/ibexa_fields_groups.en.xliff diff --git a/src/bundle/Resources/translations/ibexa_fields_groups.en.xliff b/src/bundle/Resources/translations/ibexa_fields_groups.en.xliff new file mode 100644 index 0000000000..c3d51b6c33 --- /dev/null +++ b/src/bundle/Resources/translations/ibexa_fields_groups.en.xliff @@ -0,0 +1,21 @@ + + + +
    + + The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. +
    + + + About + About + key: about + + + Contact + Contact + key: contact + + +
    +
    From e21319db245fc1ef689622752c2f150c26ac73f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Thu, 14 Dec 2023 10:07:55 +0100 Subject: [PATCH 10/12] Adapted tests --- features/personas/AddLocation.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/personas/AddLocation.feature b/features/personas/AddLocation.feature index 88422a2658..4328a589ed 100644 --- a/features/personas/AddLocation.feature +++ b/features/personas/AddLocation.feature @@ -7,7 +7,7 @@ Feature: Verify that an Editor with Content Type limitation on content/create po And I log in as "Add" with password "Passw0rd-42" And I go to "Content structure" in "Content" tab And I navigate to content "NewArticle" of type "Article" in root - And I am using the DXP in "Expert" mode + And I am using the DXP with Focus mode disabled When I switch to "Locations" tab in Content structure And I add a new Location under "root/Destination" Then there exists Content view Page for "root/Destination/NewArticle" From 56d3321be3f2d831dd80382ecf7e74bd712d48cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Thu, 14 Dec 2023 10:33:11 +0100 Subject: [PATCH 11/12] [Behat] FIxed step definition --- src/lib/Behat/BrowserContext/ContentViewContext.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/Behat/BrowserContext/ContentViewContext.php b/src/lib/Behat/BrowserContext/ContentViewContext.php index 63a50929aa..a76ff74610 100644 --- a/src/lib/Behat/BrowserContext/ContentViewContext.php +++ b/src/lib/Behat/BrowserContext/ContentViewContext.php @@ -47,7 +47,7 @@ public function startCreatingContent(string $contentType, string $language = nul /** * @Given I am using the DXP with Focus mode disabled */ - public function disableFocusMode(string $mode): void + public function disableFocusMode(): void { $this->contentViewPage->setFocusMode(false); } From f7b5f27894473000e5e9b3815338a0d5605b7118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Thu, 14 Dec 2023 11:12:52 +0100 Subject: [PATCH 12/12] [Behat] Adapted tests --- src/lib/Behat/Component/UpperMenu.php | 4 ++-- src/lib/Behat/Page/ContentViewPage.php | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/Behat/Component/UpperMenu.php b/src/lib/Behat/Component/UpperMenu.php index b49a4d988c..ac12b64c33 100644 --- a/src/lib/Behat/Component/UpperMenu.php +++ b/src/lib/Behat/Component/UpperMenu.php @@ -51,7 +51,7 @@ public function setFocusMode(bool $expectedModeStatus): void $isEnabled = $this->getHTMLPage()->setTimeout(3)->findAll($this->getLocator('userFocusEnabled'))->any(); if ($expectedModeStatus != $isEnabled) { - $this->getHTMLPage()->find($this->getLocator('focusMode'))->click(); + $this->getHTMLPage()->find($this->getLocator('userFocusMode'))->click(); return; } @@ -75,7 +75,7 @@ protected function specifyLocators(): array new VisibleCSSLocator('userSettingsPopup', '.ibexa-header-user-menu .ibexa-header-user-menu__popup-menu'), new VisibleCSSLocator('searchInput', '.ibexa-main-header #search_query'), new VisibleCSSLocator('searchButton', '.ibexa-main-header .ibexa-input-text-wrapper__action-btn--search'), - new VisibleCSSLocator('userFocusEnabled', '#focus_mode_change_enabled'), + new VisibleCSSLocator('userFocusEnabled', '[name="focus_mode_change"] .ibexa-toggle__label--on'), new VisibleCSSLocator('userFocusMode', '[name="focus_mode_change"] .ibexa-toggle__switcher'), ]; } diff --git a/src/lib/Behat/Page/ContentViewPage.php b/src/lib/Behat/Page/ContentViewPage.php index 8a901b827c..201b06e197 100644 --- a/src/lib/Behat/Page/ContentViewPage.php +++ b/src/lib/Behat/Page/ContentViewPage.php @@ -186,7 +186,8 @@ public function setFocusMode(bool $expectedModeStatus): void { $this->upperMenu->setFocusMode($expectedModeStatus); - $focusModeExcludedTab = 'Versions'; + // TODO: Rework this after Focus mode label is visible next to Ibexa's logo + $focusModeExcludedTab = 'Technical Details'; if ($expectedModeStatus) { $this->getHTMLPage()