-
Notifications
You must be signed in to change notification settings - Fork 228
/
utils.clj
57 lines (51 loc) · 1.6 KB
/
utils.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
(ns foreclojure.utils
(:use (hiccup [core :only [html]]
[page-helpers :only [doctype include-css]]))
(:require [sandbar.stateful-session :as session]
(ring.util [response :as response])))
(defmacro dbg [x]
`(let [x# ~x] (println '~x "=" x#) x#))
(defn flash-fn [type]
(fn [msg url]
(session/flash-put! type msg)
(response/redirect url)))
(def flash-error (flash-fn :error))
(def flash-msg (flash-fn :message))
(defmacro def-page [page-name [& args] & code]
`(defn ~page-name [~@args]
(html-doc
~@code)))
(defn row-class [x]
{:class (if (even? x)
"evenrow"
"oddrow")})
(defn html-doc [& body]
(html
(doctype :html5)
[:html
[:head
[:title "4Clojure"]
(include-css "/style.css")]
[:body
[:div {:id "header"}
[:img {:id "logo" :src "/logo.png"}]
[:div {:id "user-info"}
(if-let [user (session/session-get :user)]
[:div
(str "Logged in as " user)
[:a {:id "logout" :href "/logout"} "Logout"]]
[:div
[:a {:href "/login"} "Login"] " or "
[:a {:href "/register"} "Register"]])]]
[:div {:id "menu"}
[:ul
[:li [:a {:href "/"} "Main Page"]]
[:li [:a {:href "/problems"} "Problem List"]]
[:li [:a {:href "/users"} "Top Users"]]
[:li [:a {:href "/directions"} "Getting Started"]]
[:li [:a {:href "/links"} "Useful Links"]]]
[:div
[:img {:src "/PoweredMongoDBbeige50.png"}]]]
[:div {:id "content"} body]
[:footer
[:span {:id "footer"} "© 2011 David Byrne" ]]]]))