From f5ab3123dfe7cabb6ad6c5e64a75bec0e43e0cbb Mon Sep 17 00:00:00 2001 From: "julia.kirschenheuter" Date: Wed, 8 Feb 2023 15:40:41 +0100 Subject: [PATCH] Create headings for settings pages Signed-off-by: julia.kirschenheuter --- .../lib/Controller/AppSettingsController.php | 2 +- .../lib/Controller/UsersController.php | 2 +- apps/settings/src/router.js | 2 ++ .../Controller/AppSettingsControllerTest.php | 6 +++-- core/src/OCP/accessibility.js | 12 ++++++++++ core/templates/layout.user.php | 6 ++--- dist/core-main.js | 4 ++-- dist/core-main.js.map | 2 +- ...ings-vue-settings-apps-users-management.js | 4 ++-- ...tings-apps-users-management.js.LICENSE.txt | 22 +++++++++++++++++++ ...-vue-settings-apps-users-management.js.map | 2 +- 11 files changed, 51 insertions(+), 13 deletions(-) diff --git a/apps/settings/lib/Controller/AppSettingsController.php b/apps/settings/lib/Controller/AppSettingsController.php index a4addfc5b3560..d0ed408df0207 100644 --- a/apps/settings/lib/Controller/AppSettingsController.php +++ b/apps/settings/lib/Controller/AppSettingsController.php @@ -136,7 +136,7 @@ public function viewApps(): TemplateResponse { $params['bundles'] = $this->getBundles(); $this->navigationManager->setActiveEntry('core_apps'); - $templateResponse = new TemplateResponse('settings', 'settings-vue', ['serverData' => $params]); + $templateResponse = new TemplateResponse('settings', 'settings-vue', ['serverData' => $params, 'pageTitle' => $this->l10n->t('Apps')]); $policy = new ContentSecurityPolicy(); $policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com'); $templateResponse->setContentSecurityPolicy($policy); diff --git a/apps/settings/lib/Controller/UsersController.php b/apps/settings/lib/Controller/UsersController.php index 217abf0e156be..89a850c19809a 100644 --- a/apps/settings/lib/Controller/UsersController.php +++ b/apps/settings/lib/Controller/UsersController.php @@ -277,7 +277,7 @@ public function usersList(): TemplateResponse { $serverData['newUserRequireEmail'] = $this->config->getAppValue('core', 'newUser.requireEmail', 'no') === 'yes'; $serverData['newUserSendEmail'] = $this->config->getAppValue('core', 'newUser.sendEmail', 'yes') === 'yes'; - return new TemplateResponse('settings', 'settings-vue', ['serverData' => $serverData]); + return new TemplateResponse('settings', 'settings-vue', ['serverData' => $serverData, 'pageTitle' => $this->l10n->t('Users')]); } /** diff --git a/apps/settings/src/router.js b/apps/settings/src/router.js index 863bd49c32db1..cf842475c5da6 100644 --- a/apps/settings/src/router.js +++ b/apps/settings/src/router.js @@ -27,6 +27,7 @@ import Router from 'vue-router' import { generateUrl } from '@nextcloud/router' import { APPS_SECTION_ENUM } from './constants/AppsConstants.js' import store from './store/index.js' +import { setPageHeading } from '../../../core/src/OCP/accessibility.js' // Dynamic loading const Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users') @@ -126,6 +127,7 @@ router.afterEach(async (to) => { const metaTitle = await to.meta.title?.(to) if (metaTitle) { document.title = `${metaTitle} - ${baseTitle}` + setPageHeading(metaTitle) } else { document.title = baseTitle } diff --git a/apps/settings/tests/Controller/AppSettingsControllerTest.php b/apps/settings/tests/Controller/AppSettingsControllerTest.php index 28d77dc3696a3..8d0dae223d33e 100644 --- a/apps/settings/tests/Controller/AppSettingsControllerTest.php +++ b/apps/settings/tests/Controller/AppSettingsControllerTest.php @@ -209,7 +209,8 @@ public function testViewApps() { 'appstoreEnabled' => true, 'bundles' => [], 'developerDocumentation' => '' - ] + ], + 'pageTitle' => 'Apps' ], 'user'); $expected->setContentSecurityPolicy($policy); @@ -243,7 +244,8 @@ public function testViewAppsAppstoreNotEnabled() { 'appstoreEnabled' => false, 'bundles' => [], 'developerDocumentation' => '' - ] + ], + 'pageTitle' => 'Apps' ], 'user'); $expected->setContentSecurityPolicy($policy); diff --git a/core/src/OCP/accessibility.js b/core/src/OCP/accessibility.js index 3839509228fe3..72bd8a7058283 100644 --- a/core/src/OCP/accessibility.js +++ b/core/src/OCP/accessibility.js @@ -22,6 +22,17 @@ import { loadState } from '@nextcloud/initial-state' +/** + * Set the page heading + * + * @param {string} heading page title from the history api + */ +export function setPageHeading(heading) { + const headingEl = document.getElementById('page-heading-level-1') + if (headingEl) { + headingEl.textContent = heading + } +} export default { /** * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered @@ -29,4 +40,5 @@ export default { disableKeyboardShortcuts() { return loadState('theming', 'shortcutsDisabled', false) }, + setPageHeading, } diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index dc38f642ca43a..7c2625bbaaf0b 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -57,6 +57,9 @@