From b1aa6c5c3bfbf55ba80866da8807555cd5a06509 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Sat, 5 Feb 2022 16:15:16 +0100 Subject: [PATCH] Remove account menu items from main sidenav --- aleksis/core/menus.py | 154 +++++++++++++------------- aleksis/core/templates/core/base.html | 45 +++++++- 2 files changed, 117 insertions(+), 82 deletions(-) diff --git a/aleksis/core/menus.py b/aleksis/core/menus.py index 7938539c5..da2d10253 100644 --- a/aleksis/core/menus.py +++ b/aleksis/core/menus.py @@ -49,86 +49,6 @@ MENUS = { ), ], }, - { - "name": _("Account"), - "url": "#", - "icon": "person", - "root": True, - "validators": ["menu_generator.validators.is_authenticated"], - "submenu": [ - { - "name": _("Stop impersonation"), - "url": "impersonate-stop", - "icon": "stop", - "validators": [ - "menu_generator.validators.is_authenticated", - "aleksis.core.util.core_helpers.is_impersonate", - ], - }, - { - "name": _("Logout"), - "url": "logout", - "icon": "exit_to_app", - "validators": ["menu_generator.validators.is_authenticated"], - }, - { - "name": _("2FA"), - "url": "two_factor:profile", - "icon": "phonelink_lock", - "validators": [ - "menu_generator.validators.is_authenticated", - ], - }, - { - "name": _("Change password"), - "url": "account_change_password", - "icon": "lock", - "validators": [ - "menu_generator.validators.is_authenticated", - ( - "aleksis.core.util.predicates.permission_validator", - "core.can_change_password", - ), - ], - }, - { - "name": _("Me"), - "url": "person", - "icon": "insert_emoticon", - "validators": [ - "menu_generator.validators.is_authenticated", - "aleksis.core.util.core_helpers.has_person", - ], - }, - { - "name": _("Preferences"), - "url": "preferences_person", - "icon": "settings", - "validators": [ - "menu_generator.validators.is_authenticated", - "aleksis.core.util.core_helpers.has_person", - ], - }, - { - "name": _("Third-party accounts"), - "url": "socialaccount_connections", - "icon": "public", - "validators": [ - "menu_generator.validators.is_authenticated", - "aleksis.core.util.core_helpers.has_person", - ], - }, - { - "name": _("Authorized applications"), - "url": "oauth2_provider:authorized-token-list", - "icon": "touch_app", - "validators": [ - "menu_generator.validators.is_authenticated", - "aleksis.core.util.core_helpers.has_person", - ], - }, - ], - }, { "name": _("Admin"), "url": "#", @@ -329,4 +249,78 @@ MENUS = { ], }, ], + "NAVBAR_ACCOUNT_MENU": [ + { + "name": _("Stop impersonation"), + "url": "impersonate-stop", + "icon": "stop", + "validators": [ + "menu_generator.validators.is_authenticated", + "aleksis.core.util.core_helpers.is_impersonate", + ], + }, + { + "name": _("Account"), + "url": "person", + "icon": "person", + "validators": [ + "menu_generator.validators.is_authenticated", + "aleksis.core.util.core_helpers.has_person", + ], + }, + { + "name": _("Preferences"), + "url": "preferences_person", + "icon": "settings", + "validators": [ + "menu_generator.validators.is_authenticated", + "aleksis.core.util.core_helpers.has_person", + ], + }, + { + "name": _("2FA"), + "url": "two_factor:profile", + "icon": "phonelink_lock", + "validators": [ + "menu_generator.validators.is_authenticated", + ], + }, + { + "name": _("Change password"), + "url": "account_change_password", + "icon": "lock", + "validators": [ + "menu_generator.validators.is_authenticated", + ( + "aleksis.core.util.predicates.permission_validator", + "core.can_change_password", + ), + ], + }, + { + "name": _("Third-party accounts"), + "url": "socialaccount_connections", + "icon": "public", + "validators": [ + "menu_generator.validators.is_authenticated", + "aleksis.core.util.core_helpers.has_person", + ], + }, + { + "name": _("Authorized applications"), + "url": "oauth2_provider:authorized-token-list", + "icon": "touch_app", + "validators": [ + "menu_generator.validators.is_authenticated", + "aleksis.core.util.core_helpers.has_person", + ], + }, + { + "divider": True, + "name": _("Logout"), + "url": "logout", + "icon": "exit_to_app", + "validators": ["menu_generator.validators.is_authenticated"], + }, + ], } diff --git a/aleksis/core/templates/core/base.html b/aleksis/core/templates/core/base.html index 7fd4e38f8..bd9047a18 100644 --- a/aleksis/core/templates/core/base.html +++ b/aleksis/core/templates/core/base.html @@ -79,14 +79,55 @@ <li> <a href="{% url 'logout' %}">{% trans "Logout" %} <i class="material-icons right">exit_to_app</i></a> </li> - {% endif %} - </ul> + <li> + <a href="#!" class="navbar-dropdown-trigger" data-target="account-dropdown"> + {% if request.user.person %} + {% if request.user.person.avatar %} + <div class="clip-circle"> + <img class="hundred-percent" src="{{ request.user.person.avatar.url }}" + alt="{{ request.user.person.first_name }} {{ request.user.person.last_name }}"/> + </div> + + {% else %} + + <div class="clip-circle no-image"> + {{ request.user.person.initials }} + </div> + {% endif %} + {% else %} + <div class="clip-circle no-image"> + {{ request.user.username|slice:":2" }} + </div> + {% endif %} + </a> + </li> + </ul> + {% else %} + <span class="nav-spacer"></span> + {% endif %} </div> <div class="nav-content"> {% block nav_content %}{% endblock %} </div> </nav> +{% get_menu "NAVBAR_ACCOUNT_MENU" as account_menu %} + <ul id="account-dropdown" class="dropdown-content"> + {% for item in account_menu %} + {% if item.divider %} + <li class="divider"></li> + {% endif %} + <li> + <a href="{{ item.url }}"> + {% if item.icon %} + <i class="material-icons">{{ item.icon }}</i> + {% endif %} + {{ item.name }} + </a> + </li> + {% endfor %} + </ul> + <!-- Main nav (sidenav) --> {% if not no_menu %} <ul id="slide-out" class="sidenav sidenav-fixed"> -- GitLab