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 .