From ae74e745db1a67b70572c2a2073c949cedc7859c Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Thu, 15 Oct 2020 15:46:59 +0200 Subject: [PATCH] add menu element: link to settings --- css/sideMenu.css | 28 +++++++++++++++++++ lib/Controller/JsController.php | 46 +++++++++++++++++++++++++------- lib/Controller/NavController.php | 4 +-- src/SideMenu.vue | 12 +++++++++ src/SideMenuBig.vue | 13 +++++++++ 5 files changed, 92 insertions(+), 11 deletions(-) diff --git a/css/sideMenu.css b/css/sideMenu.css index 6eaf9d3..466c678 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -37,6 +37,34 @@ margin-left: 5px; } +.side-menu-settings { + margin-right: 9px; + margin-top: 2px; + float: right; + line-height: 34px; + height: 28px; + display: none; +} + +.side-menu-settings a { + color: var(--side-menu-text-color, #fff); + display: block; + padding: 4px 7px; +} + +.side-menu-settings:hover a, .side-menu-settings a:active, .side-menu-settings a:focus { + background: var(--side-menu-current-app-background-color, #444); +} + +.side-menu-settings img { + vertical-align: bottom; + margin-left: 3px; +} + +#side-menu.open .side-menu-settings { + display: block; +} + .side-menu-opener { background: var(--side-menu-opener, url('../img/side-menu-opener.svg')); height: 40px; diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 9499d45..f868a05 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -28,6 +28,7 @@ use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\TemplateResponse; use OCP\IRequest; use OCP\IUserSession; +use OCP\L10N\IFactory; class JsController extends Controller { @@ -46,14 +47,25 @@ class JsController extends Controller */ protected $themingDefaults; - public function __construct(string $appName, IRequest $request, ConfigProxy $config, ThemingDefaults $themingDefaults) - { + /** + * @var IFactory + */ + protected $l10nFactory; + + public function __construct( + string $appName, + IRequest $request, + ConfigProxy $config, + ThemingDefaults $themingDefaults, + IFactory $l10nFactory + ) { parent::__construct($appName, $request); $this->themingDefaults = $themingDefaults; $this->user = OC::$server[IUserSession::class]->getUser(); $this->config = $config; + $this->l10nFactory = $l10nFactory; } /** @@ -86,6 +98,7 @@ class JsController extends Controller $useAvatar = $this->config->getAppValueBool('use-avatar', '0'); $isForced = $this->config->getAppValueBool('force', '0'); $avatar = null; + $settings = null; if ($this->user) { $userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]'); @@ -104,13 +117,27 @@ class JsController extends Controller $isAvatarSet = OC::$server->getAvatarManager()->getAvatar($this->user->getUid())->exists(); if ($useAvatar && $isAvatarSet) { - $avatar = OC::$server->getURLGenerator()->linkToRoute( - 'core.avatar.getAvatar', [ - 'userId' => $this->user->getUid(), - 'size' => 128, - 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), - ] - ); + $avatar = OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ + 'userId' => $this->user->getUid(), + 'size' => 128, + 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), + ]); + } + + if ($this->config->getAppValueBool('show-settings', '0')) { + $settingsNav = OC::$server->getNavigationManager()->getAll('settings'); + + if (isset($settingsNav['settings'])) { + $settings = [ + 'href' => $settingsNav['settings']['href'], + 'name' => $settingsNav['settings']['name'], + 'avatar' => OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ + 'userId' => $this->user->getUid(), + 'size' => 32, + 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), + ]), + ]; + } } } @@ -126,6 +153,7 @@ class JsController extends Controller 'avatar' => $avatar, 'top-menu-apps' => $topMenuApps, 'target-blank-apps' => $targetBlankApps, + 'settings' => $settings, 'logo' => $this->themingDefaults->getLogo(), ]; } diff --git a/lib/Controller/NavController.php b/lib/Controller/NavController.php index 127eb85..d58d433 100644 --- a/lib/Controller/NavController.php +++ b/lib/Controller/NavController.php @@ -73,8 +73,8 @@ class NavController extends Controller CategoryFetcher $categoryFetcher, URLGenerator $router, IL10N $trans, - IFactory $l10nFactory) - { + IFactory $l10nFactory + ) { parent::__construct($appName, $request); $this->config = $config; diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 6271483..b8af51f 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -17,6 +17,16 @@ along with this program. If not, see .