diff of 80cc1f52c021e01a85515335d9a897096462590a
80cc1f52c021e01a85515335d9a897096462590a
diff --git a/aggressive-murja.asd b/aggressive-murja.asd
index 398db09..b27294b 100644
--- a/aggressive-murja.asd
+++ b/aggressive-murja.asd
@@ -75,14 +75,14 @@
(:file "user-editor")
(:file "root-routes")))
-
(:module "view"
:components
((:module "components"
:components ((:file "root")
(:file "tabs")
(:file "blogpost")))
- (:file "blog-root")))
+ (:file "blog-root")
+ (:file "single-post")))
(:file "main"))))
:in-order-to ((test-op (test-op "aggressive-murja/tests"))))
diff --git a/src/view/components/blogpost.lisp b/src/view/components/blogpost.lisp
index c4edfca..b10b5ad 100644
--- a/src/view/components/blogpost.lisp
+++ b/src/view/components/blogpost.lisp
@@ -1,6 +1,6 @@
(defpackage murja.view.components.blogpost
(:use :cl :binding-arrows :spinneret :murja.model.post :murja.model.user :cl-hash-util)
- (:export :page))
+ (:export :page :blogpost))
(in-package :murja.view.components.blogpost)
diff --git a/src/view/components/tabs.lisp b/src/view/components/tabs.lisp
index 6c217be..c2e775b 100644
--- a/src/view/components/tabs.lisp
+++ b/src/view/components/tabs.lisp
@@ -32,7 +32,7 @@
(defmacro deftab (sym (&key
url
- title
+ (title "")
subtab
require-login
needed-abilities
@@ -65,7 +65,8 @@
(assert (is-tab? selected-tab))
(assert (every #'is-tab? tablist))
- (sort tablist (lisp-fixup:compose #'string-lessp #'title))
+ (sort tablist (lambda (a b)
+ (string-lessp (title a) (title b))))
(with-html
(:div.tabs :id "topbar"
diff --git a/src/view/single-post.lisp b/src/view/single-post.lisp
new file mode 100644
index 0000000..4fd454b
--- /dev/null
+++ b/src/view/single-post.lisp
@@ -0,0 +1,15 @@
+(defpackage murja.view.single-post
+ (:use :cl :binding-arrows
+ :easy-routes
+ :murja.settings :cl-hash-util
+ :murja.view.components.blogpost)
+ (:import-from :murja.view.components.tabs :deftab)
+ (:import-from :murja.model.post :get-post))
+
+(in-package :murja.view.single-post)
+
+(deftab blog/post/id (:url "blog/post/:id"
+ :subtab t
+ :captured-url-params (id))
+ (let ((post (get-post id :allow-hidden? nil)))
+ (blogpost post)))