Skip to content

Commit 2ab6bc3

Browse files
Create headings for settings pages
Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
1 parent 2f64d16 commit 2ab6bc3

File tree

9 files changed

+27
-14
lines changed

9 files changed

+27
-14
lines changed

apps/settings/lib/Controller/AppSettingsController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public function viewApps(): TemplateResponse {
136136
$params['bundles'] = $this->getBundles();
137137
$this->navigationManager->setActiveEntry('core_apps');
138138

139-
$templateResponse = new TemplateResponse('settings', 'settings-vue', ['serverData' => $params]);
139+
$templateResponse = new TemplateResponse('settings', 'settings-vue', ['serverData' => $params, 'pageTitle' => $this->l10n->t('Apps')]);
140140
$policy = new ContentSecurityPolicy();
141141
$policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com');
142142
$templateResponse->setContentSecurityPolicy($policy);

apps/settings/lib/Controller/UsersController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ public function usersList(): TemplateResponse {
277277
$serverData['newUserRequireEmail'] = $this->config->getAppValue('core', 'newUser.requireEmail', 'no') === 'yes';
278278
$serverData['newUserSendEmail'] = $this->config->getAppValue('core', 'newUser.sendEmail', 'yes') === 'yes';
279279

280-
return new TemplateResponse('settings', 'settings-vue', ['serverData' => $serverData]);
280+
return new TemplateResponse('settings', 'settings-vue', ['serverData' => $serverData, 'pageTitle' => $this->l10n->t('Users')]);
281281
}
282282

283283
/**

apps/settings/src/router.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import Router from 'vue-router'
2727
import { generateUrl } from '@nextcloud/router'
2828
import { APPS_SECTION_ENUM } from './constants/AppsConstants.js'
2929
import store from './store/index.js'
30+
import Accessibility from '../../../core/src/OCP/accessibility'
3031

3132
// Dynamic loading
3233
const Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')
@@ -126,6 +127,7 @@ router.afterEach(async (to) => {
126127
const metaTitle = await to.meta.title?.(to)
127128
if (metaTitle) {
128129
document.title = `${metaTitle} - ${baseTitle}`
130+
OCP.Accessibility.setPageTitle(metaTitle)
129131
} else {
130132
document.title = baseTitle
131133
}

core/src/OCP/accessibility.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,15 @@ export default {
2929
disableKeyboardShortcuts() {
3030
return loadState('theming', 'shortcutsDisabled', false)
3131
},
32+
/**
33+
* Set a page title to h1 header
34+
*
35+
* @param {string} [pageTitle] page title from the history api
36+
*/
37+
setPageTitle(pageTitle) {
38+
const heading = document.getElementById('pageHeadingLevel1')
39+
if (heading) {
40+
heading.textContent = pageTitle
41+
}
42+
},
3243
}

core/templates/layout.user.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
<title>
2020
<?php
2121
p(!empty($_['pageTitle'])?$_['pageTitle'].' - ':'');
22-
p(!empty($_['application'])?$_['application'].' - ':'');
23-
p($theme->getTitle());
24-
?>
22+
p(!empty($_['application'])?$_['application'].' - ':'');
23+
p($theme->getTitle());
24+
?>
2525
</title>
2626
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
2727

@@ -57,6 +57,9 @@
5757
</div>
5858

5959
<header role="banner" id="header">
60+
<h1 class="hidden-visually" id="pageHeadingLevel1">
61+
<?php p(!empty($_['pageTitle'])?$_['pageTitle']:''); ?>
62+
</h1>
6063
<div class="header-left">
6164
<a href="<?php print_unescaped($_['logoUrl'] ?: link_to('', 'index.php')); ?>"
6265
id="nextcloud">
@@ -89,9 +92,6 @@
8992
</form>
9093

9194
<main id="content" class="app-<?php p($_['appid']) ?>">
92-
<h1 class="hidden-visually">
93-
<?php p($l->t('%s\'s homepage', [$theme->getName()])); ?>
94-
</h1>
9595
<?php print_unescaped($_['content']); ?>
9696
</main>
9797
<div id="profiler-toolbar"></div>

dist/core-main.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-main.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/settings-vue-settings-apps-users-management.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/settings-vue-settings-apps-users-management.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)