Skip to content

Commit

Permalink
Create headings for settings pages
Browse files Browse the repository at this point in the history
Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
  • Loading branch information
JuliaKirschenheuter committed Mar 6, 2023
1 parent eddc6f2 commit c73c945
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 13 deletions.
2 changes: 1 addition & 1 deletion apps/settings/lib/Controller/AppSettingsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion apps/settings/lib/Controller/UsersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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')]);
}

/**
Expand Down
2 changes: 2 additions & 0 deletions apps/settings/src/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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
}
Expand Down
6 changes: 4 additions & 2 deletions apps/settings/tests/Controller/AppSettingsControllerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,8 @@ public function testViewApps() {
'updateCount' => 0,
'appstoreEnabled' => true,
'bundles' => [],
'developerDocumentation' => ''
'developerDocumentation' => '',
'pageTitle' => 'Apps'
]
],
'user');
Expand Down Expand Up @@ -242,7 +243,8 @@ public function testViewAppsAppstoreNotEnabled() {
'updateCount' => 0,
'appstoreEnabled' => false,
'bundles' => [],
'developerDocumentation' => ''
'developerDocumentation' => '',
'pageTitle' => 'Apps'
]
],
'user');
Expand Down
13 changes: 13 additions & 0 deletions core/src/OCP/accessibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,24 @@

import { loadState } from '@nextcloud/initial-state'

/**
* Set the page heading
*
* @param {string} heading page title from the history api
* @since 27.0.0
*/
export function setPageHeading(heading) {
const headingEl = document.getElementById('pageHeadingLevel1')
if (headingEl) {
headingEl.textContent = heading
}
}
export default {
/**
* @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered
*/
disableKeyboardShortcuts() {
return loadState('theming', 'shortcutsDisabled', false)
},
setPageHeading,
}
6 changes: 3 additions & 3 deletions core/templates/layout.user.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@
</div>

<header role="banner" id="header">
<h1 class="hidden-visually" id="pageHeadingLevel1">
<?php p(!empty($_['pageTitle'])?$_['pageTitle']:$theme->getName()); ?>
</h1>
<div class="header-left">
<a href="<?php print_unescaped($_['logoUrl'] ?: link_to('', 'index.php')); ?>"
id="nextcloud">
Expand Down Expand Up @@ -89,9 +92,6 @@
</form>

<main id="content" class="app-<?php p($_['appid']) ?>">
<h1 class="hidden-visually">
<?php p($l->t('%s\'s homepage', [$theme->getName()])); ?>
</h1>
<?php print_unescaped($_['content']); ?>
</main>
<div id="profiler-toolbar"></div>
Expand Down
4 changes: 2 additions & 2 deletions dist/core-main.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/core-main.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/settings-vue-settings-apps-users-management.js

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions dist/settings-vue-settings-apps-users-management.js.LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,25 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

/**
* @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>
*
* @author Joas Schilling <coding@schilljs.com>
*
* @license AGPL-3.0-or-later
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
2 changes: 1 addition & 1 deletion dist/settings-vue-settings-apps-users-management.js.map

Large diffs are not rendered by default.

0 comments on commit c73c945

Please sign in to comment.