From a613013fb60a8648b87691ebd50db1de081cddda Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Thu, 4 Mar 2010 08:37:28 -0500 Subject: Initial topiclist --- src/site.clj | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/site.clj b/src/site.clj index 2c41946..5820a48 100755 --- a/src/site.clj +++ b/src/site.clj @@ -369,6 +369,21 @@ (defn valid-deadline? [deadline] deadline) +(defn topic-map-from-room [r] + (let [topic (or @(r :topic) {})] + {"key" (r :key) + "topic" (topic :topic) + "deadline" (topic :deadline) + "maker" (topic :maker)})) + +(defn validate-topic-list [session] + (if (session :is_admin) + (let [st (fetch-template "topic_list" session)] + (.setAttribute st "rooms" + (to-array (map topic-map-from-room (vals @rooms)))) + (.toString st)) + [404 "UNKNOWN_ROOM"])) + (defn set-topic! [room topic deadline maker] (ref-set (room :topic) {:topic topic @@ -650,6 +665,7 @@ (POST "/msg" (validated-msg session params)) (POST "/submit-registration" (register session params)) (POST "/update-profile" (update-profile session params)) + (GET "/topic-list" (validate-topic-list session)) (POST "/set-topic" (validate-set-topic session params)) (GET "/about_us" (serve-template "about_us" session)) (GET "/goodies" (serve-template "goodies" session)) @@ -713,7 +729,6 @@ ([script] {:port 8080}) ([script port] {:port (maybe-parse-int port)})) -(prn *command-line-args*) (def options (apply parse-command-args *command-line-args*)) (start-user-flusher!) -- cgit v1.2.3-70-g09d2 From 137fd71eced7732550f448dc42e2422340241d7b Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Thu, 4 Mar 2010 23:02:10 -0500 Subject: Removed stats --- src/utils.clj | 34 ---------------------------------- 1 file changed, 34 deletions(-) (limited to 'src') diff --git a/src/utils.clj b/src/utils.clj index 5a2c913..3180e89 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -40,40 +40,6 @@ (doall rs)))) :count)) - -;; Stats - -(defn msg-stats [ts] - (let [qry (str "SELECT created_on::date, count(*) FROM messages " - "GROUP BY created_on::date " - "ORDER BY created_on::date")] - (do-select [qry]))) - -(defn new-user-stats [ts] - (let [qry (str "SELECT created_on::date, count(*) FROM users " - "GROUP BY created_on::date " - "ORDER BY created_on::date")] - (do-select [qry]))) - -(defn msgs-per-user-stats [ts] - true) - -(def *stat-map* {"msgs" msg-stats - "new users" new-user-stats - "msgs per user" msgs-per-user-stats}) - -(defn stats [session params] - (let [stat (params :stat) - ts (params :timescale)] - (if-let [f (*stat-map* stat)] - (resp-success (f ts)) - (resp-error "UNKNOWN STAT")))) - -(defn validated-stats [session params] - (if (session :is_admin) - (stats session params) - (resp-error "BAD_REQUEST"))) - ;; Parsing (defn maybe-parse-int -- cgit v1.2.3-70-g09d2 From e8142b2742433ea26f6434e5933cddea8b4711c2 Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Thu, 4 Mar 2010 23:03:31 -0500 Subject: initial directory --- src/site.clj | 31 ++++++++++++++++++++++++++++--- static/js/pichat.js | 7 +++++++ template/directory.st | 38 +++++++++++++++++++++++++++++++++++++- 3 files changed, 72 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/site.clj b/src/site.clj index 9460187..be19830 100755 --- a/src/site.clj +++ b/src/site.clj @@ -145,6 +145,15 @@ "avatar" (escape-html (u :avatar))} {"nick" (u :nick)})) +(defn process-directory-listing [d] + (let [base {"nick" (escape-html (d :nick)) + "content" (escape-html (d :content)) + "count" (d :count)} + avatar (d :avatar)] + (if (non-empty-string? avatar) + (assoc base "avatar" avatar) + base))) + (defn prepare-user-list [room] (map process-user (sort-by #(% :nick) (vals @(room :users))))) @@ -364,10 +373,27 @@ ;; Directory (def *per-directory-page* 25) +(def *update-directory* true) +(def *update-directory-ms* (* 60 60 1000)) + +(defn directory-search [offset] + (let [qry (str "SELECT u.nick, u.avatar, m.content " + "FROM users u, messages m " + "WHERE m.message_id = " + " (SELECT n.message_id FROM messages n " + " WHERE n.user_id = u.user_id ORDER BY n.created_on DESC LIMIT 1) " + "ORDER BY (SELECT COUNT(*) FROM messages where user_id = u.user_id) " + "LIMIT ? OFFSET ?")] + (do-select [qry *per-directory-page* (* offset *per-directory-page*)]))) (defn directory [session offset] - (let [st (fetch-template "directory" session)] - + (let [st (fetch-template "directory" session) + users (to-array (map process-directory-listing (directory-search offset)))] + (.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))) (.toString st))) ;; Topics @@ -669,7 +695,6 @@ (-> request :route-params :room) (-> request :route-params :offset) params)) - (GET "/stats" (validated-stats session params)) ;; TODO: validate POST Referrer headers for POSTs (POST "/msg" (validated-msg session params)) (POST "/submit-registration" (register session params)) diff --git a/static/js/pichat.js b/static/js/pichat.js index b322ae9..fd33729 100755 --- a/static/js/pichat.js +++ b/static/js/pichat.js @@ -456,4 +456,11 @@ function blinkStart(){ function blinkStop(){ clearInterval(blinkTimer); +} + +function initDirectory() { + $(".linkify").each(function() { + var text = jQuery(this).text(); + jQuery(this).html(linkify(text)); + }); } \ No newline at end of file diff --git a/template/directory.st b/template/directory.st index 23960f0..c57c333 100644 --- a/template/directory.st +++ b/template/directory.st @@ -16,7 +16,15 @@ top: 57px; padding: 2em; } + .linkify img { + max-height: 300px; + max-width: 200px; + } + + $banner()$ @@ -24,7 +32,35 @@

DUMP STARS

-
+
+ + $if(users)$ + $users:{ u | +
+ +

$u.nick$

+ $if(u.avatar)$ + + $endif$ +
+
+ Last post: + $u.content$ +
+
+ }$ + $else$ + No more users! + $endif$ + + $if(prev)$ + BACK + $endif$ + $if(users)$ + MORE + $endif$ + +
-- cgit v1.2.3-70-g09d2