diff --git a/resources/templates/base.html b/resources/templates/base.html index 3f9928e..ef97912 100644 --- a/resources/templates/base.html +++ b/resources/templates/base.html @@ -28,9 +28,13 @@
  • Home
  • Library
  • + {% if user %} +
  • Roles
  • +
  • Logout
  • + {% else %}
  • Register
  • -
  • {% if user %}Logout - {% else %}Login{% endif %}
  • +
  • Login
  • + {% endif %}
  • About
  • {% if user %}
  • Logged in as {{user.username}}
  • diff --git a/resources/templates/issue-expert/list.html b/resources/templates/issue-expert/list.html index 0cd0efc..5050fe0 100644 --- a/resources/templates/issue-expert/list.html +++ b/resources/templates/issue-expert/list.html @@ -36,19 +36,16 @@ Add a new Followuprequest -Id +Elector -Elector_id +Visit -Visit_id +Issue -Issue_id - - -Method_id +Method   @@ -56,9 +53,6 @@ Method_id - - - @@ -79,9 +73,6 @@ Method_id {% for record in records %} -{{ record.id }} - - {{ record.elector_id_expanded }} diff --git a/src/clj/youyesyet/routes/rest.clj b/src/clj/youyesyet/routes/rest.clj index 37abfc5..f3358f2 100644 --- a/src/clj/youyesyet/routes/rest.clj +++ b/src/clj/youyesyet/routes/rest.clj @@ -140,7 +140,8 @@ params :visit_id (current-visit-id request))) 201) {:status 400 - :body (json/write-str "create-intention requires params: `option_id` + :body (json/write-str + "create-intention requires params: `option_id` and either `locality` or both `address_id` and `elector_id`.")}) request))) @@ -164,7 +165,32 @@ request))) +(defn update-elector-signature! + "Set the `signature` in the params of this `request` as the signature for + the elector whose `id` is in the params of this `request`." + [request] + (let [params (massage-params request)] + (if (and (:elector_id request)(:signature request)) + (valid-user-or-forbid + (with-params-or-error + (do-or-server-fail + (db/create-followuprequest! db/*db* params) + 201) + params + #{:elector_id :signature}) + request)) + {:status 400 + :body + (json/write-str + "update-elector-signature requires params `id` and `signature`.")})) + + (defroutes rest-routes - (GET "/rest/get-local-data" request (route/restricted (get-local-data request))) - (GET "/rest/create-intention" request (route/restricted (create-intention-and-visit! request))) - (GET "/rest/create-request" request (route/restricted (create-request-and-visit! request)))) + (GET "/rest/get-local-data" + request (route/restricted (get-local-data request))) + (GET "/rest/create-intention" + request (route/restricted (create-intention-and-visit! request))) + (GET "/rest/create-request" + request (route/restricted (create-request-and-visit! request))) + (GET "/rest/update-elector-signature" + request (route/restricted (update-elector-signature! request)))) diff --git a/src/cljs/youyesyet/canvasser_app/handlers.cljs b/src/cljs/youyesyet/canvasser_app/handlers.cljs index 3ab4419..c8d3feb 100644 --- a/src/cljs/youyesyet/canvasser_app/handlers.cljs +++ b/src/cljs/youyesyet/canvasser_app/handlers.cljs @@ -384,26 +384,20 @@ (reg-event-db :update-elector - (fn [db [_ args]] - (if (:signature (:elector db)) - (do - (js/console.log "Updating elector signature") - (add-to-feedback - (add-to-outqueue - db - {:elector (:elector db) - :action :update-elector-signature}) - :send-request)) - (assoc db :error "Please supply a telephone number to call")))) + (fn [db [_ elector]] + (js/console.log (str "Elector is " elector)) + db +)) (reg-event-db :set-consent-and-page (fn [db [_ args]] (let [page (:page args) - elector (:elector args)] + elector (:elector args) + new-db (assoc (clear-messages db) :elector elector :page page)] (dispatch [:update-elector {:elector elector}]) - (assoc (clear-messages db) :elector elector :page page)))) + new-db))) (reg-event-db diff --git a/src/cljs/youyesyet/canvasser_app/ui_utils.cljs b/src/cljs/youyesyet/canvasser_app/ui_utils.cljs index cd37ead..452801a 100644 --- a/src/cljs/youyesyet/canvasser_app/ui_utils.cljs +++ b/src/cljs/youyesyet/canvasser_app/ui_utils.cljs @@ -45,15 +45,16 @@ (defn big-link [text & {:keys [target handler]}] - (js/console.log (str "Big link with target '" target "'; handler '" handler "'")) + (js/console.log (str "Big link with target '" target "'; onclick handler '" handler "'")) [:div.big-link-container {:key (gensym "big-link")} - [:a.big-link (merge {:href target :on-click handler} + [:a.big-link (merge {:alt "Hello"} (if target {:href target}{}) - (if handler {:on-click handler}{})) + (if handler {:title handler}{})) text]]) (defn nav-link [uri title page collapsed?] + (js/console.log (str "Adding nav-link with title '" title "'; target '" uri "'")) (let [selected-page @(rf/subscribe [:page])] [:li.nav-item {:class (when (= page selected-page) "active") @@ -81,4 +82,5 @@ (nav-link "#/map" "Map" :map collapsed?) (nav-link "#/dwelling" "Electors" :dwelling collapsed?) (nav-link "#/issues" "Issues" :issues collapsed?) - (nav-link "#/about" "About" :about collapsed?)]])) + (nav-link "#/about" "About" :about collapsed?) + (nav-link "/logout" "Logout" :logout collapsed?)]])) diff --git a/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs b/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs index 9da0ad3..6011ab6 100644 --- a/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs +++ b/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs @@ -56,20 +56,17 @@ [:canvas {:id "signature-pad"}]]]]]] (ui/back-link "#dwelling") (ui/big-link "I consent" - ;; :target (str "#elector/" (:id elector) "/true/") - :handler #(fn - [] - (ui/log-and-dispatch + :handler #(dispatch [:set-consent-and-page {:elector-id (:id elector) :page :elector - :elector (merge + :elector (assoc elector :signature (.toDataURL - sig-pad + @sig-pad "image/svg+xml") - )}]))) + )}])) (ui/big-link "I DO NOT consent" :target (str "#elector/" (:id elector) "/false"))])) diff --git a/test/cljs/youyesyet/canvasser_app/ui_utils_test.cljs b/test/cljs/youyesyet/canvasser_app/ui_utils_test.cljs new file mode 100644 index 0000000..6221054 --- /dev/null +++ b/test/cljs/youyesyet/canvasser_app/ui_utils_test.cljs @@ -0,0 +1,11 @@ +(ns youyesyet.canvasser-app.ui-utils-test + (:require [cljs.test :refer-macros [is are deftest testing use-fixtures]] + [reagent.core :as reagent :refer [atom]] + [youyesyet.canvasser-app.ui-utils :refer :all])) + +(deftest big-link-tests + (testing "big-link" + (is (= [:div.big-link-container {:key (gensym "big-link")} + [:a.big-link {} + "Test"]] + (big-link "Test" nil nil)))))