Allow apps to specify an icon with the sections via the API
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
381e58d7d4
commit
8c8354399a
5 changed files with 74 additions and 6 deletions
38
lib/public/Settings/IIconSection.php
Normal file
38
lib/public/Settings/IIconSection.php
Normal file
|
@ -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();
|
||||
}
|
|
@ -24,6 +24,7 @@
|
|||
namespace OCP\Settings;
|
||||
|
||||
/**
|
||||
* @deprecated 12 Use IIconSection instead
|
||||
* @since 9.1
|
||||
*/
|
||||
interface ISection {
|
||||
|
|
|
@ -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,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue