Skip to content

Commit

Permalink
Finish up login stuff and start on user pages.
Browse files Browse the repository at this point in the history
  • Loading branch information
Raynes committed Dec 28, 2011
1 parent be47f48 commit a6c8a1b
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 10 deletions.
3 changes: 2 additions & 1 deletion project.clj
Expand Up @@ -4,6 +4,7 @@
[noir "1.3.0-alpha2"]
[congomongo "0.1.7"]
[clj-config "0.2.0"]
[clj-http "0.2.6"]]
[clj-http "0.2.6"]
[clavatar "0.1.0"]]
:main refheap.server)

5 changes: 5 additions & 0 deletions resources/public/css/refheap.css
Expand Up @@ -142,4 +142,9 @@ div.floater {
div#login {
margin: auto;
width: 450px;
}

.error {
color: red;
font-weight: bold;
}
5 changes: 3 additions & 2 deletions src/refheap/models/login.clj
Expand Up @@ -6,9 +6,10 @@
[cheshire.core :as json]))

(defn create-user [email name]
(let [qmap {:email email
(let [name (.toLowerCase name)
qmap {:email email
:username name}]
(when-not (mongo/fetch-one :users :where {:email email})
(when-not (mongo/fetch-one :users :where {:username name})
(mongo/insert!
:users
qmap)
Expand Down
14 changes: 12 additions & 2 deletions src/refheap/models/paste.clj
@@ -1,7 +1,10 @@
(ns refheap.models.paste
(:use [clojure.java.shell :only [sh]])
(:require [somnium.congomongo :as mongo]
[noir.session :as session]))
[noir.session :as session]
[clojure.java.io :as io]
[clojure.string :as string])
(:import java.io.StringReader))

(def paste-count
"The current count of pastes."
Expand Down Expand Up @@ -153,13 +156,20 @@
(defn paste
"Create a new paste."
[language contents private]
(let [user (session/get :username "anonymous")
(let [user (:username (session/get :user) "anonymous")
id (swap! paste-count inc)
lines (count (filter #{\newline} contents))]
(mongo/insert! :pastes {:paste-id id
:user user
:language language
:raw-contents contents
:summary (->> contents
StringReader.
io/reader
line-seq
(take 5)
(string/join "\n")
(pygmentize language))
:private (boolean private)
:lines (if (= \newline (last contents)) lines (inc lines))
:contents (pygmentize language contents)})))
Expand Down
22 changes: 22 additions & 0 deletions src/refheap/models/users.clj
@@ -0,0 +1,22 @@
(ns refheap.models.users
(:require [somnium.congomongo :as mongo]))

(defn get-user [user]
(mongo/fetch-one
:users
:where {:username user}))

(defn user-pastes [user page]
(mongo/fetch
:pastes
:where {:user user}
:limit 10
:skip (* 10 (dec page))))

(defn count-user-pastes [user]
(mongo/fetch-count
:pastes
:where {:user user}))

(defn count-pages [n]
(Math/ceil (/ n 10)))
8 changes: 3 additions & 5 deletions src/refheap/views/login.clj
Expand Up @@ -9,9 +9,9 @@
(defn create-user-page [email]
(session/flash-put! :email email)
(layout
(when-let [error (session/flash-get :error)]
[:p.error error])
[:div#login
(when-let [error (session/flash-get :error)]
[:p.error error])
(form-to
[:post "/user/create"]
[:p "You're almost there! Just enter a username and you'll be on your way."]
Expand All @@ -33,8 +33,6 @@

(defpage [:post "/user/verify"] {:keys [assertion]}
(when-let [{:keys [email]} (login/verify-assertion assertion)]
(prn email)
(if (login/user-exists email)
(do (prn (session/get :user))
(redirect "/paste"))
(redirect "/paste")
(create-user-page email))))
20 changes: 20 additions & 0 deletions src/refheap/views/users.clj
@@ -0,0 +1,20 @@
(ns refheap.views.users
(:use [noir.core :only [defpage]]
[refheap.views.common :only [layout]]
[clavatar.core :only [gravatar]])
(:require [refheap.models.users :as users]
[hiccup.page-helpers :as ph]))

(defn user-page [user]
(layout
[:div#user
(-> user users/get-user :email (gravatar :size 70) ph/image)
[:p "User has " (users/count-user-pastes user) " pastes."]
(for [{:keys [paste-id summary]} (users/user-pastes user 1)]
(list
(ph/link-to (str "/paste/" paste-id) paste-id)
[:div.syntax summary]
[:br]))]))

(defpage "/users/:user" {:keys [user]}
(user-page user))

0 comments on commit a6c8a1b

Please sign in to comment.