summaryrefslogtreecommitdiff
path: root/lisp/webapps/bogenherr
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/webapps/bogenherr')
-rw-r--r--lisp/webapps/bogenherr/clojurescript/bogenherr/src/core.cljs62
-rw-r--r--lisp/webapps/bogenherr/site.lisp40
2 files changed, 68 insertions, 34 deletions
diff --git a/lisp/webapps/bogenherr/clojurescript/bogenherr/src/core.cljs b/lisp/webapps/bogenherr/clojurescript/bogenherr/src/core.cljs
index 6b670bb..d71243f 100644
--- a/lisp/webapps/bogenherr/clojurescript/bogenherr/src/core.cljs
+++ b/lisp/webapps/bogenherr/clojurescript/bogenherr/src/core.cljs
@@ -56,7 +56,7 @@
(declare render-password-submit)
(declare template-about-us)
(declare handler-about-us)
-(declare render-about-us)
+(declare render-lessons)
(declare template-about-us-view)
(declare handler-about-us-view)
(declare render-about-us-view)
@@ -166,15 +166,16 @@
(declare goto-register)
(declare comp-app)
(declare start-render)
-(declare start-nav-state)
-(declare reset-nav-state)
+(declare start-location)
+(declare reset-location)
+(declare reset-about-us-category)
(declare start)
(enable-console-print!)
(def jquery (js* "$"))
(def sql-formatter (time-format/formatter "yyyy-MM-dd HH:mm:ss"))
(def pretty-formatter (time-format/formatters :rfc822))
-(def nav-state (r/atom {:location "/home"}))
+(def nav-state (r/atom {:location "/home" :about-us-category nil}))
;; helper functions
@@ -228,22 +229,25 @@
(let [app-root (rdc/create-root (js/document.getElementById "app"))]
(rdc/render app-root [comp-app])))
-(defn start-nav-state []
+(defn start-location []
(cond (str/starts-with? (@nav-state :location) "/register/")
(goto-register (str/replace-first (@nav-state :location) "/register/" ""))
:else (goto-location (@nav-state :location))))
-(defn reset-nav-state [url]
+(defn reset-location [url]
(reset! nav-state (assoc @nav-state :location url)))
+(defn reset-about-us-category [category]
+ (reset! nav-state (assoc @nav-state :about-us-category category)))
+
(defn ^:dev/after-load start
([]
(start-render)
- (start-nav-state))
+ (start-location))
([url]
- (reset-nav-state url)
+ (reset-location url)
(start-render)
- (start-nav-state)))
+ (start-location)))
;; notifications
@@ -358,7 +362,7 @@
(goto-location "/login")
(get jsonobj "message")
(do
- (reset-nav-state "/home")
+ (reset-location "/home")
(render-home)
(render-menu)))))
@@ -374,7 +378,7 @@
(defn handler-logout [response]
(let [jsonobj (js->clj (js/JSON.parse response))]
(render-home "You are now logged out" "")
- (reset-nav-state "/home")
+ (reset-location "/home")
(render-menu)))
(defn render-logout []
@@ -524,10 +528,12 @@
:pwd2 (dommy/value (dommy/sel1 :#pwd2))}
:handler handler-password-submit}))
-;; about-us
+;; about-us (lessons, gigs)
(hiccups/defhtml template-about-us [jsonobj]
- [:h1 {:style "text-align: center"} "About the Studio"]
+ [:h1 {:style "text-align: center"}
+ (cond (= (@nav-state :about-us-category) "lessons") "About the Studio"
+ (= (@nav-state :about-us-category) "gigs") "Hire Me to Play")]
[:div {:id "content"}]
[:div {:id "modify"
:class "modal fade"
@@ -553,12 +559,16 @@
(defn handler-about-us [response]
(let [jsonobj (js->clj (js/JSON.parse response))]
+ (reset-about-us-category (get jsonobj "category"))
(notifications jsonobj)
(dommy/set-html! (dommy/sel1 :#body) (template-about-us jsonobj))
(render-about-us-view)))
-(defn render-about-us []
- (GET "/about-us" {:handler handler-about-us}))
+(defn render-lessons []
+ (GET "/lessons" {:handler handler-about-us}))
+
+(defn render-gigs []
+ (GET "/gigs" {:handler handler-about-us}))
;; about-us-view
@@ -576,7 +586,9 @@
(dommy/set-html! (dommy/sel1 :#markdown) (markdown-to-html (get jsonobj "content")))))
(defn render-about-us-view []
- (GET "/about-us/view" {:handler handler-about-us-view}))
+ (GET (cond (= (@nav-state :about-us-category) "lessons") "/lessons/view"
+ (= (@nav-state :about-us-category) "gigs") "/gigs/view")
+ {:handler handler-about-us-view}))
;; about-us-modify
@@ -589,12 +601,16 @@
(defn handler-about-us-modify [response]
(let [jsonobj (js->clj (js/JSON.parse response))]
(auth-notifications jsonobj)
- (dommy/set-html! (dommy/sel1 :#modify-title) "About Us - Modify")
+ (dommy/set-html! (dommy/sel1 :#modify-title)
+ (cond (= (@nav-state :about-us-category) "lessons") "About the Studio - Modify"
+ (= (@nav-state :about-us-category) "lessons") "For Hire - Modify"))
(dommy/set-html! (dommy/sel1 :#modify-body) (template-about-us-modify jsonobj))
(.modal (jquery "#modify"))))
(defn render-about-us-modify []
- (POST "/about-us/modify" {:handler handler-about-us-modify}))
+ (POST (cond (= (@nav-state :about-us-category) "lessons") "/lessons/modify"
+ (= (@nav-state :about-us-category) "gigs") "/gigs/modify")
+ {:handler handler-about-us-modify}))
;; about-us-modify-submit
@@ -612,7 +628,8 @@
(dommy/set-html! (dommy/sel1 :#markdown) (markdown-to-html (get jsonobj "content")))))
(defn render-about-us-modify-submit []
- (POST "/about-us/modify/submit"
+ (POST (cond (= (@nav-state :about-us-category) "lessons") "/lessons/modify/submit"
+ (= (@nav-state :about-us-category) "gigs") "/gigs/modify/submit")
{:format :raw
:params {:content (dommy/value (dommy/sel1 :#txt-content))}
:handler handler-about-us-modify-submit}))
@@ -1335,14 +1352,15 @@
;; location
(defn on-menu-clicked [handler]
- (reset-nav-state handler)
+ (reset-location handler)
(render-menu)
(cond (= handler "/home") (render-home)
(= handler "/login") (render-login)
(= handler "/logout") (render-logout)
(= handler "/profile") (render-profile)
(= handler "/password") (render-password)
- (= handler "/about-us") (render-about-us)
+ (= handler "/lessons") (render-lessons)
+ (= handler "/gigs") (render-gigs)
(= handler "/gallery") (render-gallery)
(= handler "/testimonials") (render-testimonials)
(= handler "/contact-us") (render-contact-us)
@@ -1364,6 +1382,6 @@
(set! (.-location js/document) "/"))
(defn goto-register [hash]
- (reset-nav-state "/users/register")
+ (reset-location "/users/register")
(render-menu)
(render-users-register hash))
diff --git a/lisp/webapps/bogenherr/site.lisp b/lisp/webapps/bogenherr/site.lisp
index f41bdf9..767a3fe 100644
--- a/lisp/webapps/bogenherr/site.lisp
+++ b/lisp/webapps/bogenherr/site.lisp
@@ -71,17 +71,29 @@
(defmacro .password-submit ()
`(password-submit-json id pwd pwd2))
-(defmacro .about-us ()
- `(about-us-json))
+(defmacro .lessons ()
+ `(about-us-json "lessons"))
-(defmacro .about-us-view ()
- `(about-us-view-json))
+(defmacro .lessons-view ()
+ `(about-us-view-json "lessons"))
-(defmacro .about-us-modify ()
- `(about-us-modify-json))
+(defmacro .lessons-modify ()
+ `(about-us-modify-json "lessons"))
-(defmacro .about-us-modify-submit ()
- `(about-us-modify-submit-json content))
+(defmacro .lessons-modify-submit ()
+ `(about-us-modify-submit-json "lessons" content))
+
+(defmacro .gigs ()
+ `(about-us-json "gigs"))
+
+(defmacro .gigs-view ()
+ `(about-us-view-json "gigs"))
+
+(defmacro .gigs-modify ()
+ `(about-us-modify-json "gigs"))
+
+(defmacro .gigs-modify-submit ()
+ `(about-us-modify-submit-json "gigs" content))
(defmacro .gallery ()
`(gallery-json))
@@ -186,10 +198,14 @@
(define-endpoint ("/profile/modify/submit" :method :post) (&post (id :parameter-type 'integer) (username :parameter-type 'string) (first_name :parameter-type 'string) (last_name :parameter-type 'string) (email :parameter-type 'string) (phone :parameter-type 'string)) .profile-modify-submit)
(define-endpoint ("/password" :method :get) () .password)
(define-endpoint ("/password/submit" :method :post) (&post (id :parameter-type 'integer) (pwd :parameter-type 'string) (pwd2 :parameter-type 'string)) .password-submit)
-(define-endpoint ("/about-us" :method :get) () .about-us)
-(define-endpoint ("/about-us/view" :method :get) () .about-us-view)
-(define-endpoint ("/about-us/modify" :method :post) () .about-us-modify)
-(define-endpoint ("/about-us/modify/submit" :method :post) (&post (content :parameter-type 'string)) .about-us-modify-submit)
+(define-endpoint ("/lessons" :method :get) () .lessons)
+(define-endpoint ("/lessons/view" :method :get) () .lessons-view)
+(define-endpoint ("/lessons/modify" :method :post) () .lessons-modify)
+(define-endpoint ("/lessons/modify/submit" :method :post) (&post (content :parameter-type 'string)) .lessons-modify-submit)
+(define-endpoint ("/gigs" :method :get) () .gigs)
+(define-endpoint ("/gigs/view" :method :get) () .gigs-view)
+(define-endpoint ("/gigs/modify" :method :post) () .gigs-modify)
+(define-endpoint ("/gigs/modify/submit" :method :post) (&post (content :parameter-type 'string)) .gigs-modify-submit)
(define-endpoint ("/gallery" :method :get) () .gallery)
(define-endpoint ("/gallery/view" :method :get) () .gallery-view)
(define-endpoint ("/gallery/add" :method :post) () .gallery-add)