Skip to content

Commit 725f56b

Browse files
committed
fix(settings): show Previews icon in admin navigation
Use a settings-owned template SVG instead of the themed MIME filetypes/image.svg icon, which does not render in the left nav. Assisted-by: Grok:grok-4.6 Signed-off-by: Ray Vincent <rayhvincent@gmail.com>
1 parent 6f5478f commit 725f56b

5 files changed

Lines changed: 51 additions & 2 deletions

File tree

REUSE.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ SPDX-FileCopyrightText = "2021 Nextcloud GmbH and Nextcloud contributors"
226226
SPDX-License-Identifier = "AGPL-3.0-or-later"
227227

228228
[[annotations]]
229-
path = ["apps/encryption/img/app.svg", "apps/federation/img/app.svg", "apps/files/img/add-color.png", "apps/files/img/add-color.svg", "apps/files/img/app-dark.svg", "apps/files/img/app.svg", "apps/files/img/change.png", "apps/files/img/change.svg", "apps/files/img/delete-color.png", "apps/files/img/delete-color.svg", "apps/files/img/folder.svg", "apps/files/img/folder-move.svg", "apps/files_external/img/app-dark.svg", "apps/files_external/img/app.svg", "apps/user_ldap/img/app-dark.svg", "apps/user_ldap/img/app.svg", "apps/comments/img/comments-dark.svg", "apps/comments/img/comments.svg", "apps/files_reminders/img/app-dark.svg", "apps/files_reminders/img/app.svg", "apps/files_versions/img/app-dark.svg", "apps/files_versions/img/app.svg", "apps/files_trashbin/img/app-dark.svg", "apps/files_trashbin/img/app.svg", "apps/theming/img/accessibility-dark.svg", "apps/testing/img/app.svg", "apps/sharebymail/img/app.svg", "apps/systemtags/img/app.svg", "apps/provisioning_api/img/app.svg", "apps/settings/img/change.svg", "apps/settings/img/help.svg", "apps/settings/img/password.svg", "apps/settings/img/personal.png", "apps/settings/img/personal.svg", "apps/settings/img/share.svg", "apps/settings/img/users-white.svg", "apps/settings/img/users.svg", "apps/files_sharing/img/app.svg", "apps/settings/img/admin.svg", "apps/settings/img/library_add_check.svg", "apps/settings/img/settings.svg", "apps/settings/img/settings_apps.svg", "apps/settings/img/toggle-filelist.svg", "apps/webhook_listeners/img/app-dark.svg", "apps/webhook_listeners/img/app.svg", "core/img/filetypes/application-pdf.svg", "core/img/breadcrumb.svg", "core/img/filetypes/application.svg", "core/img/filetypes/audio.svg", "core/img/filetypes/file.svg", "core/img/filetypes/folder-drag-accept.svg", "core/img/filetypes/folder-encrypted.svg", "core/img/filetypes/folder-external.svg", "core/img/filetypes/folder-public.svg", "core/img/filetypes/folder-shared.svg", "core/img/filetypes/folder-starred.svg", "core/img/filetypes/folder.svg", "core/img/filetypes/image.svg", "core/img/filetypes/link.svg", "core/img/filetypes/location.svg", "core/img/filetypes/mindmap.svg", "core/img/filetypes/text-calendar.svg", "core/img/filetypes/text-code.svg", "core/img/filetypes/text-vcard.svg", "core/img/filetypes/text.svg", "core/img/filetypes/video.svg", "core/img/filetypes/x-office-document.svg", "core/img/filetypes/x-office-drawing.svg", "core/img/filetypes/x-office-form-template.svg", "core/img/filetypes/x-office-form.svg", "core/img/filetypes/x-office-presentation.svg", "core/img/filetypes/x-office-spreadsheet.svg", "core/img/places/calendar-dark.png", "core/img/places/calendar.png", "core/img/places/calendar.svg", "core/img/places/contacts-dark.png", "core/img/places/contacts.svg", "core/img/places/default-app-icon.svg", "core/img/places/files.svg", "core/img/places/home.svg", "core/img/places/link.svg", "core/img/places/music.svg", "core/img/places/picture.svg", "core/img/rating/s0.svg", "core/img/rating/s1.svg", "core/img/rating/s10.svg", "core/img/rating/s2.svg", "core/img/rating/s3.svg", "core/img/rating/s4.svg", "core/img/rating/s5.svg", "core/img/rating/s6.svg", "core/img/rating/s7.svg", "core/img/rating/s8.svg", "core/img/rating/s9.svg", "core/img/mail.svg", "core/img/rss.svg", "core/img/clients/desktop.svg", "core/img/clients/phone.svg", "core/img/clients/tablet.svg", "core/img/categories/auth.svg", "core/img/categories/bundles.svg", "core/img/categories/customization.svg", "core/img/categories/files.svg", "core/img/categories/games.svg", "core/img/categories/integration.svg", "core/img/categories/monitoring.svg", "core/img/categories/multimedia.svg", "core/img/categories/office.svg", "core/img/categories/organization.svg", "core/img/categories/social.svg", "core/img/categories/workflow.svg", "core/img/apps/circles.svg", "core/img/apps/notes.svg", "core/img/apps/richdocuments.svg", "core/img/caldav/attendees.png", "core/img/caldav/attendees.svg", "core/img/caldav/description.png", "core/img/caldav/description.svg", "core/img/caldav/link.png", "core/img/caldav/link.svg", "core/img/caldav/location.png", "core/img/caldav/location.svg", "core/img/caldav/organizer.png", "core/img/caldav/organizer.svg", "core/img/caldav/time.png", "core/img/caldav/time.svg", "core/img/caldav/title.png", "core/img/caldav/title.svg", "core/img/actions/add-folder-description.svg", "core/img/actions/add.svg", "core/img/actions/address.png", "core/img/actions/address.svg", "core/img/actions/alert-outline.svg", "core/img/actions/arrow-left.svg", "core/img/actions/arrow-right.svg", "core/img/actions/audio-off.svg", "core/img/actions/audio.svg", "core/img/actions/caret-white.svg", "core/img/actions/caret.svg", "core/img/actions/change.svg", "core/img/actions/clippy.svg", "core/img/actions/close.svg", "core/img/actions/comment.png", "core/img/actions/comment.svg", "core/img/actions/confirm-fade.svg", "core/img/actions/confirm-white.svg", "core/img/actions/confirm.svg", "core/img/actions/delete.png", "core/img/actions/delete.svg", "core/img/actions/details.svg", "core/img/actions/disabled-user.svg", "core/img/actions/disabled-users.svg", "core/img/actions/download.png", "core/img/actions/download.svg", "core/img/actions/edit.svg", "core/img/actions/error-white.svg", "core/img/actions/error.svg", "core/img/actions/external.svg", "core/img/actions/filter.svg", "core/img/actions/fullscreen.svg", "core/img/actions/group.svg", "core/img/actions/history.png", "core/img/actions/history.svg", "core/img/actions/info-white.svg", "core/img/actions/info.png", "core/img/actions/info.svg", "core/img/actions/logout.svg", "core/img/actions/mail-outline.svg", "core/img/actions/mail.svg", "core/img/actions/menu-sidebar.svg", "core/img/actions/menu.svg", "core/img/actions/more-white.svg", "core/img/actions/more.png", "core/img/actions/more.svg", "core/img/actions/password-white.svg", "core/img/actions/password.png", "core/img/actions/password.svg", "core/img/actions/pause.svg", "core/img/actions/phone-outline.svg", "core/img/actions/phone.svg", "core/img/actions/play-add.svg", "core/img/actions/play-next.svg", "core/img/actions/play-previous.svg", "core/img/actions/play.svg", "core/img/actions/profile.svg", "core/img/actions/projects.svg", "core/img/actions/public-white.svg", "core/img/actions/public.svg", "core/img/actions/quota.svg", "core/img/actions/recent.svg", "core/img/actions/rename.svg", "core/img/actions/screen-off.svg", "core/img/actions/screen.svg", "core/img/actions/search.svg", "core/img/actions/settings-dark.svg", "core/img/actions/settings.svg", "core/img/actions/share.png", "core/img/actions/share.svg", "core/img/actions/shared.svg", "core/img/actions/sound-off.svg", "core/img/actions/sound.svg", "core/img/actions/star-dark.svg", "core/img/actions/star.png", "core/img/actions/star.svg", "core/img/actions/starred.png", "core/img/actions/starred.svg", "core/img/actions/tag.png", "core/img/actions/tag.svg", "core/img/actions/template-add.svg", "core/img/actions/timezone.svg", "core/img/actions/toggle-background.svg", "core/img/actions/toggle-filelist.svg", "core/img/actions/toggle-pictures.svg", "core/img/actions/toggle.svg", "core/img/actions/triangle-e.svg", "core/img/actions/triangle-n.svg", "core/img/actions/triangle-s.svg", "core/img/actions/unshare.svg", "core/img/actions/upload.svg", "core/img/actions/user-admin.svg", "core/img/actions/user.svg", "core/img/actions/verified.svg", "core/img/actions/verify.svg", "core/img/actions/verifying.svg", "core/img/actions/video-off.svg", "core/img/actions/video-switch.svg", "core/img/actions/video.svg", "core/img/actions/view-close.svg", "core/img/actions/view-download.svg", "core/img/actions/view-next.svg", "core/img/actions/view-pause.svg", "core/img/actions/view-play.svg", "core/img/actions/view-previous.svg", "core/img/places/contacts-dark.png", "core/img/places/contacts.svg", "apps/user_status/img/app-dark.svg", "apps/user_status/img/app.svg", "apps/theming/img/app-dark.svg", "apps/theming/img/app.svg", "apps/updatenotification/img/app.svg", "apps/weather_status/img/app-dark.svg", "apps/weather_status/img/app.svg", "apps/updatenotification/img/notification.svg"]
229+
path = ["apps/encryption/img/app.svg", "apps/federation/img/app.svg", "apps/files/img/add-color.png", "apps/files/img/add-color.svg", "apps/files/img/app-dark.svg", "apps/files/img/app.svg", "apps/files/img/change.png", "apps/files/img/change.svg", "apps/files/img/delete-color.png", "apps/files/img/delete-color.svg", "apps/files/img/folder.svg", "apps/files/img/folder-move.svg", "apps/files_external/img/app-dark.svg", "apps/files_external/img/app.svg", "apps/user_ldap/img/app-dark.svg", "apps/user_ldap/img/app.svg", "apps/comments/img/comments-dark.svg", "apps/comments/img/comments.svg", "apps/files_reminders/img/app-dark.svg", "apps/files_reminders/img/app.svg", "apps/files_versions/img/app-dark.svg", "apps/files_versions/img/app.svg", "apps/files_trashbin/img/app-dark.svg", "apps/files_trashbin/img/app.svg", "apps/theming/img/accessibility-dark.svg", "apps/testing/img/app.svg", "apps/sharebymail/img/app.svg", "apps/systemtags/img/app.svg", "apps/provisioning_api/img/app.svg", "apps/settings/img/change.svg", "apps/settings/img/help.svg", "apps/settings/img/password.svg", "apps/settings/img/personal.png", "apps/settings/img/personal.svg", "apps/settings/img/share.svg", "apps/settings/img/users-white.svg", "apps/settings/img/users.svg", "apps/files_sharing/img/app.svg", "apps/settings/img/admin.svg", "apps/settings/img/library_add_check.svg", "apps/settings/img/previews.svg", "apps/settings/img/settings.svg", "apps/settings/img/settings_apps.svg", "apps/settings/img/toggle-filelist.svg", "apps/webhook_listeners/img/app-dark.svg", "apps/webhook_listeners/img/app.svg", "core/img/filetypes/application-pdf.svg", "core/img/breadcrumb.svg", "core/img/filetypes/application.svg", "core/img/filetypes/audio.svg", "core/img/filetypes/file.svg", "core/img/filetypes/folder-drag-accept.svg", "core/img/filetypes/folder-encrypted.svg", "core/img/filetypes/folder-external.svg", "core/img/filetypes/folder-public.svg", "core/img/filetypes/folder-shared.svg", "core/img/filetypes/folder-starred.svg", "core/img/filetypes/folder.svg", "core/img/filetypes/image.svg", "core/img/filetypes/link.svg", "core/img/filetypes/location.svg", "core/img/filetypes/mindmap.svg", "core/img/filetypes/text-calendar.svg", "core/img/filetypes/text-code.svg", "core/img/filetypes/text-vcard.svg", "core/img/filetypes/text.svg", "core/img/filetypes/video.svg", "core/img/filetypes/x-office-document.svg", "core/img/filetypes/x-office-drawing.svg", "core/img/filetypes/x-office-form-template.svg", "core/img/filetypes/x-office-form.svg", "core/img/filetypes/x-office-presentation.svg", "core/img/filetypes/x-office-spreadsheet.svg", "core/img/places/calendar-dark.png", "core/img/places/calendar.png", "core/img/places/calendar.svg", "core/img/places/contacts-dark.png", "core/img/places/contacts.svg", "core/img/places/default-app-icon.svg", "core/img/places/files.svg", "core/img/places/home.svg", "core/img/places/link.svg", "core/img/places/music.svg", "core/img/places/picture.svg", "core/img/rating/s0.svg", "core/img/rating/s1.svg", "core/img/rating/s10.svg", "core/img/rating/s2.svg", "core/img/rating/s3.svg", "core/img/rating/s4.svg", "core/img/rating/s5.svg", "core/img/rating/s6.svg", "core/img/rating/s7.svg", "core/img/rating/s8.svg", "core/img/rating/s9.svg", "core/img/mail.svg", "core/img/rss.svg", "core/img/clients/desktop.svg", "core/img/clients/phone.svg", "core/img/clients/tablet.svg", "core/img/categories/auth.svg", "core/img/categories/bundles.svg", "core/img/categories/customization.svg", "core/img/categories/files.svg", "core/img/categories/games.svg", "core/img/categories/integration.svg", "core/img/categories/monitoring.svg", "core/img/categories/multimedia.svg", "core/img/categories/office.svg", "core/img/categories/organization.svg", "core/img/categories/social.svg", "core/img/categories/workflow.svg", "core/img/apps/circles.svg", "core/img/apps/notes.svg", "core/img/apps/richdocuments.svg", "core/img/caldav/attendees.png", "core/img/caldav/attendees.svg", "core/img/caldav/description.png", "core/img/caldav/description.svg", "core/img/caldav/link.png", "core/img/caldav/link.svg", "core/img/caldav/location.png", "core/img/caldav/location.svg", "core/img/caldav/organizer.png", "core/img/caldav/organizer.svg", "core/img/caldav/time.png", "core/img/caldav/time.svg", "core/img/caldav/title.png", "core/img/caldav/title.svg", "core/img/actions/add-folder-description.svg", "core/img/actions/add.svg", "core/img/actions/address.png", "core/img/actions/address.svg", "core/img/actions/alert-outline.svg", "core/img/actions/arrow-left.svg", "core/img/actions/arrow-right.svg", "core/img/actions/audio-off.svg", "core/img/actions/audio.svg", "core/img/actions/caret-white.svg", "core/img/actions/caret.svg", "core/img/actions/change.svg", "core/img/actions/clippy.svg", "core/img/actions/close.svg", "core/img/actions/comment.png", "core/img/actions/comment.svg", "core/img/actions/confirm-fade.svg", "core/img/actions/confirm-white.svg", "core/img/actions/confirm.svg", "core/img/actions/delete.png", "core/img/actions/delete.svg", "core/img/actions/details.svg", "core/img/actions/disabled-user.svg", "core/img/actions/disabled-users.svg", "core/img/actions/download.png", "core/img/actions/download.svg", "core/img/actions/edit.svg", "core/img/actions/error-white.svg", "core/img/actions/error.svg", "core/img/actions/external.svg", "core/img/actions/filter.svg", "core/img/actions/fullscreen.svg", "core/img/actions/group.svg", "core/img/actions/history.png", "core/img/actions/history.svg", "core/img/actions/info-white.svg", "core/img/actions/info.png", "core/img/actions/info.svg", "core/img/actions/logout.svg", "core/img/actions/mail-outline.svg", "core/img/actions/mail.svg", "core/img/actions/menu-sidebar.svg", "core/img/actions/menu.svg", "core/img/actions/more-white.svg", "core/img/actions/more.png", "core/img/actions/more.svg", "core/img/actions/password-white.svg", "core/img/actions/password.png", "core/img/actions/password.svg", "core/img/actions/pause.svg", "core/img/actions/phone-outline.svg", "core/img/actions/phone.svg", "core/img/actions/play-add.svg", "core/img/actions/play-next.svg", "core/img/actions/play-previous.svg", "core/img/actions/play.svg", "core/img/actions/profile.svg", "core/img/actions/projects.svg", "core/img/actions/public-white.svg", "core/img/actions/public.svg", "core/img/actions/quota.svg", "core/img/actions/recent.svg", "core/img/actions/rename.svg", "core/img/actions/screen-off.svg", "core/img/actions/screen.svg", "core/img/actions/search.svg", "core/img/actions/settings-dark.svg", "core/img/actions/settings.svg", "core/img/actions/share.png", "core/img/actions/share.svg", "core/img/actions/shared.svg", "core/img/actions/sound-off.svg", "core/img/actions/sound.svg", "core/img/actions/star-dark.svg", "core/img/actions/star.png", "core/img/actions/star.svg", "core/img/actions/starred.png", "core/img/actions/starred.svg", "core/img/actions/tag.png", "core/img/actions/tag.svg", "core/img/actions/template-add.svg", "core/img/actions/timezone.svg", "core/img/actions/toggle-background.svg", "core/img/actions/toggle-filelist.svg", "core/img/actions/toggle-pictures.svg", "core/img/actions/toggle.svg", "core/img/actions/triangle-e.svg", "core/img/actions/triangle-n.svg", "core/img/actions/triangle-s.svg", "core/img/actions/unshare.svg", "core/img/actions/upload.svg", "core/img/actions/user-admin.svg", "core/img/actions/user.svg", "core/img/actions/verified.svg", "core/img/actions/verify.svg", "core/img/actions/verifying.svg", "core/img/actions/video-off.svg", "core/img/actions/video-switch.svg", "core/img/actions/video.svg", "core/img/actions/view-close.svg", "core/img/actions/view-download.svg", "core/img/actions/view-next.svg", "core/img/actions/view-pause.svg", "core/img/actions/view-play.svg", "core/img/actions/view-previous.svg", "core/img/places/contacts-dark.png", "core/img/places/contacts.svg", "apps/user_status/img/app-dark.svg", "apps/user_status/img/app.svg", "apps/theming/img/app-dark.svg", "apps/theming/img/app.svg", "apps/updatenotification/img/app.svg", "apps/weather_status/img/app-dark.svg", "apps/weather_status/img/app.svg", "apps/updatenotification/img/notification.svg"]
230230
precedence = "aggregate"
231231
SPDX-FileCopyrightText = "2018-2024 Google LLC"
232232
SPDX-License-Identifier = "Apache-2.0"

apps/settings/img/previews.svg

Lines changed: 1 addition & 0 deletions
Loading

apps/settings/lib/Sections/Admin/Previews.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function __construct(
2222

2323
#[\Override]
2424
public function getIcon(): string {
25-
return $this->urlGenerator->imagePath('core', 'filetypes/image.svg');
25+
return $this->urlGenerator->imagePath('settings', 'previews.svg');
2626
}
2727

2828
#[\Override]
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\Settings\Tests\Sections\Admin;
11+
12+
use OCA\Settings\Sections\Admin\Previews;
13+
use OCP\IL10N;
14+
use OCP\IURLGenerator;
15+
use PHPUnit\Framework\MockObject\MockObject;
16+
use Test\TestCase;
17+
18+
class PreviewsTest extends TestCase {
19+
private IURLGenerator&MockObject $urlGenerator;
20+
private IL10N&MockObject $l10n;
21+
private Previews $section;
22+
23+
protected function setUp(): void {
24+
parent::setUp();
25+
26+
$this->urlGenerator = $this->createMock(IURLGenerator::class);
27+
$this->l10n = $this->createMock(IL10N::class);
28+
$this->section = new Previews($this->l10n, $this->urlGenerator);
29+
}
30+
31+
public function testGetIconUsesSettingsPreviewSvg(): void {
32+
$this->urlGenerator->expects($this->once())
33+
->method('imagePath')
34+
->with('settings', 'previews.svg')
35+
->willReturn('/apps/settings/img/previews.svg');
36+
37+
$this->assertSame('/apps/settings/img/previews.svg', $this->section->getIcon());
38+
}
39+
40+
public function testGetId(): void {
41+
$this->assertSame('previews', $this->section->getID());
42+
}
43+
}

tests/playwright/e2e/settings/admin-settings-previews.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ import { pickSelectOption } from '../../support/utils/select.ts'
1313
adminTest.describe('Settings: Previews admin page', () => {
1414
adminTest('admin can open Administration → Previews and see all sections', async ({ page }) => {
1515
await page.goto('/index.php/settings/admin/previews')
16+
const previewsNav = page.getByRole('navigation').getByRole('link', { name: 'Previews' })
17+
await expect(previewsNav).toBeVisible()
18+
const previewsNavIcon = previewsNav.locator('img')
19+
await expect(previewsNavIcon).toBeVisible()
20+
await expect(previewsNavIcon).toHaveAttribute('src', /\/apps\/settings\/img\/previews\.svg/)
1621
await expect(page.getByRole('heading', { name: /^Previews/ }).first()).toBeVisible()
1722
await expect(page.getByRole('heading', { name: 'Providers' })).toBeVisible()
1823
await expect(page.getByRole('heading', { name: 'General' })).toBeVisible()

0 commit comments

Comments
 (0)