diff --git a/projectroles/templates/projectroles/_site_titlebar_dropdown.html b/projectroles/templates/projectroles/_site_titlebar_dropdown.html
index 3251a871..da5721b1 100644
--- a/projectroles/templates/projectroles/_site_titlebar_dropdown.html
+++ b/projectroles/templates/projectroles/_site_titlebar_dropdown.html
@@ -7,47 +7,56 @@
{# Responsive replacement for user dropdown #}
{# Admin link #}
-{% if request.user.is_superuser %}
-
-
- Admin
-
-
-{% endif %}
-
+{#{% if request.user.is_superuser %}#}
+{# #}
+{# #}
+{# Admin#}
+{# #}
+{# #}
+{#{% endif %}#}
+{##}
{# Site-wide apps #}
-{% for plugin in site_apps %}
- {% has_perm plugin.app_permission request.user as can_view_app %}
- {% if not plugin.app_permission or can_view_app %}
-
-
- {{ plugin.title }}
-
- {% endif %}
-{% endfor %}
-
+{#{% for plugin in site_apps %}#}
+{# {% has_perm plugin.app_permission request.user as can_view_app %}#}
+{# {% if not plugin.app_permission or can_view_app %}#}
+{# #}
+{# #}
+{# {{ plugin.title }}#}
+{# #}
+{# {% endif %}#}
+{#{% endfor %}#}
+{##}
{# Log out link #}
-{% if request.user.is_authenticated %}
-
-
- Logout
-
-
-{% elif not kiosk_mode %}
-
-
- Login
+{#{% if request.user.is_authenticated %}#}
+{# #}
+{# #}
+{# Logout#}
+{# #}
+{# #}
+{#{% elif not kiosk_mode %}#}
+{# #}
+{# #}
+{# Login#}
+{# #}
+{# #}
+{#{% endif %}#}
+{% get_user_links request as dropdown_links %}
+{% for link in dropdown_links %}
+
+
+ {{ link.label }}
-
-{% endif %}
-
+{% endfor %}
{# Actual user dropdown #}
@@ -76,44 +85,55 @@
{# Site-wide apps #}
- {% for plugin in site_apps %}
- {% has_perm plugin.app_permission request.user as can_view_app %}
- {% if not plugin.app_permission or can_view_app %}
-
- {{ plugin.title }}
-
- {% endif %}
- {% endfor %}
- {% if site_apps|length > 0 %}
-
- {% endif %}
-
+{# {% for plugin in site_apps %}#}
+{# {% has_perm plugin.app_permission request.user as can_view_app %}#}
+{# {% if not plugin.app_permission or can_view_app %}#}
+{# #}
+{# {{ plugin.title }}#}
+{# #}
+{# {% endif %}#}
+{# {% endfor %}#}
+{# {% if site_apps|length > 0 %}#}
+{# #}
+{# {% endif %}#}
+{##}
{# Admin link #}
- {% if request.user.is_superuser %}
-
- Django Admin
-
-
- {% endif %}
-
+{# {% if request.user.is_superuser %}#}
+{# #}
+{# Django Admin#}
+{# #}
+{# #}
+{# {% endif %}#}
+{##}
{# Log out / log in links #}
- {% if request.user.is_authenticated %}
-
- Logout
-
- {% else %}
-
- Login
+{# {% if request.user.is_authenticated %}#}
+{# #}
+{# Logout#}
+{# #}
+{# {% else %}#}
+{# #}
+{# Login#}
+{# #}
+{# {% endif %}#}
+
+ {% get_user_links request as dropdown_links %}
+ {% for link in dropdown_links %}
+
+ {{ link.label }}
- {% endif %}
+ {% endfor %}
diff --git a/projectroles/templatetags/projectroles_tags.py b/projectroles/templatetags/projectroles_tags.py
index c4862992..126f1d23 100644
--- a/projectroles/templatetags/projectroles_tags.py
+++ b/projectroles/templatetags/projectroles_tags.py
@@ -8,7 +8,7 @@
from projectroles.app_settings import AppSettingAPI
from projectroles.models import RemoteProject, SODAR_CONSTANTS
from projectroles.plugins import get_active_plugins
-from projectroles.utils import AppLinkContent
+from projectroles.utils import UserDropdownContent, AppLinkContent
register = template.Library()
@@ -270,6 +270,13 @@ def get_admin_warning():
return ret
+@register.simple_tag
+def get_user_links(request):
+ """Return user dropdown links"""
+ user_dropdown_content = UserDropdownContent()
+ return user_dropdown_content.get_user_links(request)
+
+
@register.simple_tag
def get_project_app_links(request, project=None):
"""Return sidebar links"""
diff --git a/projectroles/utils.py b/projectroles/utils.py
index 5862b09c..837b74ac 100644
--- a/projectroles/utils.py
+++ b/projectroles/utils.py
@@ -5,8 +5,9 @@
from django.urls import reverse
from django.utils import timezone
-from projectroles.models import SODAR_CONSTANTS
+from projectroles.constants import get_sodar_constants
from projectroles.plugins import get_active_plugins
+from projectroles.models import SODAR_CONSTANTS
# Settings
SECRET_LENGTH = getattr(settings, 'PROJECTROLES_SECRET_LENGTH', 32)
@@ -299,3 +300,60 @@ def get_project_app_links(self, request, project=None):
}
)
return ret
+
+
+class UserDropdownContent:
+ """Class to generate user dropdown content"""
+
+ def get_user_links(self, request):
+ links = []
+ # Add site-wide apps links
+ site_apps = get_active_plugins('site_app')
+ for app in site_apps:
+ if not app.app_permission or request.user.has_perm(
+ app.app_permission
+ ):
+ links.append(
+ {
+ 'name': app.name,
+ 'url': reverse(app.entry_point_url_id),
+ 'label': app.title,
+ 'icon': app.icon,
+ 'active': request.path
+ == reverse(app.entry_point_url_id),
+ }
+ )
+ # Add admin link
+ if request.user.is_superuser:
+ links.append(
+ {
+ 'name': 'admin',
+ 'url': reverse('admin:index'),
+ 'label': 'Django Admin',
+ 'icon': 'mdi:cogs',
+ 'active': request.path == reverse('admin:index'),
+ }
+ )
+ # Add log out link
+ if request.user.is_authenticated:
+ links.append(
+ {
+ 'name': 'sign-out',
+ 'url': reverse('logout'),
+ 'label': 'Logout',
+ 'icon': 'mdi:logout-variant',
+ 'active': False,
+ }
+ )
+ elif not getattr(settings, 'PROJECTROLES_KIOSK_MODE', False):
+ links.append(
+ {
+ 'name': 'sign-in',
+ 'url': reverse('login'),
+ 'label': 'Login',
+ 'icon': 'mdi:login-variant',
+ 'active': False,
+ }
+ )
+ print(links)
+ return links