update template render function
This commit is contained in:
parent
e06bac7f2f
commit
beb60e3321
|
@ -54,7 +54,7 @@
|
|||
(.printStackTrace e)
|
||||
{:status 500
|
||||
:headers {"Content-Type" "text/html"}
|
||||
:body (layout/render "error.html" {:error-info e})}))))
|
||||
:body (layout/render-template request "error.html" {:error-info e})}))))
|
||||
|
||||
(def app (app-handler
|
||||
[auth-routes home-routes posts-routes files-routes rss-routes app-routes]
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
[noir.util.route])
|
||||
(:require [blarg.views.layout :as layout]
|
||||
[blarg.models.users :as users]
|
||||
[ring.util.response :refer [status]]
|
||||
[ring.middleware.head :refer [wrap-head]]
|
||||
[noir.session :as session]
|
||||
[noir.response :as resp]
|
||||
[noir.validation :as vali]))
|
||||
|
@ -14,8 +16,10 @@
|
|||
(defn login-page []
|
||||
(if (logged-in?)
|
||||
(resp/redirect "/")
|
||||
(layout/render "auth/login.html" {:login-error (session/flash-get :login-error)
|
||||
:html-title (->html-title ["Login"])})))
|
||||
(layout/render
|
||||
"auth/login.html"
|
||||
:params {:login-error (session/flash-get :login-error)
|
||||
:html-title (->html-title ["Login"])})))
|
||||
|
||||
(defn handle-login [id pass]
|
||||
(if-let [user (users/get-user id pass)]
|
||||
|
@ -31,9 +35,7 @@
|
|||
(resp/redirect "/"))
|
||||
|
||||
(defn handle-unauthorized []
|
||||
{:status 401
|
||||
:headers {"Content-Type" "text/html"}
|
||||
:body (layout/render "unauthorized.html")})
|
||||
(layout/render "unauthorized.html" :status 401))
|
||||
|
||||
(defroutes auth-routes
|
||||
(GET "/unauthorized" [] (handle-unauthorized))
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
(let [p (ensure-prefix-suffix path "/")]
|
||||
(layout/render
|
||||
"files/list.html"
|
||||
{:html-title (->html-title [(str "Files in " p)])
|
||||
:path p
|
||||
:files (files/list-files p)
|
||||
:tree (files/get-tree)
|
||||
:error (session/flash-get :file-error)
|
||||
:success (session/flash-get :file-success)
|
||||
:notice (session/flash-get :file-notice)})))
|
||||
:params {:html-title (->html-title [(str "Files in " p)])
|
||||
:path p
|
||||
:files (files/list-files p)
|
||||
:tree (files/get-tree)
|
||||
:error (session/flash-get :file-error)
|
||||
:success (session/flash-get :file-success)
|
||||
:notice (session/flash-get :file-notice)})))
|
||||
|
||||
(defn handle-new-file [path file returnpath]
|
||||
(if (valid-upload? file)
|
||||
|
|
|
@ -7,11 +7,13 @@
|
|||
|
||||
(defn about-page []
|
||||
(layout/render
|
||||
"about.html" {:html-title (->html-title ["About"])}))
|
||||
"about.html"
|
||||
:params {:html-title (->html-title ["About"])}))
|
||||
|
||||
(defn projects-page []
|
||||
(layout/render
|
||||
"projects.html" {:html-title (->html-title ["Projects"])}))
|
||||
"projects.html"
|
||||
:params {:html-title (->html-title ["Projects"])}))
|
||||
|
||||
(defroutes home-routes
|
||||
(GET "/about" [] (about-page))
|
||||
|
|
|
@ -43,23 +43,23 @@
|
|||
offset (* currentpage posts/per-page)]
|
||||
(layout/render
|
||||
"posts/list.html"
|
||||
{:posts (posts/list-posts (auth/logged-in?) posts/per-page offset)
|
||||
:prevpage (- currentpage 1)
|
||||
:nextpage (+ currentpage 1)
|
||||
:atlastpage (= currentpage lastpage)
|
||||
:atfirstpage (= currentpage 0)
|
||||
:inlist true})))
|
||||
:params {:posts (posts/list-posts (auth/logged-in?) posts/per-page offset)
|
||||
:prevpage (- currentpage 1)
|
||||
:nextpage (+ currentpage 1)
|
||||
:atlastpage (= currentpage lastpage)
|
||||
:atfirstpage (= currentpage 0)
|
||||
:inlist true})))
|
||||
|
||||
(defn list-by-tag [tag]
|
||||
(layout/render
|
||||
"posts/listbytag.html"
|
||||
{:posts (posts/list-posts-by-tag (auth/logged-in?) tag)
|
||||
:tag tag}))
|
||||
:params {:posts (posts/list-posts-by-tag (auth/logged-in?) tag)
|
||||
:tag tag}))
|
||||
|
||||
(defn list-archive []
|
||||
(layout/render
|
||||
"posts/listarchive.html"
|
||||
{:months (posts/list-posts-archive (auth/logged-in?))}))
|
||||
:params {:months (posts/list-posts-archive (auth/logged-in?))}))
|
||||
|
||||
(defn show-post-page [year month day slug]
|
||||
(let [date (str (string->int year) "-" (string->int month) "-" (string->int day))
|
||||
|
@ -67,17 +67,18 @@
|
|||
(if (not-empty post)
|
||||
(layout/render
|
||||
"posts/showpost.html"
|
||||
{:post post
|
||||
:html-title (->html-title [(:title post)])})
|
||||
:params {:post post
|
||||
:html-title (->html-title [(:title post)])})
|
||||
(resp/redirect "/notfound"))))
|
||||
|
||||
(defn new-post-page [& post]
|
||||
(layout/render
|
||||
"posts/newpost.html"
|
||||
(merge (first post)
|
||||
{:all-tags (posts/list-tags)
|
||||
:html-title (->html-title ["New Post"])
|
||||
:validation-errors @vali/*errors*})))
|
||||
:params (merge
|
||||
(first post)
|
||||
{:all-tags (posts/list-tags)
|
||||
:html-title (->html-title ["New Post"])
|
||||
:validation-errors @vali/*errors*})))
|
||||
|
||||
(defn handle-new-post [title tags body]
|
||||
(if (valid-post? title tags body)
|
||||
|
@ -94,11 +95,12 @@
|
|||
(posts/get-post id))]
|
||||
(layout/render
|
||||
"posts/editpost.html"
|
||||
(merge post
|
||||
{:tags (tags->string (:tags post))
|
||||
:all-tags (posts/list-tags)
|
||||
:html-title (->html-title ["Edit Post"])
|
||||
:validation-errors @vali/*errors*}))))
|
||||
:params (merge
|
||||
post
|
||||
{:tags (tags->string (:tags post))
|
||||
:all-tags (posts/list-tags)
|
||||
:html-title (->html-title ["Edit Post"])
|
||||
:validation-errors @vali/*errors*}))))
|
||||
|
||||
(defn handle-edit-post [id title tags body]
|
||||
(if (valid-post? title tags body)
|
||||
|
|
|
@ -1,23 +1,27 @@
|
|||
(ns blarg.views.layout
|
||||
(:require [selmer.parser :as parser]
|
||||
[ring.util.response :refer [content-type response]]
|
||||
[ring.util.response :as resp]
|
||||
[compojure.response :refer [Renderable]]
|
||||
[noir.session :as session])
|
||||
(:use [blarg.views.viewfilters]))
|
||||
|
||||
(def template-path "blarg/views/templates/")
|
||||
|
||||
(deftype RenderableTemplate [template params]
|
||||
(defn render-template [request template params]
|
||||
(parser/render-file
|
||||
(str template-path template)
|
||||
(assoc params
|
||||
:context (:context request)
|
||||
:user-id (session/get :user))))
|
||||
|
||||
(deftype RenderableTemplate [template params status content-type]
|
||||
Renderable
|
||||
(render [this request]
|
||||
(content-type
|
||||
(response
|
||||
(parser/render-file
|
||||
(str template-path template)
|
||||
(assoc params
|
||||
:context (:context request)
|
||||
:user-id (session/get :user))))
|
||||
"text/html; charset=utf-8")))
|
||||
(-> (render-template request template params)
|
||||
(resp/response)
|
||||
(resp/content-type (or content-type "text/html; charset=utf-8"))
|
||||
(resp/status (or status 200)))))
|
||||
|
||||
(defn render [template & {:keys [params status content-type]}]
|
||||
(RenderableTemplate. template params status content-type))
|
||||
|
||||
(defn render [template & [params]]
|
||||
(RenderableTemplate. template params))
|
||||
|
|
Reference in a new issue