diff options
| author | sostler <sbostler@gmail.com> | 2010-04-25 11:46:37 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-04-25 11:46:37 -0400 |
| commit | fd2766f7112856df57c68f9d32a2c92b108fdcb8 (patch) | |
| tree | 393a2d497365f5cf887e77ff1148996169052909 | |
| parent | b9529fed21e0d4594dcb7aaa165247514ffbd4eb (diff) | |
Added version numbers to chat api
| -rw-r--r-- | src/site.clj | 15 | ||||
| -rw-r--r-- | static/js/pichat.js | 4 | ||||
| -rw-r--r-- | template/browser.st | 80 | ||||
| -rw-r--r-- | template/chat.st | 1 |
4 files changed, 60 insertions, 40 deletions
diff --git a/src/site.clj b/src/site.clj index ec58e46..cc30d61 100644 --- a/src/site.clj +++ b/src/site.clj @@ -542,6 +542,18 @@ ;; Chat +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Chat format version history +; +; v0: Keys: users, messages, timestamp +; Date: Mists of dump antiquity +; +; v1: Keys: users, messages, timestamp, v +; Date: 2010/04/25 +; Note: Incorporates explicit version + +(def *chat-version-number* 1) + (defn validate-room-access [room-key session] (let [room (lookup-room room-key)] (and room @@ -566,6 +578,7 @@ (.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))) @@ -587,7 +600,7 @@ (commute users assoc nick (merge user-info {:last-seen now :avatar (session :avatar)})) (commute (room :users) assoc nick (user-struct-from-session session)))) - (resp-success (assoc (updates room since) :timestamp now))))) + (resp-success (assoc (updates room since) :timestamp now :v *chat-version-number*))))) (defn validated-refresh [session params] (let [room-key (params :room) diff --git a/static/js/pichat.js b/static/js/pichat.js index 6279e48..db49bb1 100644 --- a/static/js/pichat.js +++ b/static/js/pichat.js @@ -352,6 +352,10 @@ function updateTopic(newTopic) { function refresh() { var onSuccess = function(json) { try { + if (Version != json.v) { + location.reload(); + } + Timestamp = json.timestamp; $.map(json.messages, function(msg){ MessageContentCache[msg.msg_id.toString()] = msg.content }) diff --git a/template/browser.st b/template/browser.st index 8cb6403..4ebcd1b 100644 --- a/template/browser.st +++ b/template/browser.st @@ -3,38 +3,40 @@ <title>dump.fm | Image Search Beta</title> $head()$ <link rel="stylesheet" type="text/css" href="/static/css/browser.css"> - <script type="text/javascript" src="/static/gritter/js/jquery.gritter.js"></script> - <link rel="stylesheet" type="text/css" href="/static/gritter/css/jquery.gritter.css" /> - - + <script type="text/javascript" src="/static/gritter/js/jquery.gritter.js"></script> + <link rel="stylesheet" type="text/css" href="/static/gritter/css/jquery.gritter.css" /> <script> - jQuery(document).ready(initChat); - var Nick = $json_user_nick$; - var Room = $json_room_key$; - var Timestamp = $timestamp$; - var PostedMessages = []; - var IsAdmin = "$isadmin$"; + jQuery(document).ready(initChat); + var Nick = $json_user_nick$; + var Room = $json_room_key$; + var Timestamp = $timestamp$; + var Version = $version$; +$if(isadmin)$ + var IsAdmin = true; +$else$ + var IsAdmin = false; +$endif$ var growlize = true; </script> <style> iframe { - z-index: 50000; - position: fixed; - top: 300px; - right: 25px; + z-index: 50000; + position: fixed; + top: 300px; + right: 25px; - width:100%; - height:100%; - padding:0px; - background-color: #fff; - position:absolute; - top:0px; left:0px; - border:none; + width:100%; + height:100%; + padding:0px; + background-color: #fff; + position:absolute; + top:0px; left:0px; + border:none; } </style> - + </head> <body> $banner()$ @@ -46,26 +48,26 @@ <div id="loghead"></div> </div> - </div> - <div id="messagePane"> - <div id="messageList"> - <iframe src="/static/search/browser.html" allowtransparency="true" scrolling="auto" ></iframe> - </div> - + </div> + <div id="messagePane"> + <div id="messageList"> + <iframe src="/static/search/browser.html" allowtransparency="true" scrolling="auto" ></iframe> </div> - </div> - </div> + + </div> + </div> </div> </div> </div> - - </div> - <div id="footerc"> - <p> - $footer()$</p> - <p> - </p> - </div> - </body> +</div> + +</div> +<div id="footerc"> + <p> + $footer()$</p> + <p> + </p> +</div> +</body> </html> diff --git a/template/chat.st b/template/chat.st index 239f5b9..8c290b7 100644 --- a/template/chat.st +++ b/template/chat.st @@ -18,6 +18,7 @@ $endif$ var Nick = $json_user_nick$; var Room = $json_room_key$; var Timestamp = $timestamp$; + var Version = $version$; $if(isadmin)$ var IsAdmin = true; $else$ |
