summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-05-08 14:50:22 -0400
committersostler <sbostler@gmail.com>2010-05-08 14:50:22 -0400
commitd74dc8f94992e035a00f7d64a2191dbca480c489 (patch)
tree5f883659218889c321e4c91a996b424b274ff68d
parentd84dba44b743a7b347c0320e91d70295d406f5a9 (diff)
Fixed chat/log subdomain routing
-rw-r--r--src/site.clj67
-rw-r--r--template/log.st89
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 @@
<html>
-<head>
- <title>dump.fm log</title>
-$head()$
- <link rel="stylesheet" type="text/css" href="/static/css/log.css">
- <script>
- jQuery(document).ready(initLog);
- </script>
-</head>
-<body>
- $banner()$
- <div id="chatrap">
- <div id="log">
- <div id="loghead"></div>
- <br>
- <div id="posts">
- <div id="lolbanner">
- <img src="/static/img/welcomebanner.gif">
- </div>
-$if(dumps)$
- $dumps: { d | $log_dump(dump=d)$ }$
- $if(json_tags)$
-<script>
- $json_tags: { j | $j$;
-}$
-</script>
- $endif$
-$else$
- No dumps!
-$endif$
- <div id="pnav">
-$if(next)$
- <div id="pnavn"><a href="/$roomkey$/log/$next$">next &#9758;</a></div>
-$endif$
+ <head>
+ <title>dump.fm log</title>
+ $head()$
+ <link rel="stylesheet" type="text/css" href="/static/css/log.css">
+ <script>
+ jQuery(document).ready(initLog);
+ </script>
+ </head>
+ <body>
+ $banner()$
+ <div id="chatrap">
+ <div id="log">
+ <div id="loghead"></div>
+ <br>
+ <div id="posts">
+ <div id="lolbanner">
+ <img src="/static/img/welcomebanner.gif">
+ </div>
+ $if(dumps)$
+ $dumps: { d | $log_dump(dump=d)$ }$
+ $if(json_tags)$
+ <script>
+ $json_tags: { j | $j$;
+ }$
+ </script>
+ $endif$
+ $else$
+ No dumps!
+ $endif$
+ <div id="pnav">
+ $if(next)$
+ <div id="pnavn">
+ <a href="http://$roomkey$dump.fm/log/$next$">next &#9758;</a>
+ </div>
+ $endif$
&nbsp;
-$if(prev)$
- <div id="pnavo"> <a href="/$roomkey$/log/$prev$">&#9756; prev</a> </div>
-$endif$
- <br><br>
+ $if(prev)$
+ <div id="pnavo">
+ <a href="http://$roomkey$dump.fm/log/$prev$">&#9756; prev</a>
+ </div>
+ $endif$
+ <br><br>
+ </div>
+ </div>
+ <div id="footer">
+ $footer()$
</div>
</div>
-
- <div id="footer">
-$footer()$
- </div>
- </div>
</body>
-</html> \ No newline at end of file
+</html>