diff options
| author | Scott Ostler <scottbot9000@gmail.com> | 2010-08-15 04:17:13 -0400 |
|---|---|---|
| committer | Scott Ostler <scottbot9000@gmail.com> | 2010-08-15 04:17:13 -0400 |
| commit | 5d478aaeadd4608a31474090e50fb08786662bb5 (patch) | |
| tree | 60fd6c4719ce1da8f1641673c253be666b629212 | |
| parent | 07a3e9044ec9805d987ed5f8b28cc6fedaf203f2 (diff) | |
| parent | db03f7ccb8c6929354a1f033e03708a450aab8ce (diff) | |
Merge branch 'master' of ssh://dump.fm/pichat/repo
| -rw-r--r-- | src/rooms.clj | 2 | ||||
| -rw-r--r-- | src/site.clj | 14 | ||||
| -rw-r--r-- | static/js/fullscreen.js | 50 | ||||
| -rw-r--r-- | template/fullscreen.st | 20 |
4 files changed, 83 insertions, 3 deletions
diff --git a/src/rooms.clj b/src/rooms.clj index 8f54640..7997e97 100644 --- a/src/rooms.clj +++ b/src/rooms.clj @@ -127,7 +127,7 @@ (create-and-add-room! key) (throw (Exception. (str "Unable to create room " key)))))) -(defn- fetch-or-create-bot-id! [nick] +(defn fetch-or-create-bot-id! [nick] (:user_id (or (fetch-nick nick) (first diff --git a/src/site.clj b/src/site.clj index 4cde45d..567c3af 100644 --- a/src/site.clj +++ b/src/site.clj @@ -1085,6 +1085,13 @@ order by count desc limit ? offset ?") (not has-access) [200 "UNKNOWN_ROOM"] :else (do-upload session image (lookup-room room-key))))) +(defn upload-photo [session params] + (let [room-key (params :room) + nick "~photobot" + user-id (rooms/fetch-or-create-bot-id! nick) + image (params :image)] + (do-upload {:is_admin true :nick nick :user_id user-id} image (lookup-room room-key)))) + ;; N.B. -- Upload responses aren't JSON-evaluated (defn do-upload-avatar [session image] (let [filename (format-filename (:filename image) (session :nick)) @@ -1106,8 +1113,10 @@ order by count desc limit ? offset ?") (do-upload-avatar session image))))) (defn serve-meme [session meme] - (if-let [st (fetch-template meme session)] - (.toString st) + (if-let [st (fetch-template meme session)] + (let [now (System/currentTimeMillis)] + (.setAttribute st "timestamp" now) + (.toString st)) (unknown-page))) (defn hall-of-fame [session] @@ -1227,6 +1236,7 @@ order by count desc limit ? offset ?") (defroutes multipart (POST "/upload/message" (upload session params)) + (POST "/upload/photo" (upload-photo session params)) (POST "/upload/avatar" (upload-avatar session params))) ;; Add jpeg to list diff --git a/static/js/fullscreen.js b/static/js/fullscreen.js new file mode 100644 index 0000000..2cce5a1 --- /dev/null +++ b/static/js/fullscreen.js @@ -0,0 +1,50 @@ +function initFullscreen(){ + Room = "dumpfm"; + refresh() + ImageCache = [] + SeenImages = {} +} + +function scanMessagesForImages(messages){ + for(var m=0; m<messages.length; m++) { + var images = getImagesAsArray(messages[m].content) + for (var i = 0; i<images.length; i++){ + NextImage = new Image() + NextImage.onload = displayImage + NextImage.src = images[i] + } + } +} + +function displayImage(){ + $("#big-image").html('<img src="'+this.src+'">') +} + +function refresh() { + var onSuccess = function(json) { + try { + if (json.messages && json.messages.length) + scanMessagesForImages(json.messages); + Timestamp = json.timestamp; + } catch(e) { + + } + + setTimeout(refresh, 1000); + }; + + var onError = function(resp, textStatus, errorThrown) { + setTimeout(refresh, 1000); + }; + + $.ajax({ + type: 'GET', + timeout: 5000, + url: '/refresh', + data: { 'room': Room, 'since': Timestamp }, + cache: false, + dataType: 'json', + success: onSuccess, + error: onError + }); +}
\ No newline at end of file diff --git a/template/fullscreen.st b/template/fullscreen.st new file mode 100644 index 0000000..906cbe6 --- /dev/null +++ b/template/fullscreen.st @@ -0,0 +1,20 @@ +<html> +<head> +<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> +<script src="$domain$/static/js/pichat.js"></script> +<script src="$domain$/static/js/fullscreen.js"></script> +<style> +html, body, div, img { margin: 0; padding: 0; border: 0; overflow: hidden; } +#controls { display: none; } +#big-image img { width: 100%; height: 100%; } +</style> +</head> +<body> +<div id="big-image"></div> +<div id="controls"></div> +<script> +Timestamp = $timestamp$; +initFullscreen() +</script> +</body> +</html>
\ No newline at end of file |
