summaryrefslogtreecommitdiff
path: root/src/site.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.clj')
-rw-r--r--src/site.clj42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/site.clj b/src/site.clj
index ab7a17f..67fab63 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -4,12 +4,13 @@
java.util.Date
java.io.File
javax.imageio.ImageIO
- javax.servlet.http.Cookie)
+ javax.servlet.http.Cookie
+ org.antlr.stringtemplate.StringTemplateGroup)
(:use clojure.xml
clojure.contrib.command-line
clojure.contrib.duck-streams
clojure.contrib.json.write
- clojure.contrib.seq-utils
+ clojure.contrib.seq-utils
clojure.contrib.sql
clojure.contrib.str-utils
clojure.contrib.def
@@ -18,7 +19,7 @@
admin
compojure
email
- fame
+ fame
utils
cookie-login
session-sweeper
@@ -650,8 +651,14 @@ order by count desc limit ? offset ?")
(or (not (room :admin_only))
(is-vip? session))))
+(def default-room-template "chat")
+
+(defn lookup-room-template [session room-key template]
+ (or (fetch-template (str "rooms/" (or template room-key)) session)
+ (fetch-template (str "rooms/" default-room-template) session)))
+
(defn chat [session room template]
- (if-let [st (fetch-template template session)]
+ (if-let [st (lookup-room-template session (:key room) template)]
(let [now (System/currentTimeMillis)
nick (session :nick)
limit (if (:admin_only room) *vip-dumps-per-page* *dumps-per-page*)
@@ -677,11 +684,13 @@ order by count desc limit ? offset ?")
(.toString st))
[404 "UNKNOWN PAGE"]))
-(defn validated-chat [session room-key template]
- (let [room-key (if (= (lower-case room-key) "www") *default-room* room-key)]
- (if (validate-room-access room-key session)
- (chat session (lookup-room room-key) template)
- (resp-error "UNKNOWN_ROOM"))))
+(defn validated-chat
+ ([session room-key] (validated-chat session room-key nil))
+ ([session room-key template]
+ (let [room-key (if (= (lower-case room-key) "www") *default-room* room-key)]
+ (if (validate-room-access room-key session)
+ (chat session (lookup-room room-key) template)
+ (resp-error "UNKNOWN_ROOM")))))
(defn refresh [session params room]
(dosync
@@ -754,9 +763,9 @@ order by count desc limit ? offset ?")
;; TODO: make work for all rooms
(defn browser [session]
(let [room (lookup-room *default-room*)
- now (System/currentTimeMillis)
- nick (session :nick)
- st (fetch-template "browser" session)]
+ now (System/currentTimeMillis)
+ nick (session :nick)
+ st (fetch-template "browser" session)]
(if nick
(dosync
(login-user (user-struct-from-session session) room)))
@@ -1129,10 +1138,11 @@ order by count desc limit ? offset ?")
(GET "/avatars/*" (serve-static *avatar-directory* (params :*))))
(defroutes pichat
- (GET "http://:sub.dump.fm/" (validated-chat session (params :sub) "chat"))
- (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub) "chat"))
- (GET "/:room/chat" (validated-chat session (params :room) "chat"))
- (GET "/chat" (validated-chat session *default-room* "chat"))
+ (GET "http://:sub.dump.fm/" (validated-chat session (params :sub)))
+ (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub)))
+ (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub) (params :t)))
+ (GET "/:room/chat" (validated-chat session (params :room)))
+ (GET "/chat" (validated-chat session *default-room*))
(GET "/chat/:t" (validated-chat session *default-room* (params :t)))
(GET "http://:sub.dump.fm/log" (validated-log session (params :sub) "0" params))