update template render function

This commit is contained in:
Gered 2014-03-24 18:13:44 -04:00
parent e06bac7f2f
commit beb60e3321
6 changed files with 57 additions and 47 deletions

View file

@ -54,7 +54,7 @@
(.printStackTrace e) (.printStackTrace e)
{:status 500 {:status 500
:headers {"Content-Type" "text/html"} :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 (def app (app-handler
[auth-routes home-routes posts-routes files-routes rss-routes app-routes] [auth-routes home-routes posts-routes files-routes rss-routes app-routes]

View file

@ -4,6 +4,8 @@
[noir.util.route]) [noir.util.route])
(:require [blarg.views.layout :as layout] (:require [blarg.views.layout :as layout]
[blarg.models.users :as users] [blarg.models.users :as users]
[ring.util.response :refer [status]]
[ring.middleware.head :refer [wrap-head]]
[noir.session :as session] [noir.session :as session]
[noir.response :as resp] [noir.response :as resp]
[noir.validation :as vali])) [noir.validation :as vali]))
@ -14,8 +16,10 @@
(defn login-page [] (defn login-page []
(if (logged-in?) (if (logged-in?)
(resp/redirect "/") (resp/redirect "/")
(layout/render "auth/login.html" {:login-error (session/flash-get :login-error) (layout/render
:html-title (->html-title ["Login"])}))) "auth/login.html"
:params {:login-error (session/flash-get :login-error)
:html-title (->html-title ["Login"])})))
(defn handle-login [id pass] (defn handle-login [id pass]
(if-let [user (users/get-user id pass)] (if-let [user (users/get-user id pass)]
@ -31,9 +35,7 @@
(resp/redirect "/")) (resp/redirect "/"))
(defn handle-unauthorized [] (defn handle-unauthorized []
{:status 401 (layout/render "unauthorized.html" :status 401))
:headers {"Content-Type" "text/html"}
:body (layout/render "unauthorized.html")})
(defroutes auth-routes (defroutes auth-routes
(GET "/unauthorized" [] (handle-unauthorized)) (GET "/unauthorized" [] (handle-unauthorized))

View file

@ -17,13 +17,13 @@
(let [p (ensure-prefix-suffix path "/")] (let [p (ensure-prefix-suffix path "/")]
(layout/render (layout/render
"files/list.html" "files/list.html"
{:html-title (->html-title [(str "Files in " p)]) :params {:html-title (->html-title [(str "Files in " p)])
:path p :path p
:files (files/list-files p) :files (files/list-files p)
:tree (files/get-tree) :tree (files/get-tree)
:error (session/flash-get :file-error) :error (session/flash-get :file-error)
:success (session/flash-get :file-success) :success (session/flash-get :file-success)
:notice (session/flash-get :file-notice)}))) :notice (session/flash-get :file-notice)})))
(defn handle-new-file [path file returnpath] (defn handle-new-file [path file returnpath]
(if (valid-upload? file) (if (valid-upload? file)

View file

@ -7,11 +7,13 @@
(defn about-page [] (defn about-page []
(layout/render (layout/render
"about.html" {:html-title (->html-title ["About"])})) "about.html"
:params {:html-title (->html-title ["About"])}))
(defn projects-page [] (defn projects-page []
(layout/render (layout/render
"projects.html" {:html-title (->html-title ["Projects"])})) "projects.html"
:params {:html-title (->html-title ["Projects"])}))
(defroutes home-routes (defroutes home-routes
(GET "/about" [] (about-page)) (GET "/about" [] (about-page))

View file

@ -43,23 +43,23 @@
offset (* currentpage posts/per-page)] offset (* currentpage posts/per-page)]
(layout/render (layout/render
"posts/list.html" "posts/list.html"
{:posts (posts/list-posts (auth/logged-in?) posts/per-page offset) :params {:posts (posts/list-posts (auth/logged-in?) posts/per-page offset)
:prevpage (- currentpage 1) :prevpage (- currentpage 1)
:nextpage (+ currentpage 1) :nextpage (+ currentpage 1)
:atlastpage (= currentpage lastpage) :atlastpage (= currentpage lastpage)
:atfirstpage (= currentpage 0) :atfirstpage (= currentpage 0)
:inlist true}))) :inlist true})))
(defn list-by-tag [tag] (defn list-by-tag [tag]
(layout/render (layout/render
"posts/listbytag.html" "posts/listbytag.html"
{:posts (posts/list-posts-by-tag (auth/logged-in?) tag) :params {:posts (posts/list-posts-by-tag (auth/logged-in?) tag)
:tag tag})) :tag tag}))
(defn list-archive [] (defn list-archive []
(layout/render (layout/render
"posts/listarchive.html" "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] (defn show-post-page [year month day slug]
(let [date (str (string->int year) "-" (string->int month) "-" (string->int day)) (let [date (str (string->int year) "-" (string->int month) "-" (string->int day))
@ -67,17 +67,18 @@
(if (not-empty post) (if (not-empty post)
(layout/render (layout/render
"posts/showpost.html" "posts/showpost.html"
{:post post :params {:post post
:html-title (->html-title [(:title post)])}) :html-title (->html-title [(:title post)])})
(resp/redirect "/notfound")))) (resp/redirect "/notfound"))))
(defn new-post-page [& post] (defn new-post-page [& post]
(layout/render (layout/render
"posts/newpost.html" "posts/newpost.html"
(merge (first post) :params (merge
{:all-tags (posts/list-tags) (first post)
:html-title (->html-title ["New Post"]) {:all-tags (posts/list-tags)
:validation-errors @vali/*errors*}))) :html-title (->html-title ["New Post"])
:validation-errors @vali/*errors*})))
(defn handle-new-post [title tags body] (defn handle-new-post [title tags body]
(if (valid-post? title tags body) (if (valid-post? title tags body)
@ -94,11 +95,12 @@
(posts/get-post id))] (posts/get-post id))]
(layout/render (layout/render
"posts/editpost.html" "posts/editpost.html"
(merge post :params (merge
{:tags (tags->string (:tags post)) post
:all-tags (posts/list-tags) {:tags (tags->string (:tags post))
:html-title (->html-title ["Edit Post"]) :all-tags (posts/list-tags)
:validation-errors @vali/*errors*})))) :html-title (->html-title ["Edit Post"])
:validation-errors @vali/*errors*}))))
(defn handle-edit-post [id title tags body] (defn handle-edit-post [id title tags body]
(if (valid-post? title tags body) (if (valid-post? title tags body)

View file

@ -1,23 +1,27 @@
(ns blarg.views.layout (ns blarg.views.layout
(:require [selmer.parser :as parser] (:require [selmer.parser :as parser]
[ring.util.response :refer [content-type response]] [ring.util.response :as resp]
[compojure.response :refer [Renderable]] [compojure.response :refer [Renderable]]
[noir.session :as session]) [noir.session :as session])
(:use [blarg.views.viewfilters])) (:use [blarg.views.viewfilters]))
(def template-path "blarg/views/templates/") (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 Renderable
(render [this request] (render [this request]
(content-type (-> (render-template request template params)
(response (resp/response)
(parser/render-file (resp/content-type (or content-type "text/html; charset=utf-8"))
(str template-path template) (resp/status (or status 200)))))
(assoc params
:context (:context request) (defn render [template & {:keys [params status content-type]}]
:user-id (session/get :user)))) (RenderableTemplate. template params status content-type))
"text/html; charset=utf-8")))
(defn render [template & [params]]
(RenderableTemplate. template params))