diff options
-rw-r--r-- | lib/public/Settings/IIconSection.php | 38 | ||||
-rw-r--r-- | lib/public/Settings/ISection.php | 1 | ||||
-rw-r--r-- | settings/Controller/AdminSettingsController.php | 8 | ||||
-rw-r--r-- | settings/css/settings.css | 10 | ||||
-rw-r--r-- | settings/templates/admin/frame.php | 23 |
5 files changed, 74 insertions, 6 deletions
diff --git a/lib/public/Settings/IIconSection.php b/lib/public/Settings/IIconSection.php new file mode 100644 index 00000000000..089b9b094e9 --- /dev/null +++ b/lib/public/Settings/IIconSection.php @@ -0,0 +1,38 @@ +<?php +/** + * @copyright Copyright (c) 2017, Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @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 <http://www.gnu.org/licenses/>. + * + */ + +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 5edf5de0ca4..3c08b74bdc9 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 ef70caf5690..4bc986e708e 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 f3aa079e35f..b9b5570bc7e 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 7ae6b5fa012..2b234f4cd9b 100644 --- a/settings/templates/admin/frame.php +++ b/settings/templates/admin/frame.php @@ -29,18 +29,29 @@ script('files', 'jquery.fileupload'); ?> <div id="app-navigation"> - <ul class="with-icon"> - <?php foreach($_['forms'] as $form) { + <ul> + <?php + foreach($_['forms'] as $form) { if (isset($form['anchor'])) { $anchor = \OC::$server->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("<li%s><a href='%s' class='%s'>%s</a></li>", $active, \OCP\Util::sanitizeHTML($anchor), - \OCP\Util::sanitizeHTML($class), - \OCP\Util::sanitizeHTML($sectionName))); + ?> + <li <?php print_unescaped($form['active'] ? ' class="active"' : ''); ?>> + <a href="<?php p($anchor); ?>"> + <?php if (!empty($form['icon'])) { ?> + <img alt="" src="<?php print_unescaped($form['icon']); ?>"> + <span><?php p($form['section-name']); ?></span> + <?php } else { ?> + <span class="no-icon"><?php p($form['section-name']); ?></span> + <?php } ?> + </a> + </li> + <?php } - }?> + } + ?> </ul> </div> |