From d74dc8f94992e035a00f7d64a2191dbca480c489 Mon Sep 17 00:00:00 2001 From: sostler Date: Sat, 8 May 2010 14:50:22 -0400 Subject: Fixed chat/log subdomain routing --- src/site.clj | 67 +++++++++++++++++++++++++------------------ template/log.st | 89 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 85 insertions(+), 71 deletions(-) diff --git a/src/site.clj b/src/site.clj index cccfa97..be59e09 100644 --- a/src/site.clj +++ b/src/site.clj @@ -71,6 +71,11 @@ ;; Room handling +(def *default-room* "dumpfm") + +(defn default-room? [key] + (= (lower-case key) *default-room*)) + (defn lookup-room [key] (@rooms (lower-case key))) @@ -592,9 +597,10 @@ ORDER BY msg_count DESC") (.toString st))) (defn validated-chat [session room-key template] - (if (validate-room-access room-key session) - (chat session (lookup-room room-key) template) - (resp-error "UNKNOWN_ROOM"))) + (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 @@ -667,7 +673,7 @@ ORDER BY msg_count DESC") ;; TODO: make work for all rooms (defn browser [session] - (let [room (lookup-room "dumpfm") + (let [room (lookup-room *default-room*) now (System/currentTimeMillis) nick (session :nick) st (fetch-template "browser" session)] @@ -689,36 +695,40 @@ ORDER BY msg_count DESC") ;; Chat Log (defn log [session room offset params] - (let [st (fetch-template "log" session) - logger (make-time-logger) - offset (maybe-parse-int offset 0) - dump-offset (* offset *dumps-per-page*) - image-only (and (not (room :admin_only)) - (not= (params :show) "all")) - raw-dumps (logger tags/fetch-dumps-by-room :room-id (room :room_id) - :image-only image-only - :amount (+ 1 *dumps-per-page*) - :offset dump-offset) - dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session)) -;; json-tags (for [dump dumps :when (not (empty? (dump :tags)))] -;; (json-str {"id" (dump :message_id) "tags" (dump :tags) })) - dumps (map tags/remove-tags-for-output dumps) - dumps (logger doall (map process-message-for-output dumps))] + (let [roomkey (room :key) + st (fetch-template "log" session) + logger (make-time-logger) + offset (maybe-parse-int offset 0) + dump-offset (* offset *dumps-per-page*) + image-only (and (not (room :admin_only)) + (not= (params :show) "all")) + raw-dumps (logger tags/fetch-dumps-by-room :room-id (room :room_id) + :image-only image-only + :amount (+ 1 *dumps-per-page*) + :offset dump-offset) + dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session)) + ;; json-tags (for [dump dumps :when (not (empty? (dump :tags)))] + ;; (json-str {"id" (dump :message_id) "tags" (dump :tags) })) + dumps (map tags/remove-tags-for-output dumps) + dumps (logger doall (map process-message-for-output dumps))] (if (> (count raw-dumps) *dumps-per-page*) (.setAttribute st "next" (inc offset))) (if (not= offset 0) (.setAttribute st "prev" (max (dec offset) 0))) (.setAttribute st "dumps" dumps) -;; (.setAttribute st "json_tags" json-tags) - (.setAttribute st "roomkey" (room :key)) + ;; (.setAttribute st "json_tags" json-tags) + (if (default-room? roomkey) + (.setAttribute st "roomkey" "") + (.setAttribute st "roomkey" (str roomkey "."))) (.setAttribute st "roomname" (room :name)) (.setAttribute st "debug_log_items" (logger)) (.toString st))) (defn validated-log [session room-key offset params] - (if (validate-room-access room-key session) - (log session (lookup-room room-key) offset params) - (resp-error "UNKNOWN_ROOM"))) + (let [room-key (if (= (lower-case room-key) "www") "dumpfm" room-key)] + (if (validate-room-access room-key session) + (log session (lookup-room room-key) offset params) + (resp-error "UNKNOWN_ROOM")))) ;; Tags @@ -972,12 +982,13 @@ ORDER BY msg_count DESC") (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 "dumpfm" "chat")) - (GET "/chat/:t" (validated-chat session "dumpfm" (params :t))) + (GET "/chat" (validated-chat session *default-room* "chat")) + (GET "/chat/:t" (validated-chat session *default-room* (params :t))) (GET "http://:sub.dump.fm/log" (validated-log session (params :sub) "0" params)) - (GET "http://:sub.dump.fm/log/:offset" (validated-log session (params :room) (params :offset) params)) - (GET "/log" (validated-log session "dumpfm" "0" params)) + (GET "http://:sub.dump.fm/log/:offset" (validated-log session (params :sub) (params :offset) params)) + (GET "/log" (validated-log session *default-room* "0" params)) + (GET "/log/:offset" (validated-log session *default-room* (params :offset) params)) (GET "/:room/log" (validated-log session (params :room) "0" params)) (GET "/:room/log/:offset" (validated-log session (params :room) (params :offset) params)) diff --git a/template/log.st b/template/log.st index 88ab991..de118ec 100644 --- a/template/log.st +++ b/template/log.st @@ -1,48 +1,51 @@ - - dump.fm log -$head()$ - - - - - $banner()$ -
-
-
-
-
-
- -
-$if(dumps)$ - $dumps: { d | $log_dump(dump=d)$ }$ - $if(json_tags)$ - - $endif$ -$else$ - No dumps! -$endif$ -
-$if(next)$ - -$endif$ + + dump.fm log + $head()$ + + + + + $banner()$ +
+
+
+
+
+
+ +
+ $if(dumps)$ + $dumps: { d | $log_dump(dump=d)$ }$ + $if(json_tags)$ + + $endif$ + $else$ + No dumps! + $endif$ +
+ $if(next)$ +
+ next ☞ +
+ $endif$   -$if(prev)$ - -$endif$ -

+ $if(prev)$ +
+ ☜ prev +
+ $endif$ +

+
+
+
- - -
- \ No newline at end of file + -- cgit v1.2.3-70-g09d2