From 9da44d38f552388680c47ad592edeb2b114d67d4 Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Wed, 23 Feb 2011 00:06:37 -0500 Subject: add selector for frontpage --- src/site.clj | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'src/site.clj') diff --git a/src/site.clj b/src/site.clj index 2d1b295..9af02ca 100644 --- a/src/site.clj +++ b/src/site.clj @@ -192,16 +192,32 @@ ;; Landing -(defn front-page [session] - (let [st (fetch-template "frontpage" session) - date-str (format-yyyymmdd (Date.)) - dumps (map process-message-for-output - (fetch-redis-daily-hall date-str 0 20 (:user_id session)))] - (.setAttribute st "dumps" dumps) - (.toString st))) - -(defn landing [session] - (front-page session)) +(defn- parse-front-page-date [dt-str] + (if-let [dt (parse-yyyymmdd-date dt-str)] + [(advance-date dt -1) + dt + (advance-date dt 1)])) + +(def earliest-daily-hall (parse-yyyymmdd-date "20100503")) + +(defn front-page + ([session] (front-page session (format-yyyymmdd (Date.)))) + ([session dt-str] + (let [today (Date.)] + (if-let [[prev-date cur-date next-date] (parse-front-page-date dt-str)] + (cond (neg? (.compareTo cur-date earliest-daily-hall)) (redirect-to "/") + (pos? (.compareTo cur-date (Date.))) (redirect-to "/") + :else (let [st (fetch-template "frontpage" session) + dumps (map process-message-for-output + (fetch-redis-daily-hall cur-date 0 20 (:user_id session)))] + (.setAttribute st "dumps" dumps) + (if-not (.after next-date today) + (.setAttribute st "next_date" (format-yyyymmdd next-date))) + (if-not (.before prev-date earliest-daily-hall) + (.setAttribute st "prev_date" (format-yyyymmdd prev-date))) + (.setAttribute st "current_date" (format-yyyymmdd cur-date)) + (.toString st))) + (redirect-to "/"))))) (defn log-login [user_id ip] ;; i'm using do-cmds here because update-values can't deal with stuff like 'last_login = now()' @@ -1273,6 +1289,10 @@ WHERE user_id IN (GET "/terms" (serve-template "terms" session)) (GET "/error/ie" (serve-template "error_ie" session)) + (GET "/" (front-page session)) + (GET "/top/:dt" (front-page session (:dt params))) + + ;; Put username routes below all others in priority (GET "/:nick" (profile session (params :nick))) (GET "/:nick/" (profile session (params :nick))) @@ -1296,7 +1316,6 @@ WHERE user_id IN (GET "/:nick/:date/" (user-log-handler session (params :nick) (params :date) nil)) (GET "/:nick/:date/:msg" (user-log-handler session (params :nick) (params :date) (params :msg))) - (GET "/" (landing session)) (ANY "*" (unknown-page))) (defroutes multipart -- cgit v1.2.3-70-g09d2