From e5dd893774aab14af54fc52800604e8f674d5a43 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 18 Sep 2020 11:09:01 +0200 Subject: [PATCH] add option to show the avatar instead of the logo --- lib/Controller/JsController.php | 15 +++++++++++++++ lib/Settings/Admin.php | 1 + src/SideMenu.vue | 9 +++++++-- templates/js/script.php | 4 ++++ templates/settings/admin-form.php | 12 ++++++++++++ 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 1bfba35..ecd27d5 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -55,6 +55,8 @@ class JsController extends Controller $user = OC::$server[IUserSession::class]->getUser(); $topMenuApps = (array) json_decode($this->config->getAppValue('side_menu', 'top-menu-apps', '[]'), true); $targetBlankApps = (array) json_decode($this->config->getAppValue('side_menu', 'target-blank-apps', '[]'), true); + $useAvatar = (bool) $this->config->getAppValue('side_menu', 'use-avatar', '0'); + $avatar = null; if ($user) { $userTopMenuApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true); @@ -69,6 +71,18 @@ class JsController extends Controller if ($userTargetBlankMode === 2) { $targetBlankApps = $userTargetBlankApps; } + + $isAvatarSet = OC::$server->getAvatarManager()->getAvatar($user->getUid())->exists(); + + if ($useAvatar && $isAvatarSet) { + $avatar = OC::$server->getURLGenerator()->linkToRoute( + 'core.avatar.getAvatar', [ + 'userId' => $user->getUid(), + 'size' => 128, + 'v' => $this->config->getUserValue($user, 'avatar', 'version', 0), + ] + ); + } } @@ -81,6 +95,7 @@ class JsController extends Controller 'loader-enabled' => (bool) $this->config->getAppValue('side_menu', 'loader-enabled', '1'), 'always-displayed' => (bool) $this->config->getAppValue('side_menu', 'always-displayed', '0'), 'big-menu' => (bool) $this->config->getAppValue('side_menu', 'big-menu', '0'), + 'avatar' => $avatar, 'top-menu-apps' => $topMenuApps, 'target-blank-apps' => $targetBlankApps, ]; diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 9a901e4..409b389 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -77,6 +77,7 @@ class Admin implements ISettings 'always-displayed' => $this->config->getAppValue('side_menu', 'always-displayed', '0'), 'big-menu' => $this->config->getAppValue('side_menu', 'big-menu', '0'), 'display-logo' => $this->config->getAppValue('side_menu', 'display-logo', '1'), + 'use-avatar' => $this->config->getAppValue('side_menu', 'use-avatar', '0'), 'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'), 'opener-hover' => $this->config->getAppValue('side_menu', 'opener-hover', '0'), 'opener-only' => $this->config->getAppValue('side_menu', 'opener-only', '0'), diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 5917e78..746e131 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -19,7 +19,7 @@ along with this program. If not, see .
- @@ -46,6 +46,7 @@ export default { logo: null, forceLightIcon: false, targetBlank: false, + isAvatar: false, } }, methods: { @@ -104,8 +105,12 @@ export default { }, retrieveLogo() { const ncLogo = document.querySelector('#nextcloud .logo') + const avatar = document.querySelector('#side-menu-container').getAttribute('data-avatar'); - if (ncLogo) { + if (avatar) { + this.logo = avatar + this.isAvatar = true + } else if (ncLogo) { const url = window.getComputedStyle(ncLogo, null) .getPropertyValue('background-image') .replace('url("', '') diff --git a/templates/js/script.php b/templates/js/script.php index 247bdbb..cc45887 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -13,6 +13,10 @@ sideMenuContainer.attr('data-forcelighticon', '1') + + + sideMenuContainer.attr('data-avatar', '') + sideMenuContainer.attr('data-targetblankapps', '') diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index da5284a..f7077ec 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -342,6 +342,18 @@ $choicesSizes = [
+

t('Use the avatar instead of the logo')); ?>

+ +
+ +
+