From f6a3d64dd26f14a535a17724b773f151c4430366 Mon Sep 17 00:00:00 2001
From: Dita Aji Pratama <aji@debian-BULLSEYE-live-builder-AMD64>
Date: Tue, 24 Oct 2023 20:37:32 +0700
Subject: [PATCH] Manage menu on template

---
 config/globalvar.py         | 18 ++++++++++++++++++
 modules/user/home.py        |  6 ++++++
 static/template/topnav.html | 26 +++++++++++++++-----------
 3 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/config/globalvar.py b/config/globalvar.py
index 3fbd038..6b1563b 100755
--- a/config/globalvar.py
+++ b/config/globalvar.py
@@ -1,3 +1,21 @@
 # Your global variables
 GV_base_url = "http://localhost:81"
 GV_title    = "CostaPy"
+
+GV_menu_navbar = [
+    {
+        "name":"Home",
+        "href":"/",
+        "roles":["guest"]
+    },
+    {
+        "name":"About",
+        "href":"#",
+        "roles":["guest"]
+    },
+    {
+        "name":"CostaPy Website",
+        "href":"https://costapy.ditaajipratama.com",
+        "roles":["guest"]
+    }
+]
diff --git a/modules/user/home.py b/modules/user/home.py
index ac4d1a3..d7d3c4f 100644
--- a/modules/user/home.py
+++ b/modules/user/home.py
@@ -20,11 +20,17 @@ class main:
 
 		name				= "World"
 
+		user_roles			= ["guest"]
+		active_page			= "Home"
+
 		return Template(interface_template).render(
 			GV_title	= globalvar.GV_title,
 			GV_base_url	= globalvar.GV_base_url,
 			topnav		= Template(topnav).render(
 				GV_title	= globalvar.GV_title,
+            	menu		= globalvar.GV_menu_navbar,
+                user_roles	= user_roles,
+                active_page	= active_page
 			),
 			footer		= Template(footer).render(
 				copyright_holder	= "Dita Aji Pratama",
diff --git a/static/template/topnav.html b/static/template/topnav.html
index f05ff90..5313350 100755
--- a/static/template/topnav.html
+++ b/static/template/topnav.html
@@ -1,13 +1,17 @@
 <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
-    <a class="navbar-brand" href="/">${GV_title}</a>
-    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
-        <span class="navbar-toggler-icon"></span>
-    </button>
-    <div class="collapse navbar-collapse" id="navbarSupportedContent">
-        <ul class="navbar-nav ml-auto">
-            <li class="nav-item active">
-                <a class="nav-link" href="/">Home</a>
-            </li>
-        </ul>
-    </div>
+  <a class="navbar-brand" href="/">${GV_title}</a>
+  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+    <span class="navbar-toggler-icon"></span>
+  </button>
+  <div class="collapse navbar-collapse" id="navbarSupportedContent">
+    <ul class="navbar-nav ml-auto">
+      % for item in menu:
+        % if any(role in item['roles'] for role in user_roles):
+          <li class="nav-item ${'active' if item['name'] == active_page else ''}">
+          	<a class="nav-link" href="${item['href']}">${item['name']}</a>
+          </li>
+        % endif
+      % endfor
+    </ul>
+  </div>
 </nav>