butiful devbar
							parent
							
								
									da8fb77fc0
								
							
						
					
					
						commit
						a2bd971596
					
				| @ -0,0 +1,24 @@ | |||||||
|  | .devbar { | ||||||
|  |     position: fixed; | ||||||
|  |     bottom: 0; | ||||||
|  |     left: 0; | ||||||
|  |     width: 100%; | ||||||
|  |     font-family: monospace; | ||||||
|  |     background-color: #ccc; | ||||||
|  | 
 | ||||||
|  |     ol { | ||||||
|  |         list-style-type: none; | ||||||
|  |         padding: 0; | ||||||
|  |         margin: 0; | ||||||
|  | 
 | ||||||
|  |         li { | ||||||
|  |             padding: .5rem; | ||||||
|  |             border: 1px solid black; | ||||||
|  |             margin: .5rem; | ||||||
|  | 
 | ||||||
|  |             pre { | ||||||
|  |                 margin: 0; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,45 @@ | |||||||
|  | (ns wanijo.devmode | ||||||
|  |   (:require [hiccup.core :as hcore])) | ||||||
|  | 
 | ||||||
|  | (def bar-entries (atom [])) | ||||||
|  | 
 | ||||||
|  | (defn send-to-bar [msg] | ||||||
|  |   (swap! bar-entries #(conj % msg))) | ||||||
|  | 
 | ||||||
|  | (defn devmode-on? [req] | ||||||
|  |   (let [query-param (get-in req [:query-params "dev"]) | ||||||
|  |         cookie (get-in req [:cookies "devmode" :value])] | ||||||
|  |     (or (= query-param "on") | ||||||
|  |         (and (= cookie "1") | ||||||
|  |              (not= query-param "off"))))) | ||||||
|  | 
 | ||||||
|  | (defn devbar [] | ||||||
|  |   (hcore/html | ||||||
|  |    [:section.devbar | ||||||
|  |     [:ol | ||||||
|  |      (for [entry @bar-entries] | ||||||
|  |        [:li [:pre entry]])]])) | ||||||
|  | 
 | ||||||
|  | (defn append-devbar [resp] | ||||||
|  |   (let [body (:body resp) | ||||||
|  |         new-body (clojure.string/replace | ||||||
|  |                   body "</body>" (str (devbar) "</body>"))] | ||||||
|  |     (assoc resp :body new-body))) | ||||||
|  | 
 | ||||||
|  | (defn wrap-devmode [handler] | ||||||
|  |   (fn [req] | ||||||
|  |     (let [on? (devmode-on? req) | ||||||
|  |           query-param? (get-in req [:query-params "dev"]) | ||||||
|  |           new-req (assoc-in req [:session :devmode] on?) | ||||||
|  |           resp (handler new-req) | ||||||
|  |           new-resp (cond | ||||||
|  |                      on? (-> resp | ||||||
|  |                              append-devbar | ||||||
|  |                              (assoc-in [:cookies :devmode] 1)) | ||||||
|  |                      (some? query-param?) (assoc-in | ||||||
|  |                                            resp | ||||||
|  |                                            [:cookies :devmode] | ||||||
|  |                                            (if on? 1 0)) | ||||||
|  |                      :else resp)] | ||||||
|  |       (reset! bar-entries []) | ||||||
|  |       new-resp))) | ||||||
					Loading…
					
					
				
		Reference in New Issue
	
	 Josha von Gizycki
						Josha von Gizycki