summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--model.lisp3
-rw-r--r--pages.lisp24
2 files changed, 26 insertions, 1 deletions
diff --git a/model.lisp b/model.lisp
index f148455..e070f50 100644
--- a/model.lisp
+++ b/model.lisp
@@ -77,6 +77,9 @@
:documentation "Salt for this hero's password hash."))
(:metaclass db:persistent-class))
+(defun all-heroes ()
+ (db:store-objects-with-class 'hero))
+
;; TODO expiration?
(defclass session (db:store-object)
((hero :reader session-hero
diff --git a/pages.lisp b/pages.lisp
index 7f705cd..9900980 100644
--- a/pages.lisp
+++ b/pages.lisp
@@ -31,4 +31,26 @@
(defun tavern (hero)
(with-page (:title "A Bustling Tavern")
- (:h1 "Aye! Welcome " (hero-name hero))))
+ (navbar)
+ (:h1 "Aye! Welcome " (hero-name hero))
+ (:div
+ :class "heroes-container"
+ (:h2 "Heroes of rampant renown:")
+ (hall-of-heroes))))
+
+(defun navbar ()
+ (with-html
+ (:div
+ :class "navbar"
+ (:div :class "logo" "DND")
+ (:ul :class "nav-links"
+ (:li (:a :href "/hero" "Hero"))
+ (:li (:a :href "/inventory" "Loot"))
+ (:li (:a :href "/quests" "Quests"))
+ (:li (:a :href "/tavern" "Tavern"))))))
+
+(defun hall-of-heroes ()
+ (with-html
+ (:ul :class "hall-of-heroes")
+ (loop for hero in (all-heroes)
+ collect (:li (hero-name hero) "the" (hero-class hero) (hero-title hero)))))