57 lines
2 KiB
Clojure
57 lines
2 KiB
Clojure
(ns yenu.layout
|
|
(:require [selmer.parser :as parser]
|
|
[selmer.filters :as filter]
|
|
[ring.util.http-response :refer [content-type ok]]
|
|
[ring.util.anti-forgery :refer [anti-forgery-field]]
|
|
[yenu.helpers.images :as image-helper]
|
|
[ring.middleware.anti-forgery :refer [*anti-forgery-token*]]
|
|
[clj-time.format :as time-format]
|
|
[yenu.config :refer [env]]
|
|
[digest :as digest]
|
|
[clj-time.core :as time])
|
|
(:use [markdown.core]))
|
|
|
|
(declare ^:dynamic *identity*)
|
|
(declare ^:dynamic *app-context*)
|
|
(parser/set-resource-path! (clojure.java.io/resource "templates"))
|
|
(parser/add-tag! :csrf-field (fn [_ _] (anti-forgery-field)))
|
|
(filter/add-filter! :inc inc)
|
|
(filter/add-filter! :dec dec)
|
|
(filter/add-filter! :markdown-to-html md-to-html-string)
|
|
(filter/add-filter! :parse-date #(time/to-time-zone (time-format/parse %) (time/default-time-zone)))
|
|
|
|
(defn render-file [template & [params]]
|
|
(content-type
|
|
(ok
|
|
(parser/render-file
|
|
template
|
|
(assoc params
|
|
:page template
|
|
:csrf-token *anti-forgery-token*
|
|
:servlet-context *app-context*
|
|
:passwordhash (digest/md5 (:user-password env))
|
|
:identity *identity*)))
|
|
"text/html; charset=utf-8"))
|
|
|
|
(defn render [string contenttype]
|
|
(content-type
|
|
(-> (ok string)
|
|
(assoc :servlet-context *app-context*
|
|
:csrf-token *anti-forgery-token*
|
|
:passwordhash (digest/md5 (:user-password env))
|
|
:identity *identity*))
|
|
(str contenttype "; charset=utf-8")))
|
|
|
|
(defn error-page
|
|
"error-details should be a map containing the following keys:
|
|
:status - error status
|
|
:title - error title (optional)
|
|
:message - detailed error message (optional)
|
|
|
|
returns a response map with the error page as the body
|
|
and the status specified by the status key"
|
|
[error-details]
|
|
{:status (:status error-details)
|
|
:headers {"Content-Type" "text/html; charset=utf-8"}
|
|
:body (parser/render-file "error.html" error-details)})
|