summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/site.clj42
-rwxr-xr-xsrc/utils.clj30
-rw-r--r--template/goodies.st71
-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.st105
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>