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)
{: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]

View file

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

View file

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

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

View file

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

View file

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