summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-01-29 01:51:48 -0500
committersostler <sbostler@gmail.com>2010-01-29 01:51:48 -0500
commit65f06c8d8593881f10d767dd0610ca6f63569f56 (patch)
tree62b1dfe4650a0ecce5fe1131a447c44756d37fd9
parent99cc0ef49a1d087401dbd8e1cfabc7c8d5cc2104 (diff)
Added upload to main chat
-rwxr-xr-xsrc/site.clj41
-rwxr-xr-xstatic/js/pichat.js9
-rwxr-xr-xtemplate/chat.st10
3 files changed, 40 insertions, 20 deletions
diff --git a/src/site.clj b/src/site.clj
index 1d55ac7..15ac373 100755
--- a/src/site.clj
+++ b/src/site.clj
@@ -316,10 +316,11 @@
;; Chat
-(defn validate-room-access [room session]
- (and room
- (or (not (room :admin_only))
- (session :is_admin))))
+(defn validate-room-access [room-key session]
+ (let [room (@rooms room-key)]
+ (and room
+ (or (not (room :admin_only))
+ (session :is_admin)))))
(defn chat [session room]
(let [now (System/currentTimeMillis)
@@ -344,10 +345,9 @@
(.toString st)))
(defn validated-chat [session room-key]
- (let [room (@rooms room-key)]
- (if (validate-room-access room session)
- (chat session room)
- (resp-error "UNKNOWN_ROOM"))))
+ (if (validate-room-access room-key session)
+ (chat session (@rooms room-key))
+ (resp-error "UNKNOWN_ROOM")))
(defn refresh [session params room]
(dosync
@@ -365,8 +365,7 @@
(defn validated-refresh [session params]
(let [room-key (params :room)
room (@rooms room-key)]
- (if (and room
- (or (not (room :admin_only)) (session :is_admin)))
+ (if (validate-room-access room-key session)
(refresh session params room)
(resp-error "UNKNOWN_ROOM"))))
@@ -409,11 +408,9 @@
(resp-success msg-id)))))
(defn validated-msg [session params]
- (let [room-key (params :room)
- room (@rooms room-key)]
- (if (validate-room-access room session)
- (msg session params)
- (resp-error "UNKNOWN_ROOM"))))
+ (if (validate-room-access (params :room) session)
+ (msg session params)
+ (resp-error "UNKNOWN_ROOM")))
;; Browser
@@ -464,10 +461,9 @@
(.toString st)))
(defn validated-log [session room-key offset params]
- (let [room (@rooms room-key)]
- (if (validate-room-access room session)
- (log session room offset params)
- (resp-error "UNKNOWN_ROOM"))))
+ (if (validate-room-access room-key session)
+ (log session (@rooms room-key) offset params)
+ (resp-error "UNKNOWN_ROOM")))
;; Upload
@@ -476,6 +472,8 @@
subbed (re-gsub #"[^\w.-]" "" spaceless)]
(str (System/currentTimeMillis) "-" subbed)))
+;; TODO: enforce
+
(defn upload [session params]
(if (not (session :nick))
[404 "NOT_LOGGED_IN"]
@@ -492,6 +490,11 @@
(add-message msg room)))
[200 image-url])))
+(defn validated-upload [session params]
+ (if (validate-room-access (params :room) session)
+ (upload session params)
+ (resp-error "UNKNOWN_ROOM")))
+
;; 404
(defn unknown-page [params]
diff --git a/static/js/pichat.js b/static/js/pichat.js
index 1c378e2..79f21b0 100755
--- a/static/js/pichat.js
+++ b/static/js/pichat.js
@@ -267,3 +267,12 @@ function initLog() {
}
function favoriteImage() {};
+
+function setupUpload(elementId, roomKey) {
+ new AjaxUpload(elementId, {
+ action: '/upload',
+ autoSubmit: true,
+ name: 'image',
+ data: { room: roomKey }
+ });
+} \ No newline at end of file
diff --git a/template/chat.st b/template/chat.st
index cea2004..bf9a1ba 100755
--- a/template/chat.st
+++ b/template/chat.st
@@ -27,6 +27,14 @@
<script src="http://widgets.getclicky.com/tally/?site_id=170656&sitekey=736f7dd41a0612d8d50797c65768e71a&width=175&height=250&title=Visitors" type="text/javascript"></script>
$endif$
<script src="/static/away.js"></script>
+ <script src="/static/js/ajaxupload.js"></script>
+ <script>
+ if (Nick) {
+ jQuery(document).ready(function() {
+ setupUpload('upload', Room);
+ });
+ }
+ </script>
</head>
<body>
$banner()$
@@ -58,7 +66,7 @@
<input id="msgInput" class="msgInput" type="input" />
<input id="msgSubmit" type="submit" value="Send Image URL"
/>
- <input id="upload" value="Upload" type="submit">
+ <input id="upload" value="Upload" type="submit">
</div>
$endif$
</div>