about summary refs log tree commit diff
path: root/users/grfn/bbbg/src/bbbg/handlers/core.clj
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/bbbg/src/bbbg/handlers/core.clj')
-rw-r--r--users/grfn/bbbg/src/bbbg/handlers/core.clj26
1 files changed, 21 insertions, 5 deletions
diff --git a/users/grfn/bbbg/src/bbbg/handlers/core.clj b/users/grfn/bbbg/src/bbbg/handlers/core.clj
index d272064ec593..e30381de5bcf 100644
--- a/users/grfn/bbbg/src/bbbg/handlers/core.clj
+++ b/users/grfn/bbbg/src/bbbg/handlers/core.clj
@@ -3,7 +3,8 @@
    [bbbg.user :as user]
    [bbbg.views.flash :as flash]
    [hiccup.core :refer [html]]
-   [ring.util.response :refer [content-type response]]))
+   [ring.util.response :refer [content-type response]]
+   [clojure.string :as str]))
 
 (def ^:dynamic *authenticated?* false)
 
@@ -20,14 +21,29 @@
     (binding [*authenticated?* (authenticated? req)]
       (handler req))))
 
+(def ^:dynamic *current-uri*)
+
+(defn wrap-current-uri [handler]
+  (fn [req]
+    (binding [*current-uri* (:uri req)]
+      (handler req))))
+
+(defn nav-item [href label]
+  (let [active?
+        (when *current-uri*
+          (str/starts-with?
+           *current-uri*
+           href))]
+    [:li {:class (when active? "active")}
+     [:a {:href href}
+      label]]))
+
 (defn global-nav []
   [:nav.global-nav
    [:ul
-    [:li [:a {:href "/events"}
-          "Events"]]
+    (nav-item "/events" "Events")
     (when *authenticated?*
-      [:li [:a {:href "/attendees"}
-            "Attendees"]])
+      (nav-item "/attendees" "Attendees"))
     [:li.spacer]
     [:li
      (if *authenticated?*