diff options
| author | sostler <sbostler@gmail.com> | 2010-01-12 00:36:33 -0500 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-01-12 00:36:33 -0500 |
| commit | 54d552f0376f5e58d9998c2ace860e80d2fd49ba (patch) | |
| tree | 0c7b51a08d8b085b7f320c68bcb468e45436ebe7 /src | |
| parent | 7aa611019b6adb1bce5fd83c1ad90de406f6ea85 (diff) | |
Added browser template
Diffstat (limited to 'src')
| -rwxr-xr-x | src/site.clj | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/src/site.clj b/src/site.clj index e2bcf5e..d387247 100755 --- a/src/site.clj +++ b/src/site.clj @@ -196,7 +196,8 @@ (defn set-user-attributes [st session] (if (session :nick) - (.setAttribute st "user_nick" (session :nick)))) + (.setAttribute st "user_nick" (session :nick)) + (.setAttribute st "isadmin" (session :is_admin)))) (defn fetch-template [template-name session] (let [st (.getInstanceOf template-group template-name)] @@ -316,7 +317,6 @@ (.setAttribute st "users" user-list)) (.setAttribute st "messages" message-list) (.setAttribute st "roomkey" (room :key)) - (.setAttribute st "isadmin" (session :is_admin)) (.setAttribute st "isadminroom" (room :admin_only)) (.setAttribute st "json_room_key" (json-str (room :key))) (.setAttribute st "json_user_nick" (if nick (json-str nick) "null")) @@ -379,15 +379,16 @@ content (.trim (params :content)) now (new Date) msg (struct message-struct nick content now)] - (if (not room) - (resp-error "BAD_ROOM") - (do - (dosync - (if (not (contains? @(room :users) nick)) - (login-user (user-struct-from-session session) room)) - (add-message msg room)) - (msg-db user-id (room :room_id) msg) - (resp-success "OK"))))) + (cond (not room) (resp-error "BAD_ROOM") + (not nick) (resp-error "NOT_LOGGED_IN") + :else + (do + (dosync + (if (not (contains? @(room :users) nick)) + (login-user (user-struct-from-session session) room)) + (add-message msg room)) + (msg-db user-id (room :room_id) msg) + (resp-success "OK"))))) (defn validated-msg [session params] (let [room-key (params :room) @@ -396,6 +397,33 @@ (msg session params) (resp-error "UNKNOWN_ROOM")))) +;; Browser + +(defn browser [session] + (let [room (@rooms "RoomA") + now (System/currentTimeMillis) + nick (session :nick) + st (fetch-template "browser" session) + message-list (to-array + (map process-message-for-output + ; TODO: remove db query + (reverse (fetch-messages-by-room (room :room_id) false))))] + (if nick + (dosync + (login-user (user-struct-from-session session) room))) + (let [user-list (to-array (prepare-user-list room))] + (.setAttribute st "users" user-list)) + (.setAttribute st "messages" message-list) + (.setAttribute st "roomkey" (room :key)) + (.setAttribute st "isadmin" (session :is_admin)) + (.setAttribute st "isadminroom" (room :admin_only)) + (.setAttribute st "json_room_key" (json-str (room :key))) + (.setAttribute st "json_user_nick" (if nick (json-str nick) "null")) + (.setAttribute st "roomname" (room :name)) + (.setAttribute st "timestamp" now) + (.toString st))) + + ;; Chat Log ; TODO: Optimize dump counts @@ -458,6 +486,7 @@ (GET "/submit-registration" (register session params)) (GET "/:room/chat" (no-cache (validated-chat session (-> request :route-params :room)))) (GET "/chat" (no-cache (validated-chat session "RoomA"))) + (GET "/browser" (browser session)) (GET "/refresh" (validated-refresh session params)) (GET "/msg" (validated-msg session params)) (GET "/log" (validated-log session "RoomA" "0")) |
