diff --git a/lib/public/Settings/IIconSection.php b/lib/public/Settings/IIconSection.php new file mode 100644 index 0000000000..089b9b094e --- /dev/null +++ b/lib/public/Settings/IIconSection.php @@ -0,0 +1,38 @@ + + * + * @author Joas Schilling + * + * @license GNU AGPL version 3 or any later version + * + * 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 . + * + */ + +namespace OCP\Settings; + +/** + * @since 12 + */ +interface IIconSection extends ISection { + /** + * returns the relative path to an 16*16 icon describing the section. + * e.g. '/core/img/places/files.svg' + * + * @returns string + * @since 12 + */ + public function getIcon(); +} diff --git a/lib/public/Settings/ISection.php b/lib/public/Settings/ISection.php index 5edf5de0ca..3c08b74bdc 100644 --- a/lib/public/Settings/ISection.php +++ b/lib/public/Settings/ISection.php @@ -24,6 +24,7 @@ namespace OCP\Settings; /** + * @deprecated 12 Use IIconSection instead * @since 9.1 */ interface ISection { diff --git a/settings/Controller/AdminSettingsController.php b/settings/Controller/AdminSettingsController.php index ef70caf569..4bc986e708 100644 --- a/settings/Controller/AdminSettingsController.php +++ b/settings/Controller/AdminSettingsController.php @@ -28,7 +28,9 @@ use OCP\AppFramework\Controller; use OCP\AppFramework\Http\TemplateResponse; use OCP\INavigationManager; use OCP\IRequest; +use OCP\Settings\IIconSection; use OCP\Settings\IManager as ISettingsManager; +use OCP\Settings\ISection; use OCP\Template; /** @@ -133,10 +135,16 @@ class AdminSettingsController extends Controller { /** @var \OC\Settings\Section[] $prioritizedSections */ foreach($sections as $prioritizedSections) { foreach ($prioritizedSections as $section) { + $icon = ''; + if ($section instanceof IIconSection) { + $icon = $section->getIcon(); + } + $templateParameters[] = [ 'anchor' => $section->getID(), 'section-name' => $section->getName(), 'active' => $section->getID() === $currentSection, + 'icon' => $icon, ]; } } diff --git a/settings/css/settings.css b/settings/css/settings.css index f3aa079e35..b9b5570bc7 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -727,6 +727,16 @@ table.grid td.date{ /* ADMIN */ +/* Navigation icons */ +#app-navigation img { + margin-bottom: -3px; + margin-right: 6px; + width: 16px; +} +#app-navigation li span.no-icon { + padding-left: 25px; +} + /* icons for sidebar */ .nav-icon-server { background-image: url('../img/admin.svg?v=1'); diff --git a/settings/templates/admin/frame.php b/settings/templates/admin/frame.php index 7ae6b5fa01..2b234f4cd9 100644 --- a/settings/templates/admin/frame.php +++ b/settings/templates/admin/frame.php @@ -29,18 +29,29 @@ script('files', 'jquery.fileupload'); ?>
-
    - + getURLGenerator()->linkToRoute('settings.AdminSettings.index', ['section' => $form['anchor']]); $class = 'nav-icon-' . $form['anchor']; $sectionName = $form['section-name']; $active = $form['active'] ? ' class="active"' : ''; - print_unescaped(sprintf("%s", $active, \OCP\Util::sanitizeHTML($anchor), - \OCP\Util::sanitizeHTML($class), - \OCP\Util::sanitizeHTML($sectionName))); + ?> +
  • > + + + + + + + + +
  • + + } + ?>