From 17eb42fd44b193d610adf959e6ffa5cc18d0f518 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 5 Dec 2021 16:04:02 +0000 Subject: [PATCH] UI: Implement top menu bar Signed-off-by: Michael Tremer --- Makefile.am | 4 ++- src/templates/base.html | 14 +---------- src/templates/modules/menu/dropdown.html | 15 +++++++++++ src/templates/modules/menu/link.html | 3 +++ src/templates/modules/menu/sidebar-link.html | 3 --- src/templates/modules/menu/sidebar.html | 2 +- src/templates/modules/menu/topbar.html | 15 +++++++++++ src/westferry/handlers/base.py | 26 ++++++++++++++++++++ src/westferry/ui/menu.py | 17 ++++++++++--- 9 files changed, 78 insertions(+), 21 deletions(-) create mode 100644 src/templates/modules/menu/dropdown.html create mode 100644 src/templates/modules/menu/link.html delete mode 100644 src/templates/modules/menu/sidebar-link.html create mode 100644 src/templates/modules/menu/topbar.html diff --git a/Makefile.am b/Makefile.am index 6db0a9a..2881683 100644 --- a/Makefile.am +++ b/Makefile.am @@ -171,8 +171,10 @@ dist_templates_modules_graphs_DATA = \ templates_modules_menudir = $(templates_modulesdir)/menu dist_templates_modules_menu_DATA = \ + src/templates/modules/menu/dropdown.html \ + src/templates/modules/menu/link.html \ src/templates/modules/menu/sidebar.html \ - src/templates/modules/menu/sidebar-link.html + src/templates/modules/menu/topbar.html ui_modulesdir = $(datadir)/westferry/templates/modules diff --git a/src/templates/base.html b/src/templates/base.html index b091e18..a8618fe 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -23,19 +23,7 @@
- + {% module TopbarMenu(handler.topmenu) %}
diff --git a/src/templates/modules/menu/dropdown.html b/src/templates/modules/menu/dropdown.html new file mode 100644 index 0000000..21dcf53 --- /dev/null +++ b/src/templates/modules/menu/dropdown.html @@ -0,0 +1,15 @@ +{% import westferry.ui.menu %} + +{{ menu.title or _("- No Title -") }} + + diff --git a/src/templates/modules/menu/link.html b/src/templates/modules/menu/link.html new file mode 100644 index 0000000..e2f5031 --- /dev/null +++ b/src/templates/modules/menu/link.html @@ -0,0 +1,3 @@ + + {{ element.title }} + diff --git a/src/templates/modules/menu/sidebar-link.html b/src/templates/modules/menu/sidebar-link.html deleted file mode 100644 index 4a2facf..0000000 --- a/src/templates/modules/menu/sidebar-link.html +++ /dev/null @@ -1,3 +0,0 @@ - - {{ item.title }} - diff --git a/src/templates/modules/menu/sidebar.html b/src/templates/modules/menu/sidebar.html index 48a1599..97dedf5 100644 --- a/src/templates/modules/menu/sidebar.html +++ b/src/templates/modules/menu/sidebar.html @@ -2,7 +2,7 @@ {% for i in menu %}
  • {% if i.type == "link" %} - {% module SidebarMenuLink(i) %} + {% module MenuLink(i) %} {% elif i.type == "menu" %} {% module SidebarMenu(i, nested=True) %} {% end %} diff --git a/src/templates/modules/menu/topbar.html b/src/templates/modules/menu/topbar.html new file mode 100644 index 0000000..0be7e16 --- /dev/null +++ b/src/templates/modules/menu/topbar.html @@ -0,0 +1,15 @@ +{% import westferry.ui.menu %} + + diff --git a/src/westferry/handlers/base.py b/src/westferry/handlers/base.py index 774d9f2..fdb624a 100644 --- a/src/westferry/handlers/base.py +++ b/src/westferry/handlers/base.py @@ -61,6 +61,32 @@ class BaseHandler(tornado.web.RequestHandler, metaclass=HandlerRegistration): """ return self.application.backend + @property + def topmenu(self): + """ + Creates the default menu in to the top navigation + """ + _ = self.locale.translate + + # XXX This is ugly, but since this file declares the base handler, + # recursive imports fail + from . import analytics + from . import demo + + menu = ui.menu.Menu(self) + + # Analytics + menu.add_handler(analytics.AnalyticsOverviewHandler, title=_("Analytics")) + + # Demo (only in debug mode) + if self.backend.debug: + submenu = menu.add_menu(_("Demo")) + + submenu.add_handler(demo.DemoOverviewHandler) + submenu.add_handler(demo.DemoFormsHandler) + + return menu + @functools.cached_property def tabs(self): return ui.tabs.Tabs(self) diff --git a/src/westferry/ui/menu.py b/src/westferry/ui/menu.py index a0ca571..846afdf 100644 --- a/src/westferry/ui/menu.py +++ b/src/westferry/ui/menu.py @@ -129,6 +129,11 @@ class Menu(object): return menu +class TopbarMenuModule(base.BaseUIModule): + def render(self, menu): + return self.render_string("modules/menu/topbar.html", menu=menu) + + class SidebarMenuModule(base.BaseUIModule): def render(self, menu, nested=False): return self.render_string( @@ -138,6 +143,12 @@ class SidebarMenuModule(base.BaseUIModule): ) -class SidebarMenuLinkModule(base.BaseUIModule): - def render(self, item): - return self.render_string("modules/menu/sidebar-link.html", item=item) +class MenuLinkModule(base.BaseUIModule): + def render(self, element): + return self.render_string("modules/menu/link.html", element=element) + + +class MenuDropdownModule(base.BaseUIModule): + def render(self, menu, nested=False): + return self.render_string("modules/menu/dropdown.html", + menu=menu, nested=nested) -- 2.47.3