summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Ostler <scottbot9000@gmail.com>2010-06-22 14:11:08 -0400
committerScott Ostler <scottbot9000@gmail.com>2010-06-22 14:11:08 -0400
commit8955fabcc5f550eb3eb7c0a43c045e444878edff (patch)
tree2acd6f13ce5e85c93ae7142aec6763566e92ff76
parent8bd14cf5d2acb1e3c50b6f9e9eaa3fddc3e36b71 (diff)
Fixed error message for broken chat template
-rw-r--r--src/site.clj69
-rwxr-xr-xsrc/utils.clj20
2 files changed, 46 insertions, 43 deletions
diff --git a/src/site.clj b/src/site.clj
index 93a263d..0e543a1 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -563,29 +563,30 @@ FROM users u
(is-vip? session))))
(defn chat [session room template]
- (let [now (System/currentTimeMillis)
- nick (session :nick)
- st (fetch-template template session)
- limit (if (:admin_only room) *vip-dumps-per-page* *dumps-per-page*)
- message-list (reverse (tags/fetch-dumps-by-room :room-id (room :room_id)
- :image-only false
- :amount limit))
- message-list (map tags/add-favorited-flag message-list (repeat session))
- message-list (to-array (map process-message-for-output message-list))]
- (if nick
- (dosync
- (login-user (user-struct-from-session session) room)))
- (let [user-list (prepare-user-list room true)]
- (.setAttribute st "users" user-list))
- (.setAttribute st "messages" message-list)
- (.setAttribute st "roomkey" (room :key))
- (.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 "version" *chat-version-number*)
- (.setAttribute st "roomname" (room :name))
- (.setAttribute st "timestamp" now)
- (.toString st)))
+ (if-let [st (fetch-template template session)]
+ (let [now (System/currentTimeMillis)
+ nick (session :nick)
+ limit (if (:admin_only room) *vip-dumps-per-page* *dumps-per-page*)
+ message-list (reverse (tags/fetch-dumps-by-room :room-id (room :room_id)
+ :image-only false
+ :amount limit))
+ message-list (map tags/add-favorited-flag message-list (repeat session))
+ message-list (to-array (map process-message-for-output message-list))]
+ (if nick
+ (dosync
+ (login-user (user-struct-from-session session) room)))
+ (doto st
+ (.setAttribute "users" (prepare-user-list room true))
+ (.setAttribute "messages" message-list)
+ (.setAttribute "roomkey" (room :key))
+ (.setAttribute "isadminroom" (room :admin_only))
+ (.setAttribute "json_room_key" (json-str (room :key)))
+ (.setAttribute "json_user_nick" (if nick (json-str nick) "null"))
+ (.setAttribute "version" *chat-version-number*)
+ (.setAttribute "roomname" (room :name))
+ (.setAttribute "timestamp" now)
+ (.toString)))
+ [404 "UNKNOWN PAGE"]))
(defn validated-chat [session room-key template]
(let [room-key (if (= (lower-case room-key) "www") *default-room* room-key)]
@@ -707,8 +708,8 @@ FROM users u
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
+ 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))
@@ -872,14 +873,14 @@ FROM users u
(def *ghetto-search-regex* #"^[A-Za-z0-9\-_.+]*$")
-(defn json-ghetto-search [undecoded-url-searchterms]
- ( if (re-matches *ghetto-search-regex* undecoded-url-searchterms)
- (let [tokens (map url-decode (re-split #"\+" undecoded-url-searchterms))
- tokens (map #(str "%" %1 "%") tokens)
- query (ghetto-search-query (count tokens))
- rows (do-select (vec (concat [query] tokens)))]
- (str "searchResult(" (json-str rows) ")"))
- (str "searchError('sorry, no fancy characters')")))
+(defn json-ghetto-search [undecoded-url-searchterms]
+ (if (re-matches *ghetto-search-regex* undecoded-url-searchterms)
+ (let [tokens (map url-decode (re-split #"\+" undecoded-url-searchterms))
+ tokens (map #(str "%" %1 "%") tokens)
+ query (ghetto-search-query (count tokens))
+ rows (do-select (vec (concat [query] tokens)))]
+ (str "searchResult(" (json-str rows) ")"))
+ (str "searchError('sorry, no fancy characters')")))
;; Account resets
@@ -1089,7 +1090,7 @@ FROM users u
(POST "/cancel-mute" (handle-cancel-mute! session params))
(GET "/profile-test/:t" (profile session "ryder" (params :t)))
- (GET "/cmd/ghettosearch/:searchterm" (json-ghetto-search (undecoded-url-piece (request-url request) 2)))
+ (GET "/cmd/ghettosearch/:searchterm" (json-ghetto-search session (undecoded-url-piece (request-url request) 2)))
(GET "/search" (serve-template "search_files" session))
;; Footer pages
diff --git a/src/utils.clj b/src/utils.clj
index 04b870f..fbdefda 100755
--- a/src/utils.clj
+++ b/src/utils.clj
@@ -259,16 +259,18 @@
(def template-group (new StringTemplateGroup "dumpfm" "template"))
(.setRefreshInterval template-group 3)
-; TODO: handle exception, clean-up template setting
(defn fetch-template [template session]
- (let [st (.getInstanceOf template-group template)]
- (if (session :nick)
- (do (.setAttribute st "user_email" (session :email))
- (.setAttribute st "user_nick" (session :nick))
- (if (non-empty-string? (session :avatar))
- (.setAttribute st "user_avatar" (session :avatar)))
- (.setAttribute st "isadmin" (session :is_admin))))
- st))
+ (try
+ (let [st (.getInstanceOf template-group template)]
+ (if (session :nick)
+ (doto st
+ (.setAttribute "user_email" (session :email))
+ (.setAttribute "user_nick" (session :nick))
+ (.setAttribute "user_avatar" (if (non-empty-string? (session :avatar))
+ (session :avatar) nil))
+ (.setAttribute "isadmin" (session :is_admin)))
+ st))
+ (catch Exception e nil)))
(defn fetch-template-fragment [template]
(.getInstanceOf template-group template))