From c0270f5f4b54f527fe610de2411f4e309d353f9f Mon Sep 17 00:00:00 2001 From: Aaron Fischer Date: Wed, 29 Mar 2017 22:14:55 +0200 Subject: [PATCH] Add flash messages #10 --- resources/templates/layout.html | 6 ++++++ src/clj/yenu/handler.clj | 6 ++---- src/clj/yenu/layout.clj | 3 +-- src/clj/yenu/routes/admin.clj | 9 ++++++--- src/clj/yenu/routes/auth.clj | 16 ++++++++++------ src/clj/yenu/routes/core.clj | 9 +++++---- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/resources/templates/layout.html b/resources/templates/layout.html index d97379f..923c880 100644 --- a/resources/templates/layout.html +++ b/resources/templates/layout.html @@ -54,6 +54,12 @@
+ {% if flash.message %} + + {% endif %} + {% block content %} {% endblock %}
diff --git a/src/clj/yenu/handler.clj b/src/clj/yenu/handler.clj index 99df19e..f66499e 100644 --- a/src/clj/yenu/handler.clj +++ b/src/clj/yenu/handler.clj @@ -23,14 +23,12 @@ (wrap-routes middleware/wrap-csrf) (wrap-routes middleware/wrap-formats) (wrap-routes middleware/wrap-identity) - (wrap-routes middleware/wrap-auth) - ) + (wrap-routes middleware/wrap-auth)) (-> #'admin-routes (wrap-routes middleware/wrap-csrf) (wrap-routes middleware/wrap-formats) (wrap-routes middleware/wrap-identity) - (wrap-routes middleware/wrap-auth) - ) + (wrap-routes middleware/wrap-auth)) (route/not-found (:body (error-page {:status 404 diff --git a/src/clj/yenu/layout.clj b/src/clj/yenu/layout.clj index fb30e21..cb8c8cb 100644 --- a/src/clj/yenu/layout.clj +++ b/src/clj/yenu/layout.clj @@ -28,8 +28,7 @@ :page template :csrf-token *anti-forgery-token* :servlet-context *app-context* - :identity *identity* - ))) + :identity *identity*))) "text/html; charset=utf-8")) (defn error-page diff --git a/src/clj/yenu/routes/admin.clj b/src/clj/yenu/routes/admin.clj index 04a5653..221f628 100644 --- a/src/clj/yenu/routes/admin.clj +++ b/src/clj/yenu/routes/admin.clj @@ -36,13 +36,16 @@ (run! #(add-tag image-id %) all-tags))) (defroutes admin-routes - (GET "/upload" [] - (layout/render "admin/upload.html")) + (GET "/upload" [:as request] + (-> (layout/render + "admin/upload.html" + {:flash (:flash request)}))) (POST "/upload" [file title description tags] (-> (upload-file file) (images/process-image) (add-image-to-database title description tags)) - (redirect "/")) + (-> (redirect "/upload") + (assoc :flash {:message "Upload erfolgreich." :type "success"}))) (GET "/statistics" [] (layout/render "statistics.html")) diff --git a/src/clj/yenu/routes/auth.clj b/src/clj/yenu/routes/auth.clj index c2af0f2..00b7db4 100644 --- a/src/clj/yenu/routes/auth.clj +++ b/src/clj/yenu/routes/auth.clj @@ -15,16 +15,20 @@ user-identity (valid-identity password)] (if user-identity (let [updated-session (assoc session :identity user-identity)] - (-> (redirect "/") - (assoc :session updated-session)))))) + (-> (redirect "/page/1") + (assoc :flash {:message "Erfolgreich eingeloggt." :type "success"}) + (assoc :session updated-session))) + (-> (redirect "/login") + (assoc :flash {:message "Falsches Passwort." :type "danger"}))))) (defn logout! [request] - (-> (redirect "/") - (assoc :session {}))) + (-> (redirect "/login") + (assoc :session {}) + (assoc :flash {:message "Erfolgreich ausgeloggt." :type "success"}))) (defroutes auth-routes - (GET "/login" [] - (layout/render "login.html")) + (GET "/login" [:as request] + (layout/render "login.html", {:flash (:flash request)})) (POST "/login" [] login!) (GET "/logout" [] logout!)) diff --git a/src/clj/yenu/routes/core.clj b/src/clj/yenu/routes/core.clj index a168fbe..9b5f140 100644 --- a/src/clj/yenu/routes/core.clj +++ b/src/clj/yenu/routes/core.clj @@ -10,7 +10,7 @@ (int (Math/ceil (/ (:count (db/get-image-count)) images-on-page)))) -(defn index-page [current-page] +(defn index-page [current-page request] (let [image-count 15 offset (* (dec current-page) image-count) pages (number-of-pages image-count) @@ -18,7 +18,8 @@ (layout/render "index.html" {:images images :current-page current-page - :pages (range 1 (inc pages))}))) + :pages (range 1 (inc pages)) + :flash (:flash request)}))) (defn detail-page [image-id] (let [image (db/get-image {:id image-id}) @@ -39,8 +40,8 @@ (defroutes core-routes (GET "/" [] (redirect "/page/1")) - (GET "/page/:page-number" [page-number] - (index-page (Integer. page-number))) + (GET "/page/:page-number" [page-number :as request] + (index-page (Integer. page-number) request)) (GET "/show/:image-id" [image-id] (detail-page image-id)) (GET ["/images/:type/:hash.:ext"