summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/site.clj42
-rwxr-xr-xstatic/js/pichat.js13
2 files changed, 29 insertions, 26 deletions
diff --git a/src/site.clj b/src/site.clj
index e7d401f..3531f4a 100755
--- a/src/site.clj
+++ b/src/site.clj
@@ -386,7 +386,7 @@
(let [msg-id (msg-db user-id (room :room_id) content)
msg (struct message-struct nick content now msg-id)]
(dosync
- (if (not (contains? @(room :users) nick))
+ (if (not (contains? (ensure (room :users)) nick))
(login-user (user-struct-from-session session) room))
(add-message msg room))
(resp-success msg-id)))))
@@ -456,29 +456,27 @@
subbed (re-gsub #"[^\w.-]" "" spaceless)]
(str (System/currentTimeMillis) "-" subbed)))
-;; TODO: enforce
+(defn image-url-from-file [f]
+ (str-join "/" [*server-url* "images" (.getName f)]))
-(defn upload [session params]
- (if (not (session :nick))
- [404 "NOT_LOGGED_IN"]
- (let [image (:image params)
- filename (format-filename (:filename image))
- dest (File. (rel-join *image-directory* filename))
- image-url (str-join "/" [*server-url* "images" (.getName dest )])]
- (copy (:tempfile image) dest)
- (let [room (@rooms (params :room))
- msg-id (msg-db (session :user_id) (room :room_id) image-url)
- now (new Date)
- msg (struct message-struct (session :nick) image-url now msg-id)]
- (dosync
- (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")))
+(defn do-upload [session image room]
+ (let [filename (format-filename (:filename image))
+ dest (File. (rel-join *image-directory* filename))
+ url (image-url-from-file dest)
+ msg-id (msg-db (session :user_id) (room :room_id) url)
+ now (new Date)
+ msg (struct message-struct (session :nick) url now msg-id)]
+ (dosync
+ (add-message msg room))
+ (copy (:tempfile image) dest)
+ [200 url]))
+(defn upload [session params]
+ (let [room-key (params :room)
+ nick (session :nick)]
+ (cond (not nick) [200 "NOT_LOGGED_IN"]
+ (not (validate-room-access room-key session)) [200 "UNKNOWN_ROOM"]
+ :else (do-upload session (:image params) (@rooms room-key)))))
;; 404
(defn unknown-page [params]
diff --git a/static/js/pichat.js b/static/js/pichat.js
index 01ae492..2804919 100755
--- a/static/js/pichat.js
+++ b/static/js/pichat.js
@@ -22,12 +22,12 @@ function linkReplace(match){
}
function buildMsgContent(content) {
- return linkify(content)
+ return linkify(escapeHtml(content));
}
function buildMessageDiv(msg, isLoading) {
var nick = escapeHtml(msg.nick);
- var msgId = !isLoading ? 'id="message-' + msg.message_id + '"' : '';
+ var msgId = !isLoading ? 'id="message-' + msg.msg_id + '"' : '';
var loadingClass = isLoading ? ' loading' : '';
return '<div class="msgDiv ' + loadingClass + '" ' + msgId + '>'
+ '<b><a href="/u/' + nick + ' ">' + nick + '</a>: </b>'
@@ -237,8 +237,13 @@ function initProfile() {
data: { 'attr': attr, 'val': newVal }
});
if (attr == 'avatar') {
- var s = '<img id="avatarPic" src="' + newVal + '" width="150" />';
- $('#avatarPic').replaceWith(s);
+ console.log(newVal);
+ if (newVal != "") {
+ var s = '<img id="avatarPic" src="' + newVal + '" width="150" />';
+ $('#avatarPic').replaceWith(s).show();
+ } else {
+ $('#avatarPic').hide();
+ }
}
return escapeHtml(newVal);
};