diff options
| -rw-r--r-- | src/site.clj | 42 | ||||
| -rwxr-xr-x | src/utils.clj | 30 | ||||
| -rw-r--r-- | template/goodies.st | 71 | ||||
| -rw-r--r-- | template/rooms/butt.st (renamed from template/butt.st) | 0 | ||||
| -rw-r--r-- | template/rooms/chat.st (renamed from template/chat.st) | 0 | ||||
| -rw-r--r-- | template/rooms/vortex.st (renamed from template/vortex.st) | 0 | ||||
| -rw-r--r-- | template/webcam.st | 105 |
7 files changed, 43 insertions, 205 deletions
diff --git a/src/site.clj b/src/site.clj index ab7a17f..67fab63 100644 --- a/src/site.clj +++ b/src/site.clj @@ -4,12 +4,13 @@ java.util.Date java.io.File javax.imageio.ImageIO - javax.servlet.http.Cookie) + javax.servlet.http.Cookie + org.antlr.stringtemplate.StringTemplateGroup) (:use clojure.xml clojure.contrib.command-line clojure.contrib.duck-streams clojure.contrib.json.write - clojure.contrib.seq-utils + clojure.contrib.seq-utils clojure.contrib.sql clojure.contrib.str-utils clojure.contrib.def @@ -18,7 +19,7 @@ admin compojure email - fame + fame utils cookie-login session-sweeper @@ -650,8 +651,14 @@ order by count desc limit ? offset ?") (or (not (room :admin_only)) (is-vip? session)))) +(def default-room-template "chat") + +(defn lookup-room-template [session room-key template] + (or (fetch-template (str "rooms/" (or template room-key)) session) + (fetch-template (str "rooms/" default-room-template) session))) + (defn chat [session room template] - (if-let [st (fetch-template template session)] + (if-let [st (lookup-room-template session (:key room) template)] (let [now (System/currentTimeMillis) nick (session :nick) limit (if (:admin_only room) *vip-dumps-per-page* *dumps-per-page*) @@ -677,11 +684,13 @@ order by count desc limit ? offset ?") (.toString st)) [404 "UNKNOWN PAGE"])) -(defn validated-chat [session room-key template] - (let [room-key (if (= (lower-case room-key) "www") *default-room* room-key)] - (if (validate-room-access room-key session) - (chat session (lookup-room room-key) template) - (resp-error "UNKNOWN_ROOM")))) +(defn validated-chat + ([session room-key] (validated-chat session room-key nil)) + ([session room-key template] + (let [room-key (if (= (lower-case room-key) "www") *default-room* room-key)] + (if (validate-room-access room-key session) + (chat session (lookup-room room-key) template) + (resp-error "UNKNOWN_ROOM"))))) (defn refresh [session params room] (dosync @@ -754,9 +763,9 @@ order by count desc limit ? offset ?") ;; TODO: make work for all rooms (defn browser [session] (let [room (lookup-room *default-room*) - now (System/currentTimeMillis) - nick (session :nick) - st (fetch-template "browser" session)] + now (System/currentTimeMillis) + nick (session :nick) + st (fetch-template "browser" session)] (if nick (dosync (login-user (user-struct-from-session session) room))) @@ -1129,10 +1138,11 @@ order by count desc limit ? offset ?") (GET "/avatars/*" (serve-static *avatar-directory* (params :*)))) (defroutes pichat - (GET "http://:sub.dump.fm/" (validated-chat session (params :sub) "chat")) - (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub) "chat")) - (GET "/:room/chat" (validated-chat session (params :room) "chat")) - (GET "/chat" (validated-chat session *default-room* "chat")) + (GET "http://:sub.dump.fm/" (validated-chat session (params :sub))) + (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub))) + (GET "http://:sub.dump.fm/chat" (validated-chat session (params :sub) (params :t))) + (GET "/:room/chat" (validated-chat session (params :room))) + (GET "/chat" (validated-chat session *default-room*)) (GET "/chat/:t" (validated-chat session *default-room* (params :t))) (GET "http://:sub.dump.fm/log" (validated-log session (params :sub) "0" params)) diff --git a/src/utils.clj b/src/utils.clj index 4a3343f..1dc4a2c 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -263,22 +263,26 @@ ;; Templates (def template-group (new StringTemplateGroup "dumpfm" "template")) -(.setRefreshInterval template-group 3) +(.setRefreshInterval template-group 10) + +(defn initialize-template [st session] + (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)) + (.setAttribute "domain" config/*server-url*)) + (doto st + (.setAttribute "domain" config/*server-url*)))) (defn fetch-template [template session] (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)) - (.setAttribute "domain" config/*server-url*)) - (doto st - (.setAttribute "domain" config/*server-url*)))) - (catch Exception e nil))) + (initialize-template st session)) + (catch Exception e + nil))) (defn fetch-template-fragment [template] (.getInstanceOf template-group template)) @@ -305,6 +309,6 @@ `(if (is-vip? ~'session) ~e (unknown-page))) (defmacro if-super-vip [e] - "Evaluates expr if user is vip otherwise returns 404. Can only be used + "Evaluates expr if user is super-vip otherwise returns 404. Can only be used where session is defined." `(if (is-super-vip? ~'session) ~e (unknown-page))) diff --git a/template/goodies.st b/template/goodies.st deleted file mode 100644 index 4289c11..0000000 --- a/template/goodies.st +++ /dev/null @@ -1,71 +0,0 @@ -<html> - <head> - <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> - jQuery(document).ready(initChat); - var Nick = $json_user_nick$; - var Room = $json_room_key$; - var Timestamp = $timestamp$; - var PostedMessages = []; - var IsAdmin = "$isadmin$"; - var growlize = true; - </script> - - <style> - iframe { - 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; - } - </style> - - </head> - <body> - $banner()$ - <div id="chatrap"> - <div id="logc"> - <div id="content"> - - <div id="rapper"> - <div id="loghead"></div> - </div> - - </div> - <div id="messagePane"> - <div id="messageList"> - <iframe src="/static/search/imagesearch.html" allowtransparency="true" scrolling="auto" ></iframe> - </div> - - </div> - </div> - </div> - </div> -</div> -</div> - - </div> - <div id="footerc"> - <p> - $footer()$</p> - <p> - </p> - </div> - </body> - -</html> diff --git a/template/butt.st b/template/rooms/butt.st index e97390e..e97390e 100644 --- a/template/butt.st +++ b/template/rooms/butt.st diff --git a/template/chat.st b/template/rooms/chat.st index f4c4162..f4c4162 100644 --- a/template/chat.st +++ b/template/rooms/chat.st diff --git a/template/vortex.st b/template/rooms/vortex.st index c15c890..c15c890 100644 --- a/template/vortex.st +++ b/template/rooms/vortex.st diff --git a/template/webcam.st b/template/webcam.st deleted file mode 100644 index e3e653d..0000000 --- a/template/webcam.st +++ /dev/null @@ -1,105 +0,0 @@ -<!--/* - - _____ ___ ___ ___ ___ ___ - / /::\ /__/\ /__/\ / /\ / /\ /__/\ - / /:/\:\ \ \:\ | |::\ / /::\ / /:/_ | |::\ - / /:/ \:\ \ \:\ | |:|:\ / /:/\:\ / /:/ /\ | |:|:\ - /__/:/ \__\:| ___ \ \:\ __|__|:|\:\ / /:/~/:/ / /:/ /:/ __|__|:|\:\ - \ \:\ / /:/ /__/\ \__\:\ /__/::::| \:\ /__/:/ /:/ /__/:/ /:/ /__/::::| \:\ - \ \:\ /:/ \ \:\ / /:/ \ \:\~~\__\/ \ \:\/:/ \ \:\/:/ \ \:\~~\__\/ - \ \:\/:/ \ \:\ /:/ \ \:\ \ \::/ \ \::/ \ \:\ - \ \::/ \ \:\/:/ \ \:\ \ \:\ \ \:\ \ \:\ - \__\/ \ \::/ \ \:\ \ \:\ \ \:\ \ \:\ - \__\/ \__\/ \__\/ \__\/ \__\/ - -(c)2010 dump.fm --> - -<html> -<head> -$head()$ - <title>$roomname$ dump.fm</title> -$if(isadmin)$ - <link href="/static/css/pages.css" rel="stylesheet" type="text/css" media="screen" /> - <script type="text/javascript" src="/static/js/win.js"></script> -$endif$ - <script type="text/javascript" src="$domain$/static/js/invalid_domains.js"></script> - <script type="text/javascript" src="$domain$/static/webcam/webcam.js"></script> - <script type="text/javascript" src="$domain$/static/js/ajaxupload.js"></script> -$if(user_nick)$ - <script type="text/javascript" src="$domain$/json/$user_nick$/favorites"></script> -$endif$ - <script> - 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$ - if (Nick) { - jQuery(document).ready(function() { setupUpload('upload', Room); }); - } - function showAlert() { alert('MUST LOGIN'); } - var newwindow; - function pop(url) { - newwindow=window.open(url,'name','height=50,width=400,left=20,top=20,location=0,status=0,scrollbar=0,resizable=0'); - if (window.focus) {newwindow.focus()} - } - jQuery(startTitleUpdater); - jQuery(initChatMsgs); - $if(user_nick)$ // - $else$ - function showAlert() { - alert('Join dump.fm @ http://dump.fm/register'); - } - -$endif$ - </script> - <style> - #chat-wrapper { - position: absolute; - z-index: 1000000; - right: 100px; - bottom: 100px; - height: 40px; - width: 300px; - }; - </style> -</head> -<body> - - <div id="chatrap"> - - <div id="dcontent"> - <div id="messagetabs"></div> - <div id="rapper"> - </div> - - <div id="messagePane"> - - <div id="messageList"> - - - </div> - - <div id="msgInputDiv"> - <div id="msginputrapper"> <input id="msgInput" class="msgInput" type="input" /> </div> - <input id="msgSubmit" type="submit" value="Send"/> - - <input id="upload" value="Upload" type="submit"> - <input id="webcam-button-upload" value="Webcam" type="submit"> - <input id="webcam-button-snap" value="Send Pic" type="submit" class="invisible blink"> - <button id="palette-button"><img src="/static/img/palette.gif"></button> - </div><div id="effects-msg"class="invisible">click on your face for effects!</div> - </div> - - </div> - </div> - </div> - -$preload()$ -</body> -</html> |
