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