diff options
| author | sostler <sbostler@gmail.com> | 2010-03-16 08:17:04 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-03-16 08:17:04 -0400 |
| commit | 0a9c5c4df26f3d8a9a322e6696667fab4be6676c (patch) | |
| tree | cdccd645402997bc0a648d6c7c0b0f33a10c2bb8 | |
| parent | 20fa5f469f7c289e7b0048d9d311e9d3a5cca7b2 (diff) | |
| parent | 68a356a3e49717aefed0a00d4ec0fd565b067d9f (diff) | |
Merged
| -rwxr-xr-x | src/site.clj | 136 | ||||
| -rwxr-xr-x | src/utils.clj | 4 | ||||
| -rw-r--r-- | static/directory.css | 361 | ||||
| -rw-r--r-- | static/directory.gif | bin | 0 -> 740 bytes | |||
| -rw-r--r-- | static/dumpmod2.png | bin | 0 -> 5142 bytes | |||
| -rwxr-xr-x | static/header.css | 13 | ||||
| -rw-r--r-- | static/help.html | 525 | ||||
| -rwxr-xr-x | static/index.html | 9 | ||||
| -rwxr-xr-x | static/js/pichat.js | 72 | ||||
| -rw-r--r-- | static/log.css | 16 | ||||
| -rw-r--r-- | static/pages.css | 2 | ||||
| -rwxr-xr-x | static/pichat.css | 20 | ||||
| -rwxr-xr-x | static/profile.css | 6 | ||||
| -rw-r--r-- | static/register.html | 10 | ||||
| -rw-r--r-- | static/simpledumplogo.png | bin | 0 -> 5045 bytes | |||
| -rw-r--r-- | static/terms.html | 87 | ||||
| -rw-r--r-- | static/trophyicon.gif | bin | 0 -> 243 bytes | |||
| -rwxr-xr-x | template/banner.st | 7 | ||||
| -rwxr-xr-x | template/chat.st | 9 | ||||
| -rw-r--r-- | template/directory.st | 63 | ||||
| -rwxr-xr-x | template/head.st | 2 | ||||
| -rw-r--r-- | template/help.st | 2 | ||||
| -rw-r--r-- | template/preload.st | 1 | ||||
| -rw-r--r-- | template/privacy.st | 4 | ||||
| -rwxr-xr-x | template/profile.st | 4 | ||||
| -rw-r--r-- | template/terms.st | 4 |
26 files changed, 935 insertions, 422 deletions
diff --git a/src/site.clj b/src/site.clj index 8608349..a57cf16 100755 --- a/src/site.clj +++ b/src/site.clj @@ -4,6 +4,7 @@ java.util.Date java.util.TimeZone java.io.File + javax.imageio.ImageIO org.apache.commons.codec.digest.DigestUtils javax.servlet.http.Cookie org.antlr.stringtemplate.StringTemplateGroup) @@ -59,6 +60,7 @@ "http://dump.fm" "http://localhost:8080")) +(def *root-directory* (System/getProperty "user.dir")) (def *image-directory* "images") (def *avatar-directory* "avatars") @@ -74,15 +76,23 @@ (defn swap [f] (fn [& more] (apply f (reverse more)))) +(def YYYYMMDD-format (new SimpleDateFormat "yyyyMMdd")) + +(defn today [] + (.format YYYYMMDD-format (new Date))) + (def formatter (new SimpleDateFormat "h:mm a EEE M/d")) (defn non-empty-string? [s] (and s (> (count s) 0))) -(defn rel-join [& more] - (str-join (System/getProperty "file.separator") - (cons (System/getProperty "user.dir") - more))) +(defn open-file [dir-comps filename] + (let [d (str-join (System/getProperty "file.separator") + (cons *root-directory* dir-comps)) + f (str-join (System/getProperty "file.separator") + [d filename])] + (.mkdir (new File d)) + (new File f))) (defn sha1-hash [& more] (DigestUtils/shaHex (apply str more))) @@ -162,10 +172,13 @@ (vals @(room :users))))) (defn updates [room since] - {"users" (prepare-user-list room) - "messages" (map process-message-for-json - (new-messages room since)) - "topic" @(room :topic)}) + (let [m {"users" (prepare-user-list room) + "messages" (map process-message-for-json + (new-messages room since))} + topic @(room :topic)] + (if topic + (assoc m "topic" topic) + m))) (def *dumps-per-page* 20) @@ -430,8 +443,8 @@ (.setAttribute st "users" users) (cond (= offset 0) (.setAttribute st "prev" false) (= offset 1) (.setAttribute st "prev" "") - :else (.setAttribute st "prev" (str "/" (- offset 1)))) - (.setAttribute st "next" (str "/" (+ offset 1))) + :else (.setAttribute st "prev" (str "/" (dec offset)))) + (.setAttribute st "next" (str "/" (inc offset))) (.toString st))) ;; Topics @@ -458,21 +471,34 @@ [404 "UNKNOWN_ROOM"])) (defn set-topic! [room topic deadline maker] - (ref-set (room :topic) - {:topic topic - :deadline deadline - :maker maker})) + (dosync (ref-set (room :topic) + {:topic topic + :deadline deadline + :maker maker}))) + +(defn end-topic! [room] + (dosync (ref-set (room :topic) nil))) (defn validate-set-topic [session params] (let [room (@rooms (params :room)) topic (params :topic) - deadline (params :deadline)] + deadline (params :deadline) + maker (params :maker)] (cond (not (session :is_admin)) (resp-error "NOT_VIP") (not (valid-topic? topic)) (resp-error "INVALID_TOPIC") (not (valid-deadline? deadline)) (resp-error "INVALID_DEADLINE") (not room) (resp-error "INVALID_ROOM") + (not maker) (resp-error "NOT_MAKER") :else (do - (dosync (set-topic! room topic deadline (session :nick))) + (set-topic! room topic deadline maker) + (resp-success "OK"))))) + +(defn validate-end-topic [session params] + (let [room (@rooms (params :room))] + (cond (not (session :is_admin)) (resp-error "NOT_VIP") + (not room) (resp-error "INVALID_ROOM") + :else (do + (end-topic! room) (resp-success "OK"))))) ;; Chat @@ -580,17 +606,12 @@ (let [room (@rooms "RoomA") now (System/currentTimeMillis) nick (session :nick) - st (fetch-template "browser" session) - message-list (to-array - (map process-message-for-output - ; TODO: remove db query - (reverse (fetch-messages-by-room (room :room_id) false))))] + st (fetch-template "browser" session)] (if nick (dosync (login-user (user-struct-from-session session) room))) (let [user-list (to-array (prepare-user-list room))] (.setAttribute st "users" user-list)) - (.setAttribute st "messages" message-list) (.setAttribute st "roomkey" (room :key)) (.setAttribute st "isadminroom" (room :admin_only)) (.setAttribute st "json_room_key" (json-str (room :key))) @@ -628,31 +649,60 @@ ;; Upload +(def *max-image-height* 2000) +(def *max-image-width* 2000) +(def *vip-max-file-size* (mbytes 5)) ; don't be nuts guys +(def *max-file-size* (kbytes 750)) +(def *ignore-size-limit-for-vip* true) (def *avatar-dimensions* [50 50]) -(defn is-image-file? [path] - true) +(defn file-size-limit [vip] + (if (and *ignore-size-limit-for-vip* vip) + *vip-max-file-size* + *max-file-size*)) -(defn format-filename [s] +(defn is-file-too-big? [f vip] + (let [limit (file-size-limit vip)] + (if (> (.length f) limit) + (str "FILE_TOO_BIG " limit)))) + +(defn is-image-invalid? [f] + (try + (let [i (ImageIO/read f) + height (.getHeight i) + width (.getWidth i)] + (if (or (> width *max-image-width*) + (> height *max-image-height*)) + (str "INVALID_RESOLUTION " *max-image-width* " " *max-image-height*))) + (catch Exception _ "FILE_NOT_IMAGE"))) + +(defn format-filename [s nick] (let [spaceless (.replace s \space \-) + nick-clean (re-gsub #"[^A-Za-z0-9]" "" nick) subbed (re-gsub #"[^\w.-]" "" spaceless)] - (str (System/currentTimeMillis) "-" subbed))) + (str-join "-" [(System/currentTimeMillis) "dumpfm" nick-clean subbed]))) -(defn image-url-from-file [d f] - (str-join "/" [*server-url* d (.getName f)])) +(defn image-url-from-file [dir date file] + (str-join "/" [*server-url* dir date (.getName file)])) +(defn validate-upload [f vip] + (or (is-file-too-big? f vip) + (is-image-invalid? f))) (defn do-upload [session image room] - (let [filename (format-filename (:filename image)) - dest (File. (rel-join *image-directory* filename)) - url (image-url-from-file "images" dest) - msg-id (msg-db (session :user_id) (room :room_id) url) - msg (struct message-struct (session :nick) url (new Date) msg-id)] - (do - (dosync - (add-message msg room)) - (copy (:tempfile image) dest) - (resp-success url)))) + (if-let [err (validate-upload (image :tempfile) (session :is_admin))] + (resp-error err) + (let [filename (format-filename (:filename image) (session :nick)) + date (today) + dest (open-file [*image-directory* date] filename) + url (image-url-from-file "images" date dest) + msg-id (msg-db (session :user_id) (room :room_id) url) + msg (struct message-struct (session :nick) url (new Date) msg-id)] + (do + (dosync + (add-message msg room)) + (copy (:tempfile image) dest) + (resp-success url))))) (defn upload [session params] (let [room-key (params :room) @@ -660,7 +710,6 @@ image (params :image)] (cond (not nick) [200 "NOT_LOGGED_IN"] (not image) [200 "INVALID_REQUEST"] - (not (is-image-file? (image :filename))) [200 "INVALID_IMAGE"] (not (validate-room-access room-key session)) [200 "UNKNOWN_ROOM"] :else (do-upload session image (@rooms room-key))))) @@ -670,9 +719,10 @@ ;; N.B. -- Upload responses aren't JSON-evaluated (defn do-upload-avatar [session image] - (let [filename (format-filename (:filename image)) - dest (File. (rel-join *avatar-directory* filename)) - url (image-url-from-file "avatars" dest)] + (let [filename (format-filename (:filename image) (session :nick)) + date (today) + dest (open-file [*avatar-directory* date] filename) + url (image-url-from-file "avatars" date dest)] (do (copy-and-resize (:tempfile image) dest) (update-user-db (session :user_id) "avatar" url) @@ -683,7 +733,6 @@ (let [image (params :image)] (cond (not image) [200 "INVALID_REQUEST"] (not (session :nick)) [200 "NOT_LOGGED_IN"] - (not (is-image-file? (image :filename))) [200 "INVALID_IMAGE"] :else (do-upload-avatar session image)))) ;; 404 @@ -739,6 +788,7 @@ (POST "/update-profile" (update-profile session params)) (GET "/topic-list" (validate-topic-list session)) (POST "/set-topic" (validate-set-topic session params)) + (POST "/end-topic" (validate-end-topic session params)) (GET "/directory" (directory session 0)) (GET "/directory/:offset" (directory session (maybe-parse-int (-> request :route-params :offset) 0))) diff --git a/src/utils.clj b/src/utils.clj index 5af4edc..9a95430 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -19,6 +19,10 @@ (defn seconds [t] (* t 1000)) (defn minutes [t] (* t 60 1000)) +(defn kbytes [b] (* b 1024)) + +(defn mbytes [b] (* b 1024 1024)) + ;; JSON responses (def yyyy-mm-dd-formatter (new SimpleDateFormat "yyyy-MM-dd")) diff --git a/static/directory.css b/static/directory.css new file mode 100644 index 0000000..a04ecbd --- /dev/null +++ b/static/directory.css @@ -0,0 +1,361 @@ + #profile { + float: right; + padding: 20px; +width:180; + position:absolute; + top:29px; +left:545; + margin-top:34px; +background-color:#fff; + + + text-overflow: ellipsis-word; + background-position:top; + z-index:999; + min-height:600px; + + + line-height:1.5; + } +#profile h3{ +margin-top:12; +line-height:2; +color:#fff; +text-shadow: blue -2px -2px 0, red 2px 2px 0, green -6px 4px 0; +} +#profile h2{ +text-indent:-10; +margin-top:-7; +margin-bottom:15; +} +#logavatar{ +margin-left:-85; +height:25; +background-image:url(/static/leftarrow.png); +width:70; + background-repeat:no-repeat; + background-position:59 4; +margin-top:-20; +z-index:5555; + + +} +#logavatar img{ + max-width:50px; + width: expression(this.width > 50 ? 50: true); + max-height:50px; + height: expression(this.width > 50 ? 50: true); + max-width:50px; + border-top-left-radius:5px; + border-top-right-radius:5px; + -webkit-border-top-left-radius:5px; + -webkit-border-top-right-radius:5px; + -moz-border-radius-topleft:5px; + -moz-border-radius-topright:5px; + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-bottom-right-radius:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-bottomright:5px; +margin-top:0; +border:1px solid #f0e0d6; + box-shadow:2px 2px 5px #d8dbde; + -webkit-box-shadow:2px 2px 5px #d8dbde; + -moz-box-shadow:2px 2px 5px #d8dbde; + +} +#lolbanner{ + +margin-top:-22; +margin-bottom:45; +} +#chatrap{ + width:700; + + margin-left:auto; + margin-right: auto ; + + +} +#pnav{position:absolute; +padding-left:425; +margin-top:35; +background-position:top; +font-weight:bold; +margin-left:0; +text-align:left; + + + +} + +#infotxt{ +position:absolute; +top:; + border-top-left-radius:5px; + border-top-right-radius:5px; + -webkit-border-top-left-radius:5px; + -webkit-border-top-right-radius:5px; + -moz-border-radius-topleft:5px; + -moz-border-radius-topright:5px; + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-bottom-right-radius:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-bottomright:5px; +border:1px solid #ccc; +height:22; +margin-left:-30; +color:fff; +text-shadow: 1px 1px 1px #000; +padding-right:8; +text-transform:uppercase; + background-image:url(/static/upload.png); +margin-top:-54; +text-indent:5; +} +#pnavo{ +margin-top:-17; +padding:2; +width:85; +letter-spacing:-2; +text-indent:6; + border-top-left-radius:5px; + border-top-right-radius:5px; + -webkit-border-top-left-radius:5px; + -webkit-border-top-right-radius:5px; + -moz-border-radius-topleft:5px; + -moz-border-radius-topright:5px; + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-bottom-right-radius:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-bottomright:5px; +height:32; +text-transform:capitalize; + background-image:url(/static/upload.png); + + +} +#pnavn{ +position:absolute; +top:-17; +left:330; +letter-spacing:-2; +text-indent:5; +width:73; +height:32; +padding:2; +border:1px; + background-image:url(/static/upload.png); + border-top-left-radius:5px; + border-top-right-radius:5px; + -webkit-border-top-left-radius:5px; + -webkit-border-top-right-radius:5px; + -moz-border-radius-topleft:5px; + -moz-border-radius-topright:5px; + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-bottom-right-radius:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-bottomright:5px; + +} +#pnav a { + font-size: 30px; + color:#fff; +text-transform:lowercase; +text-shadow: blue -2px -2px 0, red 2px 2px 0, green -6px 4px 0; +} +pnav a:link { + text-decoration: none; +color:fff; +} +a:visited { + text-decoration: none; + color: #000; +} +#pnav a:hover { + text-decoration: none; + color: #fff; +text-shadow: blue 2px 2px 0, red -20px -2px 0, green 6px 4px 0; + + +} +a:active { + text-decoration: none; + color: #000; +} +#footer +{ + text-align:center; + position:absolute; + width:100%; + bottom:-55px; +line-height:1; + font-size:11px; +word-spacing:6px; + color: #000; + +} +#footer a { + font-size: 11px; + color: #000; +} +#footer a:link { + text-decoration: none; + font-size: 11px; +color:000; +} + +#footer a:hover { + text-decoration:none; + font-size: 11px; + color: #f0e; +} + +#log +{ + position:absolute; + + top:20px; + padding-top: 25px; + + + +} +#posts { + + + +} +.logged-dump img{ + max-width:500px; + width: expression(this.width > 500 ? 500: true); + max-height:400px; + height: expression(this.width > 500 ? 500: true); + border:0px; + z-index:4; + + + +} +.logged-dump{ + + max-width:500; + width:auto; +text-overflow: ellipsis-word; + padding: 18px; + font-family: Arial, Helvetica, sans-serif; + font-size: 12px; + text-transform: uppercase; + line-height:15px; + background-color:#fff; +border:1px solid #f0e0d6; + border-top-left-radius:15px; + border-top-right-radius:15px; + -webkit-border-top-left-radius:15px; + -webkit-border-top-right-radius:15px; + -moz-border-radius-topleft:15px; + -moz-border-radius-topright:15px; + border-bottom-left-radius:15px; + border-bottom-right-radius:15px; + -webkit-border-bottom-left-radius:15px; + -webkit-border-bottom-right-radius:15px; + -moz-border-radius-bottomleft:15px; + -moz-border-radius-bottomright:15px; +margin-top:20; + z-index:4; + + line-height:20px; + text-align: left; + + +} + .editable { + color: #0AA; + } + .editing { + color: #F0F; + } + div#avatar { + overflow: hidden; + text-overflow: ellipsis; + + padding-bottom:20px; + } + #contact { + + + + text-overflow: ellipsis-word; + } + #bio { + + text-overflow: ellipsis-word; + } + + input.inplace_field { + width: 100%; + } + + textarea.inplace_field { + width: 100%; + height: 50px; + } + + h2 { + + letter-spacing:-1px; +color:#087cff; + height:40px; + font-size:24px; + font-family:Arial, Helvetica, sans-serif; + font-weight:bold; + text-transform:capitalize; + + + text-shadow: 1px 3px 3px #c8cbce; +} + + + img#avatarPic { + max-height:250px; + border-top-left-radius:5px; + border-top-right-radius:5px; + -webkit-border-top-left-radius:5px; + -webkit-border-top-right-radius:5px; + -moz-border-radius-topleft:5px; + -moz-border-radius-topright:5px; + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-bottom-right-radius:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-bottomright:5px; + } + +#date{ +font-size:60%; +} +#headerbar{ +top:80; + background-image:url(/static/welcomebar.gif); +} +.invisible { display: none !important; } +body,td,th { + font-family: Arial, Helvetica, sans-serif; + background-color:#ffffee; + background-image:url(/static/chanbg.png); + background-repeat:repeat-x; + background-position:1 10; +background-attachment:fixed; + margin: 0; + + + +}@charset "UTF-8"; diff --git a/static/directory.gif b/static/directory.gif Binary files differnew file mode 100644 index 0000000..d66a2bf --- /dev/null +++ b/static/directory.gif diff --git a/static/dumpmod2.png b/static/dumpmod2.png Binary files differnew file mode 100644 index 0000000..c5140ff --- /dev/null +++ b/static/dumpmod2.png diff --git a/static/header.css b/static/header.css index 5b4e549..e3cb85d 100755 --- a/static/header.css +++ b/static/header.css @@ -46,8 +46,8 @@ background-repeat:repeat-x; position:absolute; font-size: 16px; height:22; -word-spacing:2; -width:365; +word-spacing:1; +width:455; color:#fff; text-indent:14; line-height:1.9; @@ -258,3 +258,12 @@ filter: progid:DXImageTransform.Microsoft.dropShadow(color=#c8cbce, offX=3, offY margin-left:-7000; height:0.1; } + +.no-cursor { cursor: none; } +.invisible { display: none !important; } +#cursor-big { position: absolute; z-index: 1000; } +#preload { + position: absolute; + left: 0px; + top: 0px; +}
\ No newline at end of file diff --git a/static/help.html b/static/help.html index a3b6377..e1a412f 100644 --- a/static/help.html +++ b/static/help.html @@ -1,260 +1,265 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> -<head> -<title>dump.fm help</title> -<link rel="stylesheet" href="/static/ChatBubble-simple.css" media="screen" /> -</head> - -<body style="width:475px; font-family: Arial, Helvetica, sans-serif;"> - -<div class="CBmsg CBmsgR CBblueR"> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - How do I post a picture on dump.fm? - </div> - <div class="CBb"><div></div></div> - </div> - <div class="CBiconR"><img src="/static/gagaq.png"></div> -</div> - -<br clear=all> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -Oh hai Gaga! It's Easy! Here are some ways...<br> - - </div> - <div class="CBb"><div></div></div> - </div> -</div> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -<b>Copy Image Location</b> Just copy the location(URL) of any image online and paste it into dump.fm's input bar, the image will show up like magic! You can also paste strings of image URLs to make montage. -<br> -<img src="/static/copydump.png"><br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - - - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -<b>Image Search</b> The image search tool is probably the easiest way to post. Simply enter a search term and see images. When you find one you like, just click "Dump This!" and the image will post. -<br><img src="/static/imagesearchhelp.png"><br> -You can also narrow down your search criteria by clicking on 'options' and choosing where the images come from, the file type, size..etc. -<br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - - - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -<b>Upload</b> an existing photo from your hard drive with the upload tool. -<br><img src="/static/uploadbuttonhelp.png"><br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -<b>Webcam</b> Select the webcam tool and take a photo of yourself. We wanna see! -<br><img src="/static/webcambuttonhelp.png"><br> - - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - - - - -<div class="CBmsg CBmsgR CBblueR"> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -Oh awesome! But how can I find cool images?? - </div> - <div class="CBb"><div></div></div> - </div> - <div class="CBiconR"><img src="/static/gagaq.png"></div> -</div> - - - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - <b>Google Image Search</b> Duh... but Gaga, there are plenty of tricks for Google images search too!<br> - For instance, you can search all the images on a site by using a 'site:URL' search. -<br><img src="/static/sitesearchhelp.png"><br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - <b>Picsearch.com:</b> Looking for some great animated GIFs? This search engine is the bomb. You can narrow down your search by doing an 'advanced search' where you can search only animated GIFs. Picsearch = treasure chest for images. -<br><img src="/static/Picsearch.gif"><br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - <b>MySpace.com</b> Unbeknownst to many, myspace offers a wealth of untaped images. All you have to do is to go myspace.com and in the search bar change the drop down option from 'people' to 'images' and enter your search term. You will surely dig up some diamonds. -<br><img src="/static/myspacehelp.png"><br> -For extra points try the "m trick"..<br> -Copy the URL of an image thumb nail in the search results and replace "m" with "l" and the image will show up full sized! -<br><img src="/static/myspacehelp2.png"><br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - <b>Facebook.com</b> You'd be surprised how funny your friends pics are you just have to look. -<br><img src="/static/facebooklol.jpeg"><br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - - -<div class="CBmsg CBmsgR CBblueR"> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - How do I set my icon and edit my profile? - </div> - <div class="CBb"><div></div></div> - </div> - <div class="CBiconR"><img src="/static/gagaq.png"></div> -</div> - -<br clear=all> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -Simply click on profile on the top bar and then hit 'edit profile'<br> -<img src="/static/editprofile.png"> - - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - - - - - - -<div class="CBmsg CBmsgR CBblueR"> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -Cool! I think I now understand the basics of dump.fm..<br> -But I still dont get.. can I email you about my questions? - </div> - <div class="CBb"><div></div></div> - </div> - <div class="CBiconR"><img src="/static/gagaq.png"></div> -</div> - -<br clear=all> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> - Gaga, we'd love to hear from you but first jstchill in dump.fm for a while and get the hang of it before emailing us.<br> - </div> - <div class="CBb"><div></div></div> - </div> -</div> - - - - - - - -<div class="CBmsg CBmsgR CBblueR"> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -No no, I have chilled a bunch here......... <br>....now I want to ask if it's ok if I send you a bag of money? -<br><img src="/static/bag_of_money_hg_wht.gif"><br> - </div> - <div class="CBb"><div></div></div> - </div> - <div class="CBiconR"><img src="/static/gagaq.png"></div> -</div> - -<br clear=all> - -<div class="CBmsg CBmsgL CBpinkL"> - <div class="CBiconL"><img src="/static/idontgetit.png"></div> - <div class="CBtxt"> - <div class="CBcontent"> - <div class="CBt"></div> -Yes, bags of money are accepted...<br><br> Email us at <a href="mailto:info@dump.fm"> info@dump.fm</a> and we will arrange for pickup. -<br><br> -<b> ~the dump.fm team</b> - - </div> - <div class="CBb"><div></div></div> - </div> - - - -</body> -</html> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>dump.fm help</title>
+<link rel="stylesheet" href="/static/ChatBubble-simple.css" media="screen" />
+</head>
+
+<body style="width:475px; font-family: Arial, Helvetica, sans-serif;">
+
+<div class="CBmsg CBmsgR CBblueR">
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ How do I post a picture on dump.fm?
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+ <div class="CBiconR"><img src="/static/gagaq.png"></div>
+</div>
+
+<br clear=all>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+Oh hai Gaga! Its Easy! Here are some ways...<br>
+
+
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+
+<b>Copy Image Location</b> Just copy the location(URL) of any image online and paste it into dump.fm's input bar, the image will show up like magic! You can also paste strings of image URLs to make montage.
+<br>
+<img src="/static/copydump.png"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+<b>Image Search</b> The image search tool is probably the easiest way to post. Simply enter a search term and see images. When you find one you like, just click "Dump This!" and the image will post.
+<br><img src="/static/imagesearchhelp.png"><br>
+You can also narrow down your search criteria by clicking on 'options' and choosing where the images come from, the file type, size..etc.
+<br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+<b>Upload</b> an existing photo from your hard drive with the upload tool.
+<br><img src="/static/uploadbuttonhelp.png"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+<b>Webcam</b> Select the webcam tool and take a photo of yourself. We wanna see!
+<br><img src="/static/webcambuttonhelp.png"><br>
+
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+
+
+
+<div class="CBmsg CBmsgR CBblueR">
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+Oh awesome! But how can I find cool images??
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+ <div class="CBiconR"><img src="/static/gagaq.png"></div>
+</div>
+
+
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ <b>Google Image Search</b> Duh... but Gaga, there are plenty of tricks for Google images search too!<br>
+ For instance, you can search all the images on a site by using a 'site:URL' search.
+<br><img src="/static/sitesearchhelp.png"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ <b>Picsearch.com:</b> Looking for some great animated GIFs? This search engine is the bomb. You can narrow down your search by doing an 'advanced search' where you can search only animated GIFs. Picsearch = treasure chest for images.
+<br><img src="/static/Picsearch.gif"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ <b>MySpace.com</b> Unbeknownst to many, myspace offers a wealth of untaped images. All you have to do is to go myspace.com and in the search bar change the drop down option from 'people' to 'images' and enter your search term. You will surely dig up some diamonds.
+<br><img src="/static/myspacehelp.png"><br>
+For extra points try the "m trick"..<br>
+Copy the URL of an image thumb nail in the search results and replace "m" with "l" and the image will show up full sized!
+<br><img src="/static/myspacehelp2.png"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ <b>Facebook.com</b> You'd be surprised how funny your friends pics are you just have to look.
+<br><img src="/static/facebooklol.jpeg"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+
+<div class="CBmsg CBmsgR CBblueR">
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ How do I set my icon and edit my profile?
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+ <div class="CBiconR"><img src="/static/gagaq.png"></div>
+</div>
+
+<br clear=all>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+Simply click on profile on the top bar and then hit 'edit profile'<br>
+<img src="/static/editprofile.png">
+
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+
+
+
+
+
+<div class="CBmsg CBmsgR CBblueR">
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+Cool! I think I now understand the basics of dump.fm..<br>
+But I still dont get.. can I email you about my questions?
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+ <div class="CBiconR"><img src="/static/gagaq.png"></div>
+</div>
+
+<br clear=all>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+ Gaga, we'd love to hear from you but first jstchill in dump.fm for a while and get the hang of it before emailing us.<br>
+
+
+
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+</div>
+
+
+
+
+
+
+
+<div class="CBmsg CBmsgR CBblueR">
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+No no, I have chilled a bunch here......... <br>....now I want to ask if its ok if I send you a bag of money?
+<br><img src="/static/bag_of_money_hg_wht.gif"><br>
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+ <div class="CBiconR"><img src="/static/gagaq.png"></div>
+</div>
+
+<br clear=all>
+
+<div class="CBmsg CBmsgL CBpinkL">
+ <div class="CBiconL"><img src="/static/idontgetit.png"></div>
+ <div class="CBtxt">
+ <div class="CBcontent">
+ <div class="CBt"></div>
+Yes, bags of money are accepted...<br><br> Email us at <a href="mailto:info@dump.fm"> info@dump.fm</a> and we'll arrange for pickup.
+<br><br>
+<b> ~the dump.fm team</b>
+
+ </div>
+ <div class="CBb"><div></div></div>
+ </div>
+
+
+
+</body>
+</html>
diff --git a/static/index.html b/static/index.html index ed97c85..da98e29 100755 --- a/static/index.html +++ b/static/index.html @@ -213,6 +213,15 @@ label { <img src="/static/img/cursors/osx.hand.gif" class="no-cursor invisible" id="cursor-big"> </div> +<script type="text/javascript"> +var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); +document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); +</script> +<script type="text/javascript"> +try { +var pageTracker = _gat._getTracker("UA-12364576-1"); +pageTracker._trackPageview(); +} catch(err) {}</script> </body> </html> diff --git a/static/js/pichat.js b/static/js/pichat.js index fd33729..3775cfe 100755 --- a/static/js/pichat.js +++ b/static/js/pichat.js @@ -121,6 +121,10 @@ function submitMessage() { var content = $.trim($('#msgInput').val()); $('#msgInput').val(''); if (content == '') { return; } + if (content.length > 6666) { + alert("POST TOO LONG DUDE!"); + return; + } // this shouldn't just be client side :V PendingMessages[content] = true; var msg = { 'nick': Nick, 'content': content }; @@ -463,4 +467,72 @@ function initDirectory() { var text = jQuery(this).text(); jQuery(this).html(linkify(text)); }); +} + +//big hand stuff + + +function initBigHand(id){ + var cursorId = "#cursor-big" + var cursor = $(cursorId)[0] + + // jquery's reported element sizes are not exactly the same as the browser's 'mouseover' target sizes + // so we'll allow a few pixels extra + var fudgeFactor = 2 + + $(id).addClass("no-cursor") + + // i have to do this weirdly bc putting the cursor image where the mouse cursor is causes problems with mouse events: + // * it stops mousemove events on the image below the mouse cursor + // * it fucks up mouseover/out and even mouseenter/leave events, as well as click + + // so i am doing this: + // on mousing over the image: + // make cursor visible + // find image co-ords + // bind a global mousemove func + // bind cursor click event + // unbind mouseover + // mousemove func: + // move image to mouse co-ords + // if mouse co-ords are outside the image co-ords: + // make cursor invisible + // unbind mousemove func + // unbind cursor click event + + var mousemove = function(e){ + var y = e.pageY, x = e.pageX, coords = initBigHand.coords + + cursor.style.top = y + "px" + cursor.style.left = x - 32 + "px" // 32: (4 pixels * 8 pixels per big pixel) to line up pointy finger with cursor + if (y < coords.top || + y > coords.bottom || + x < coords.left || + x > coords.right) { + $(cursorId).addClass('invisible') + $(cursorId).css({"top": 0, "left": 0 }) + $(cursorId).unbind('click', cursorClick) + $('logo7').unbind('mousemove', mousemove) + $(id).mouseover(imageMouseOver) + } + } + + var cursorClick = function(){ $(id).click() } + + var imageMouseOver = function(){ + //console.log("moused over...") + initBigHand.coords = { + "left": $(id).offset().left - fudgeFactor, + "top": $(id).offset().top - fudgeFactor, + "right": $(id).offset().left + $(id).width() + fudgeFactor, + "bottom": $(id).offset().top + $(id).height() + fudgeFactor + } + $('body').mousemove(mousemove) + $(cursorId).click(cursorClick) + $(cursorId).removeClass('invisible') + $(id).unbind('mouseover', imageMouseOver) + } + + $(id).mouseover(imageMouseOver) + }
\ No newline at end of file diff --git a/static/log.css b/static/log.css index b5e6eda..356369a 100644 --- a/static/log.css +++ b/static/log.css @@ -169,27 +169,25 @@ a:active { #footer { text-align:center; - position:relative; + position:absolute; width:100%; - bottom:-50px; -line-height:3.8; - font-size:12px; -word-spacing:12px; -margin-left:6; -height:28px; + bottom:-55px; +line-height:1; + font-size:11px; +word-spacing:6px; color: #000; } #footer a { font-size: 11px; color: #000; - } #footer a:link { text-decoration: none; - font-size: 10px; + font-size: 11px; color:000; } + #footer a:hover { text-decoration:none; font-size: 11px; diff --git a/static/pages.css b/static/pages.css index b3af9b6..f082a42 100644 --- a/static/pages.css +++ b/static/pages.css @@ -200,7 +200,7 @@ a:active { bottom:0px; line-height:3.1; font-size:11px; -word-spacing:8px; +word-spacing:6px; height:28px; color: #000; diff --git a/static/pichat.css b/static/pichat.css index 6c693de..db2e3eb 100755 --- a/static/pichat.css +++ b/static/pichat.css @@ -26,7 +26,12 @@ overflow:hidden; #rapper { top: 0px; } +#trophy{ +position:fixed; +right:2; +bottom:30; +} #footerc { text-align:center; @@ -35,7 +40,7 @@ overflow:hidden; bottom:0px; line-height:3.1; font-size:11px; -word-spacing:8px; +word-spacing:6px; height:28px; color: #000; @@ -97,7 +102,7 @@ bottom:10px; } #msgInput { - width: 100%; + width: 99.7%; z-index:100; background-color:#FFF; margin-top: 16px; @@ -108,9 +113,6 @@ height:35px; font-size:20px; min-width:500px; box-shadow: 2px 3px 4px #eee; --webkit-box-shadow: 2px 3px 4px #eee; --moz-box-shadow: 2px 3px 4px #eee; -filter: progid:DXImageTransform.Microsoft.dropShadow(color=#eee, offX=3, offY=4, positive=true); } .msgInput { min-width:500px; @@ -126,7 +128,7 @@ margin-right:374; display:inline-block; width:120px; height:35px; -right:255px; +right:260px; font-size:20px; background-image:url(/static/urlbutton.png); text-indent:27; @@ -153,7 +155,7 @@ top:15px; width:120px; height:35px; background-position:center; -right:15; +right:20; top:15px; padding-bottom:1; text-indent:28; @@ -180,7 +182,7 @@ background-image:url(/static/cambutton.png); width:120px; height:35px; background-position:center; -right:15; +right:20; top:15px; padding-bottom:4; text-align:center; @@ -244,7 +246,7 @@ border:1px solid #999; width:120px; height:35px; background-position:center; -right:135; +right:140; top:15px; padding-bottom:1; text-indent:24; diff --git a/static/profile.css b/static/profile.css index 7b3fbcc..803e513 100755 --- a/static/profile.css +++ b/static/profile.css @@ -61,12 +61,12 @@ border-left:1px solid #f0e0d6; } #edit-toggle a{font-size:12; letter-spacing:; - text-shadow: 1px 1px 1px #333; + text-shadow: 1px 1px 1px #ccc; color:#fff; } #edit-toggle a:hover{font-size:12; letter-spacing:; -color:#fff; text-shadow: 1px 1px 1px #000; +color:#fff; text-shadow: 1px 1px 1px #ccc; } #logavatar img{ max-width:20px; @@ -207,7 +207,7 @@ a:active { bottom:-55px; line-height:1; font-size:11px; -word-spacing:8px; +word-spacing:6px; color: #000; } diff --git a/static/register.html b/static/register.html index c60a319..2490542 100644 --- a/static/register.html +++ b/static/register.html @@ -244,7 +244,15 @@ top:15px; </div> </div> - +<script type="text/javascript"> +var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); +document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); +</script> +<script type="text/javascript"> +try { +var pageTracker = _gat._getTracker("UA-12364576-1"); +pageTracker._trackPageview(); +} catch(err) {}</script> </body> </html> diff --git a/static/simpledumplogo.png b/static/simpledumplogo.png Binary files differnew file mode 100644 index 0000000..1355e72 --- /dev/null +++ b/static/simpledumplogo.png diff --git a/static/terms.html b/static/terms.html index daca69b..89bccd2 100644 --- a/static/terms.html +++ b/static/terms.html @@ -16,9 +16,10 @@ align="center" ><FONT size="+2" color="#000000"><B>Accepting the Terms of Servic<FONT size="+2" color="#000000"><B>e </H1 -><P +> +<P -><FONT size="+1"></B>The purpose of this website, <A href="http://www.dump.fm" target="_blank"> +><FONT size="+1"></B>The following Terms of Service has been adapted from the Termos of Service found at <a href="http://www.tumblr.com">Tumblr</a>. The purpose of this website, <A href="http://www.dump.fm" target="_blank"> <FONT color="#031CAA">www.dump.fm</A> <FONT color="#000000"> (the “Site”), owned and operated by Dump.Fm, Inc.(“Dump.Fm”), a New York corporation, is to provide web publishing services. Please read these terms of service (“Agreement”) carefully before using the Site or any services provided on theSite (collectively, “Services”). By using or accessing the Services, you agree to become bound by all the terms and conditions of this Agreement. If you do not agree to all the terms and conditions of this Agreement, do not use the Services. The Services are accessed by You (“Subscriber” or “You”) under the following terms and conditions: </P @@ -70,20 +71,9 @@ ><FONT size="+1"></B>Subscriber shall own all Subscriber Content that Subscriber contributes to the Site, but herebygrants and agrees to grant Dump.Fm a non-exclusive, worldwide, royalty-free, transferable rightand license (with the right to sublicense), to use, copy, cache, publish, display, distribute, modify,create derivative works and store such Subscriber Content and to allow others to do so (“ContentLicense”) in order to provide the Services. On termination of Subscriber’s membership to the Site and use of the Services, Dump.Fm shall make all reasonable efforts to promptly remove from the Site and cease use of the Subscriber Content; however, Subscriber recognizes and agrees that caching of or references to the Subscriber Content may not be immediately removed.Subscriber warrants, represents and agrees Subscriber has the right to grant Dump.Fm and theSite the rights set forth above. Subscriber represents, warrants and agrees that it will notcontribute any Subscriber Content that (a) infringes, violates or otherwise interferes with anycopyright or trademark of another party, (b) reveals any trade secret, unless Subscriber owns the trade secret or has the owner’s permission to post it, (c) infringes any intellectual property right of another or the privacy or publicity rights of another, (d) is libelous, defamatory, abusive, threatening, harassing, hateful, offensive or otherwise violates any law or right of any third party, (e) contains a virus, trojan horse, worm, time bomb or other computer programming routine orengine that is intended to damage, detrimentally interfere with, surreptitiously intercept orexpropriate any system, data or information, or (f) remains posted after Subscriber has beennotified that such Subscriber Content violates any of sections (a) to (e) of this sentence.Dump.Fm reserves the right to remove any Subscriber Content from the Site, suspend orterminate Subscriber’s right to use the Services at any time, or pursue any other remedy or relief available to Dump.Fm and/or the Site under equity or law, for any reason (including, but not limited to, upon receipt of claims or allegations from third parties or authorities relating to suchSubscriber Content or if Dump.Fm is concerned that Subscriber may have breached theimmediately preceding sentence), or for no reason at all. </P ></DIV -><DIV class="Sect" - -><H2 - -><FONT size="+2"><B>4. Themes </H2 -><P - -><FONT size="+1"></B>Dump.Fm makes available specialized HTML tags (“Dump.Fm Template Code”) for the design and layout of blog pages available for use on the Site (“Themes”). You can customize the Dump.Fm Template Code to create your own Themes for use on your blog page (“Custom Theme”). If you choose, you may also contribute Your Custom Themes to the Site for use by other users. Dump.Fm hereby grants you a non-exclusive, non-transferable, non-sublicenseableright and license to access, use, copy, modify and create derivative works of the Dump.Fm Template Code solely as necessary to create Custom Themes for use on the Site. You hereby grant and agree to grant Dump.Fm an exclusive, perpetual, sublicensable irrevocable, royalty-free right and license to use, copy, modify, and create derivative works of any Custom Theme contributed by You to the Site, including the HTML code and media assets therefor. </P -></DIV -><DIV class="Sect" - ><H2 -><FONT size="+2"><B>5. Restrictions</H2 +><FONT size="+2"><B>4. Restrictions</H2 ><P ><FONT size="+1"></B>Subscriber is responsible for all of its activity in connection with the Services and accessing theSite. Any fraudulent, abusive, or otherwise illegal activity or any use of the Services or Content in violation of this Agreement may be grounds for termination of Subscriber’s right to Services or to access the Site. Subscriber may not post or transmit, or cause to be posted or transmitted,any communication or solicitation designed or intended to obtain password, account, or privateinformation from any Dump.Fm user. </P @@ -95,7 +85,7 @@ ><H2 -><FONT size="+2"><B>6. Warranty disclaimer </H2 +><FONT size="+2"><B>5. Warranty disclaimer </H2 ><P ><FONT size="+1"></B>Dump.Fm has no special relationship with or fiduciary duty to Subscriber. Subscriber acknowledges that Dump.Fm has no control over, and no duty to take any action regarding: which users gains access to the Site; which Content Subscriber accesses via the Site; what effects the Content may have on Subscriber; how Subscriber may interpret or use the Content; or whatactions Subscriber may take as a result of having been exposed to the Content. Much of theContent of the Site is provided by and is the responsibility of the user or subscriber who postedthe Content. Dump.Fm does not monitor the Content of the Site and takes no responsibility forsuch Content. Subscriber releases Dump.Fm from all liability for Subscriber having acquired ornot acquired Content through the Site. The Site may contain, or direct Subscriber to sites containing, information that some people may find offensive or inappropriate. Dump.Fm makes no representations concerning any content contained in or accessed through the Site, andDump.Fm will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Site. </P @@ -116,46 +106,45 @@ ><H2 -><FONT size="+2"><B>7. Third party websites </H2 +><FONT size="+2"><B>6. Third party websites </H2 ><P ><FONT size="+1"></B>Users of the Site may gain access from the Site to third party sites on the Internet throughhypertext or other computer links on the Site. Third party sites are not within the supervision or control of Dump.Fm or the Site. Unless explicitly otherwise provided, neither Dump.Fm nor theSite make any representation or warranty whatsoever about any third party site that is linked tothe Site, or endorse the products or services offered on such site. Dump.Fm and the Site disclaim: (a) all responsibility and liability for content on third party websites and (b) anyrepresentations or warranties as to the security of any information (including, without limitation,credit card and other personal information) You might be requested to give any third party, and You hereby irrevocably waive any claim against the Site or Dump.Fm with respect to such sites and third party content. </P -></DIV ><DIV class="Sect" ><H2 -><FONT size="+2"><B>8. Registration and security</H2 +><FONT size="+2"><B>7. Registration and security</H2 ><P ><FONT size="+1"></B>As a condition to using Services, Subscriber will be required to register with Dump.Fm andselect a password and Dump.Fm URL. Subscriber shall provide Dump.Fm with accurate,complete, and updated registration information, including Subscriber’s e-mail address. Failure to do so shall constitute a breach of this Agreement, which may result in immediate termination of Subscriber's account. Subscriber may not (a) select or use as a Dump.Fm URL a name of another person with the intent to impersonate that person; or (b) use as a Dump.Fm URL a name subject to any rights of a person other than Subscriber without appropriate authorization. Dump.Fmreserves the right to refuse registration of, or cancel a Dump.Fm URL in its discretion. Subscriber shall be responsible for maintaining the confidentiality of Subscriber's Dump.Fmpassword. Subscriber is solely responsible for any use of or action taken under Subscriber’s password and accepts full responsibility for all activity conducted through Subscriber’s account and agrees to and hereby releases the Site and Dump.Fm from any and all liability concerningsuch activity. Subscriber agrees to notify Dump.Fm immediately of any actual or suspected loss, theft, or unauthorized use of Subscriber’s account or password. The Site will take reasonably security precautions when using the internet, telephone or other means to transport date or other communications, but expressly disclaims any and all liability for the accessing of any such datacommunications by unauthorized persons or entities. </P ><P -><FONT size="+2"><B>9. Indemnity</P +><FONT size="+2"><B>8. Indemnity</P ><P ><FONT size="+1"></B>Subscriber will indemnify and hold Dump.Fm, its directors, officers and employees, harmless,including costs and attorneys' fees, from any claim or demand made by any third party due to orarising out of Subscriber’s access to the Site, use of the Services, the violation of this Agreement by Subscriber, or the infringement by Subscriber, or any third party using the Subscriber's account, of any intellectual property or other right of any person or entity. </P ><P -><FONT size="+2"><B>10. Limitation of liability</P +><FONT size="+2"><B>9. Limitation of liability</P ><P ><FONT size="+1"></B>In no event shall Dump.Fm, its directors, officers, shareholders, employees or members be liablewith respect to the Site or the Services for (a) any indirect, incidental, punitive, or consequentialdamages of any kind whatsoever; (b) damages for loss of use, profits, data, images, SubscriberContent or other intangibles; (c) damages for unauthorized use, non-performance of the Site,errors or omissions; or (d) damages related to downloading or posting Content. Dump.Fm's andthe Site's collective liability under this agreement shall be limited to three hundred United StatesDollars. Some states do not allow the exclusion or limitation of incidental or consequentialdamages, so the above limitations and exclusions may not apply to Subscriber. </P ><P -><FONT size="+2"><B>11. Fees and payment</P +><FONT size="+2"><B>10. Fees and payment</P ><P ><FONT size="+1"></B>Some of the Services require payment of fees. Subscriber shall pay all applicable fees, asdescribed on the Site in connection with such Services selected by Subscriber. Dump.Fm reserves the right to change its pricing and to institute new charges at any time, upon ten (10) days prior notice to Subscriber, which will be posted on the Site and e-mailed to Subscriber along with a link to the modified fee schedule so that You can review it. Use of the Services by Subscriber following such notification constitutes Subscriber's acceptance of any new orincreased charges. </P ><P -><FONT size="+2"><B>12. Termination </P +><FONT size="+2"><B>11. Termination </P ><P ><FONT size="+1"></B>Either party may terminate the Services at any time by notifying the other party by any means.Dump.Fm may also terminate or suspend any and all Services and access to the Siteimmediately, without prior notice or liability, if Subscriber breaches any of the terms or conditions of this Agreement. Upon termination of Subscriber's account, Subscriber’s right to use the Services, access the Site, and any Content will immediately cease. All provisions of this Agreement which by their nature should survive termination shall survive termination, including,without limitation, ownership provisions, warranty disclaimers, and limitations of liability. Termination of Your access to and use of the Site and the Services shall not relieve Subscriber of any obligations arising or accruing prior to such termination or limit any liability which Subscriber otherwise may have to Dump.Fm or the Site, including without limitation anyindemnification obligations contained herein. </P ><P -><FONT size="+2"><B>13. Privacy</P +><FONT size="+2"><B>12. Privacy</P ><P ><FONT size="+1"></B>Please review our <A href="http://www.dump.fm/privacy"target="_blank"> @@ -164,38 +153,31 @@ <FONT color="#000000">, which governs the use of personal information on the Site andto which Subscriber agrees to be bound as a user of the Site. </P ><P -><FONT size="+2"><B>14. Meetups</P -><P - -><FONT size="+1"></B>The Site offers a platform for users to organize and attend face-to-face meetings at restaurants, bars and other venues all over the world (“Meetups”). However, Dump.Fm does not sponsor, oversee or in anyway control Meetups. You understand and agree that you organize and participate in Meetups at your own risk and Dump.Fm does not bear any responsibility orliability for the actions of any Dump.Fm users or any third parties who organize, attend or are otherwise involved in any Meetups. </P -><P - ->To the fullest extent permitted under applicable law, Dump.Fm disclaims all liability, regardless of the form of action, for the acts or omissions of other Dump.Fm users or any other third partyand will not be liable for any damages, direct, indirect, incidental and/or consequential arisingout of your organization or attendance at a Meetup or your interactions with any Dump.Fm user or third party you meet at such events. </P -><P - -><FONT size="+2"><B>15. Miscellaneous</P +><FONT size="+2"><B>13. Miscellaneous</P ><P -><FONT size="+1"></B>This Agreement (including the Privacy Policy), as modified from time to time, constitutes the entire agreement between You, the Site and Dump.Fm with respect to the subject matter hereof. This Agreement replaces all prior or contemporaneous understandings or agreements, written or oral, regarding the subject matter hereof. The failure of either party to exercise in any respect anyright provided for herein shall not be deemed a waiver of any further rights hereunder. Dump.Fmshall not be liable for any failure to perform its obligations hereunder where such failure resultsfrom any cause beyond Dump.Fm’s reasonable control, including, without limitation, mechanical, electronic or communications failure or degradation. If any provision of thisAgreement is found to be unenforceable or invalid, that provision shall be limited or eliminatedto the minimum extent necessary so that this Agreement shall otherwise remain in full force and effect and enforceable. This Agreement is not assignable, transferable or sublicensable by Subscriber except with Dump.Fm’s prior written consent. Dump.Fm may assign this Agreement in whole or in part at any time without Subscriber’s consent. This Agreement shall be governed by and construed in accordance with the laws of the state of Delaware without regard to theconflict of laws provisions thereof. No agency, partnership, joint venture, or employment is created as a result of this Agreement and Subscriber does not have any authority of any kind to bind Dump.Fm in any respect whatsoever. Any notice to the Site that is required or permitted by this Agreement shall be in writing and shall be deemed effective upon receipt, when sent by confirmed e-mail to info@dump.fm or when delivered in person by nationally recognized overnight courier or mailed by first class, registered or certified mail, postage prepaid, to</P +><FONT size="+1"></B>This Agreement (including the Privacy Policy), as modified from time to time, constitutes the entire agreement between You, the Site and Dump.Fm with respect to the subject matter hereof. This Agreement replaces all prior or contemporaneous understandings or agreements, written or oral, regarding the subject matter hereof. The failure of either party to exercise in any respect anyright provided for herein shall not be deemed a waiver of any further rights hereunder. Dump.Fm shall not be liable for any failure to perform its obligations here under where such failure results from any cause beyond Dump.Fm’s reasonable control, including, without limitation, mechanical, electronic or communications failure or degradation. If any provision of thisAgreement is found to be unenforceable or invalid, that provision shall be limited or eliminatedto the minimum extent necessary so that this Agreement shall otherwise remain in full force and effect and enforceable. This Agreement is not assignable, transferable or sublicensable by Subscriber except with Dump.Fm’s prior written consent. Dump.Fm may assign this Agreement in whole or in part at any time without Subscriber’s consent. This Agreement shall be governed by and construed in accordance with the laws of the state of Delaware without regard to theconflict of laws provisions thereof. No agency, partnership, joint venture, or employment is created as a result of this Agreement and Subscriber does not have any authority of any kind to bind Dump.Fm in any respect whatsoever. Any notice to the Site that is required or permitted by this Agreement shall be in writing and shall be deemed effective upon receipt, when sent by confirmed e-mail to info@dump.fm or when delivered in person by nationally recognized overnight courier or mailed by first class, registered or certified mail, postage prepaid, to</P ><P ><I>Dump.Fm, Inc., 90-11 35th Ave Apt. 1L Jackson Hts, NY, Attn: Legal Dept. </I></P -></DIV -></DIV -><DIV class="Part" - -><H1 +> +<p><DIV class="Sect" -><FONT size="+2"><B>16. Copyright Policy</H1 -><P +> + <H1 -><FONT size="+1"></B>Dump.Fm has adopted the following policy toward copyright infringement with respect to theSite in accordance with the Digital Millennium Copyright Act, a copy of which is located at <A href="#http://www.loc.gov/copyright/legislation/dmca.pdf"> +><FONT size="+2"><B>14. Copyright Policy</b></H1 +></P +> +<p></B>Dump.Fm has adopted the following policy toward copyright infringement with respect to the Site in accordance with the Digital Millennium Copyright Act, a copy of which is located at <A href="#http://www.loc.gov/copyright/legislation/dmca.pdf"> <FONT color="#031CAA">http://www.loc.gov/copyright/legislation/dmca.pdf</A> <FONT color="#000000">. The address of Dump.Fm's Designated Agent for copyright takedown notices (“Designated Agent”) is listed below. </P -><DIV class="Sect" +></div> +<DIV class="Sect" -><H2 +></p> + <H2 ><FONT size="+1"><B>Reporting Copyright Infringements </H2 ><P @@ -223,9 +205,10 @@ address, telephone number and e-mail address. authorized by the copyright owner, its agent or law. </P ></LI -><LI +> +<LI ->A statement made under penalty of perjury that the information provided in the notice is accurate and that the Notifying Party is authorized to make the complaint on behalf of thecopyright owner. </P +>A statement made under penalty of perjury that the information provided in the notice is accurate and that the Notifying Party is authorized to make the complaint on behalf of the copyright owner. </P ></LI ></OL ><P @@ -252,9 +235,10 @@ authorized by the copyright owner, its agent or law. ><H2 ><FONT size="+1"><B>Filing Copyright Counterclaims </H2 -><P +> +<P -><FONT size="+1"></B>A subscriber who believes they are the wrongful subject of a copyright takedown notice, may filea counter notification with Dump.Fm, by providing the following items in writing to theDesignated Agent at the address below: </P +><FONT size="+1"></B>A subscriber who believes they are the wrongful subject of a copyright takedown notice, may filea counter notification with Dump.Fm, by providing the following items in writing to the Designated Agent at the address below: </P ><UL type="disc" ><LI @@ -274,13 +258,14 @@ authorized by the copyright owner, its agent or law. >The following statement: "I swear, under penalty of perjury, that I have a good faith beliefthat the material was removed or disabled as a result of a mistake or misidentification of the material to be removed or disabled." </P ></LI ></UL -><P +> +<P ->• User’s signature.Upon receipt of a counterclaim, Dump.Fm will forward it to the party who submitted the originalcopyright infringement claim. The original complainant will then have 10 days to notify us that he or she has filed legal action relating to the allegedly infringing material. If Dump.Fm does notreceive any such notification within 10 days, we may restore the material to the Site. </P +>• User’s signature.Upon receipt of a counterclaim, Dump.Fm will forward it to the party who submitted the original copyright infringement claim. The original complainant will then have 10 days to notify us that he or she has filed legal action relating to the allegedly infringing material. If Dump.Fm does not receive any such notification within 10 days, we may restore the material to the Site. </P ></DIV ></DIV> - +</p> </div> </div> diff --git a/static/trophyicon.gif b/static/trophyicon.gif Binary files differnew file mode 100644 index 0000000..faf68ef --- /dev/null +++ b/static/trophyicon.gif diff --git a/template/banner.st b/template/banner.st index d029a2d..4b19bad 100755 --- a/template/banner.st +++ b/template/banner.st @@ -1,3 +1,4 @@ + <div id="rapper7"> <div id="header7"> <div id="logoicons"> @@ -15,6 +16,7 @@ <li><div id="lastli"><a href="/">.</a></div></li> <li><a href="/log"><img src="/static/text.gif" > Log</a></li> <li><a href="/u/$user_nick$"><img src="/static/home4.gif"/> Profile</a></li> + <li><a href="/directory"><img src="/static/directory.gif"/> Directory</a></li> <li><a href="/browser"><img src="/static/image_draw.gif" /> Image Search</a></li> </ul> $else$ @@ -42,7 +44,10 @@ </div> <div align="center"><br /></div> + </div> </div> - +<div id="preload"> + <img src="/static/img/cursors/osx.hand.gif" class="no-cursor invisible" id="cursor-big"> +</div> diff --git a/template/chat.st b/template/chat.st index 0d453d8..9dc7d3a 100755 --- a/template/chat.st +++ b/template/chat.st @@ -4,6 +4,7 @@ $head()$ <link rel="stylesheet" type="text/css" href="/static/pichat.css"> <script type="text/javascript" src="/static/webcam/webcam.js"></script> + <script type="text/javascript" src="/static/js/tooltip.js"></script> <script> jQuery(document).ready(initChat); var Nick = $json_user_nick$; @@ -25,6 +26,13 @@ setupUpload('upload', Room); }); } + 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()} +} + </script> </head> <body onload="MM_preloadImages('/static/thumbs_up_sm.gif')"> @@ -71,6 +79,7 @@ <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"> + <div id="trophy"><a href="javascript:pop('http://www.likeneveralways.com/trash/count/index.php');"class="tooltip" title="Contest Counter"><img src="/static/trophyicon.gif"></a></div> </div> $endif$ </div> diff --git a/template/directory.st b/template/directory.st index 7f78265..bf6979c 100644 --- a/template/directory.st +++ b/template/directory.st @@ -1,26 +1,8 @@ <html> <head> - <title>dump.fm Directory</title> + <title>dump.fm</title> $head()$ - <style> - body { - background-attachment: fixed; - background-color: #FFE; - background-image: url(http://localhost:8080/static/chanbg.png); - background-position: 1px 10px; - background-repeat: repeat-x; - font-family: Arial, Helvetica, sans-serif; - } - #main { - position: absolute; - top: 57px; - padding: 2em; - } - .linkify img { - max-height: 300px; - max-width: 200px; - } - </style> + <link rel="stylesheet" type="text/css" href="/static/directory.css"> <script> jQuery(document).ready(initDirectory); </script> @@ -28,37 +10,50 @@ </head> <body> $banner()$ - <div id="chatrap"> - <div id="headerbar"></div> - <div id="main"> - <h3>DUMP STARS</h3> - <br /> + <div id="chatrap"> + + <div id="log"> + <div id="loghead"></div> + <br> + + <div id="posts"> + + <br> + <center> + <h2> ✭ ✭ DUMP STARS ✭ ✭</h2> + <div id="lolbanner"> + <img src="/static/welcomebanner.gif"> + </div> + + </center> + $if(users)$ $users:{ u | - <div> + <div class="logged-dump"> <a href="/u/$u.nick$"> - <h2>$u.nick$</h2> + <b> $u.nick$</b> $if(u.avatar)$ - <img height="50" width="50" src="$u.avatar$"></img> + <div id="logavatar"> <img height="50" width="50" src="$u.avatar$"></img></div> $endif$ </a> - <div>Count: $u.cnt$</div> - <div> - <span>Last post:</span> + <div id="infotxt"><b><div style="display:none;">Count: $u.cnt$ !!</div> + last post </b></div> <span class="linkify">$u.content$</span> + <hr /> </div> - <hr /> + }$ $else$ <span>No more users!</span> $endif$ + <div id="pnav"> $if(prev)$ - <a href="/directory$prev$">BACK</a> + <div id="pnavn"><a href="/directory$prev$">BACK</a></div> $endif$ $if(users)$ - <a href="/directory$next$">MORE</a> + <div id="pnavo"> <a href="/directory$next$">MOAR!</a></div> $endif$ </div> diff --git a/template/head.st b/template/head.st index e83e687..e78ee8f 100755 --- a/template/head.st +++ b/template/head.st @@ -1,7 +1,7 @@ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="/static/jquery-1.3.2.min.js"></script> -<!-- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> --> +<!-- <script type="text/javascript" src="/static/jquery.min.js"></script> --> <!--<script type="text/javascript" src="/static/js/underscore-min.js"></script> --> <script type="text/javascript" src="/static/js/sha1.js"></script> <script type="text/javascript" src="/static/js/pichat.js"></script> diff --git a/template/help.st b/template/help.st index 6a4f150..f8510b2 100644 --- a/template/help.st +++ b/template/help.st @@ -25,7 +25,7 @@ jQuery(function() background-position:1 10; background-attachment:fixed;" onload=" javascript:CreateDropdownWindow('dump.fm', '360px', true, 'news', 30, 115); - javascript:CreateDropdownWindow('frequently asked questions', '520px', true, 'archive', 450, 60); + javascript:CreateDropdownWindow('frequently asked questions', '520px', true, 'archive', 440, 60); diff --git a/template/preload.st b/template/preload.st index ca8dbaa..1f51935 100644 --- a/template/preload.st +++ b/template/preload.st @@ -1,3 +1,4 @@ <div id="preload"> <img src="/static/img/cursors/osx.hand.gif" class="no-cursor invisible" id="cursor-big" /> + <img src="/static/upload.png" /> </div>
\ No newline at end of file diff --git a/template/privacy.st b/template/privacy.st index 22d4721..501664d 100644 --- a/template/privacy.st +++ b/template/privacy.st @@ -24,8 +24,8 @@ jQuery(function() background-repeat:repeat-x; background-position:1 10; background-attachment:fixed;" onload=" - javascript:CreateDropdownWindow('dump.fm', '360px', true, 'news', 30, 115); - javascript:CreateDropdownWindow('privacy agreement', '560px', true, 'archive', 450, 60); + javascript:CreateDropdownWindow('dump.fm', '360px', true, 'news', 20, 115); + javascript:CreateDropdownWindow('privacy agreement', '560px', true, 'archive', 420, 60); diff --git a/template/profile.st b/template/profile.st index 91b1b91..fad4b18 100755 --- a/template/profile.st +++ b/template/profile.st @@ -9,7 +9,7 @@ <script src="/static/js/ajaxupload.js"></script> <script type="text/javascript" src="/static/jquery.editinplace.1.0.1.packed.js"></script> - <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" /> + <script> jQuery(document).ready(initProfile); @@ -85,7 +85,7 @@ <h3> </h3> <h3> </h3> <div id="newuser"> - <h2>☺✌ Welcome to dump.fm ✌☺</h2> + <h2>Welcome to dump.fm</h2> <br><br> <h1>Step ❶</h1> diff --git a/template/terms.st b/template/terms.st index 6a409b5..b041848 100644 --- a/template/terms.st +++ b/template/terms.st @@ -24,8 +24,8 @@ jQuery(function() background-repeat:repeat-x; background-position:1 10; background-attachment:fixed;" onload=" - javascript:CreateDropdownWindow('dump.fm', '360px', true, 'news', 30, 115); - javascript:CreateDropdownWindow('terms of service', '560px', true, 'archive', 450, 60); + javascript:CreateDropdownWindow('dump.fm', '360px', true, 'news', 20, 115); + javascript:CreateDropdownWindow('terms of service', '560px', true, 'archive', 420, 60); |
