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)))