src/views/blog-main.lisp

DOWNLOAD
(defpackage murja.views.blog-main
  (:use :cl :murja.views.components.root :murja.views.components.tab)
  (:import-from :murja.models.user :user-nickname)
  (:import-from :cl-hash-util :hash)
  (:import-from :murja.routes.root-routes :@check-if-initial)
  (:import-from :murja.middleware.auth :@ssr-authenticated :*user*)
  (:import-from :murja.routes.settings-routes :get-settings)
  (:import-from :murja.middleware.db :@transaction)
  (:import-from :murja.newui :@newui :c :with-state)
  (:import-from :easy-routes :defroute)

  (:export :blog-root-view))

(in-package :murja.views.blog-main)
  
(defroute blog-root-view ("/blog/" :method :get
				   :decorators (@transaction
						@newui
						(@ssr-authenticated :require-authentication nil)
						@check-if-initial)) ()
  
  (let* ((settings (get-settings))
	 (page-size (gethash "recent-post-count" settings))
	 (page 1)
	 (page-posts (murja.models.post:get-page page page-size))

	 (tabs-spec (hash
		     ("Home" (murja.views.components.page:page page-posts)))))

    (when *user*
      (setf (gethash "Secret logged in user tab" tabs-spec)
	    (c :div () (format nil "Welcome ~a" (user-nickname *user*)))))
      
    (root-component
     (tabs "Home"
	   tabs-spec))))