diff --git a/docs/changelog.rst b/docs/changelog.rst index c511833..4dbbc2a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,8 @@ Changelog ========= +* :support:`-` mark active menu item as active via context_processor and + corresponding template markup * :feature:`-` add links to webmail, phpmyadmin and phppgadmin * :release:`0.10.0 <2015-02-01>` diff --git a/gnuviechadmin/gnuviechadmin/context_processors.py b/gnuviechadmin/gnuviechadmin/context_processors.py index a32d65e..f54bf3e 100644 --- a/gnuviechadmin/gnuviechadmin/context_processors.py +++ b/gnuviechadmin/gnuviechadmin/context_processors.py @@ -4,8 +4,13 @@ This module provides context processor implementations for gnuviechadmin. """ from __future__ import absolute_import, unicode_literals +import logging + from django.conf import settings +_LOGGER = logging.getLogger(__name__) + + def navigation(request): """ @@ -24,4 +29,25 @@ def navigation(request): 'phppgadmin_url': settings.GVA_LINK_PHPPGADMIN, 'active_item': 'dashboard', } + if request.resolver_match: + viewfunc = request.resolver_match.func + viewmodule = viewfunc.__module__ + if viewmodule == 'contact.views': + context['active_item'] = 'contact' + elif viewmodule == 'about.views': + context['active_item'] = 'about' + elif viewmodule in ( + 'hostingpackages.views', 'osusers.views', 'userdbs.views', + 'managemails.views', 'websites.views', 'domains.views', + ): + context['active_item'] = 'hostingpackage' + elif viewmodule in ( + 'allauth.account.views', 'allauth.socialaccount.views' + ): + context['active_item'] = 'account' + else: + _LOGGER.debug( + 'no special handling for view %s in module %s, fallback to ' + 'default active menu item %s', + viewfunc.__name__, viewmodule, context['active_item']) return context diff --git a/gnuviechadmin/templates/base.html b/gnuviechadmin/templates/base.html index d33ab76..a3f8bc1 100644 --- a/gnuviechadmin/templates/base.html +++ b/gnuviechadmin/templates/base.html @@ -57,12 +57,12 @@
  • {% trans "phpPgAdmin" %}
  • -
  • About
  • -
  • Contact
  • + About + Contact