summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorScott Ostler <sostler@deathmachine.local>2010-02-27 18:28:06 -0500
committerScott Ostler <sostler@deathmachine.local>2010-02-27 18:28:06 -0500
commitfa8c89b543bb6e23cc7cac5983cb61818a4e3139 (patch)
tree506827edbf7270715333e2ea34e3ea793a24a989 /src
parent4bb4fbe6f3abc01edcd402edd1f2c86bd690c062 (diff)
in-progress topics
Diffstat (limited to 'src')
-rwxr-xr-xsrc/site.clj36
1 files changed, 33 insertions, 3 deletions
diff --git a/src/site.clj b/src/site.clj
index cd2b82f..28dadcb 100755
--- a/src/site.clj
+++ b/src/site.clj
@@ -148,10 +148,11 @@
(map process-user (sort-by #(% :nick)
(vals @(room :users)))))
-(defn updates [room since]
+(defn updates [room since]
{"users" (prepare-user-list room)
"messages" (map process-message-for-json
- (new-messages room since))})
+ (new-messages room since))
+ "topic" @(room :topic)})
(def *dumps-per-page* 20)
@@ -200,7 +201,9 @@
:name (room-db :name)
:description (room-db :description)
:users (ref {})
- :messages (ref (fetch-messages-by-room (room-db :room_id) false))})
+ :messages (ref (fetch-messages-by-room (room-db :room_id) false))
+ :topic (ref nil)
+ })
;; Templates
@@ -357,6 +360,32 @@
:else (do (update-user-db user-id attr val)
(resp-success "OK")))))
+;; Topics
+
+(defn valid-topic? [topic]
+ topic)
+
+(defn valid-deadline? [deadline]
+ deadline)
+
+(defn set-topic! [room topic deadline maker]
+ (ref-set (room :topic)
+ {:topic topic
+ :deadline deadline
+ :maker maker}))
+
+(defn validate-set-topic [session params]
+ (let [room (@rooms (params :room))
+ topic (params :topic)
+ deadline (params :deadline)]
+ (cond (not (session :is_admin)) (resp-error "NOT_VIP")
+ (not (valid-topic? topic)) (resp-error "INVALID_TOPIC")
+ (not (valid-deadline? deadline)) (resp-error "INVALID_DEADLINE")
+ (not room) (resp-error "INVALID_ROOM")
+ :else (do
+ (dosync (set-topic! room topic deadline (session :nick)))
+ (resp-success "OK")))))
+
;; Chat
(defn validate-room-access [room-key session]
@@ -620,6 +649,7 @@
(POST "/msg" (validated-msg session params))
(POST "/submit-registration" (register session params))
(POST "/update-profile" (update-profile session params))
+ (POST "/set-topic" (validate-set-topic session params))
(GET "/about_us" (serve-template "about_us" session))
(GET "/goodies" (serve-template "goodies" session))
(GET "/help" (serve-template "help" session))