summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-01-12 00:36:33 -0500
committersostler <sbostler@gmail.com>2010-01-12 00:36:33 -0500
commit54d552f0376f5e58d9998c2ace860e80d2fd49ba (patch)
tree0c7b51a08d8b085b7f320c68bcb468e45436ebe7 /src
parent7aa611019b6adb1bce5fd83c1ad90de406f6ea85 (diff)
Added browser template
Diffstat (limited to 'src')
-rwxr-xr-xsrc/site.clj51
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"))