summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/chef/pages/admin.clj23
-rw-r--r--src/chef/pages/admin/api.clj15
-rw-r--r--src/chef/routes.clj3
3 files changed, 32 insertions, 9 deletions
diff --git a/src/chef/pages/admin.clj b/src/chef/pages/admin.clj
index 83e5dbd..031da8c 100644
--- a/src/chef/pages/admin.clj
+++ b/src/chef/pages/admin.clj
@@ -8,17 +8,24 @@
(defn- render-category [data children]
[:li
- [:p {:style {:display :inline-block}} (if (some? data)
- [:input {:type :text :placeholder "Name"
- :value (:categories/name data)}]
- "Startseite")]
+ [:p {:style {:display :inline-block}}
+ (if (some? data)
+ [:input {:type :text :placeholder "Name"
+ :value (:categories/name data)
+ :name "name"
+ :hx-post (str "/api/admin/edit-category/" (:categories/id data))
+ :hx-trigger "change"}]
+ "Startseite")]
[:p {:style {:display :inline-block
:margin-left "1em"
:margin-right "1em"}} "->"]
- [:input {:type :text :placeholder "Frage"
- :style {:display :inline-block
- :width :auto}
- :value (:category/name data)}] ; TODO: only show when category has children
+ [:input {:type :text :placeholder "Frage"
+ :style {:display :inline-block
+ :width :auto}
+ :value (:categories/question data)
+ :name "question"
+ :hx-post (str "/api/admin/edit-category/" (:categories/id data))
+ :hx-trigger "change"}] ; TODO: only show when category has children
[:img {:src "/static/icons/plus.svg" :height "30em"
:style {:vertical-align :middle
:margin-left "1em"}
diff --git a/src/chef/pages/admin/api.clj b/src/chef/pages/admin/api.clj
index a15b897..38f40f7 100644
--- a/src/chef/pages/admin/api.clj
+++ b/src/chef/pages/admin/api.clj
@@ -39,3 +39,18 @@
(ruresp/status 200)
(ruresp/header "HX-Refresh" "true")))
(ruresp/bad-request "Bad request."))))
+
+(defn edit-category [req]
+ (cutils/auth-only req
+ (if-let [id (try (Integer/parseInt (get-in req [:path-params :id]))
+ (catch Exception _ nil))]
+ (do (when-let [name (get-in req [:params "name"])]
+ (jdbc/execute! @cdb/db (sql/format {:update :categories
+ :set {:name name}
+ :where [:= :id id]})))
+ (when-let [question (get-in req [:params "question"])]
+ (jdbc/execute! @cdb/db (sql/format {:update :categories
+ :set {:question question}
+ :where [:= :id id]})))
+ (ruresp/response "Updated."))
+ (ruresp/bad-request "Bad request."))))
diff --git a/src/chef/routes.clj b/src/chef/routes.clj
index fe568cc..a054b1d 100644
--- a/src/chef/routes.clj
+++ b/src/chef/routes.clj
@@ -23,7 +23,8 @@
["/api"
["/admin"
["/create-category" {:post {:handler cpaapi/create-category}}]
- ["/delete-category/:id" {:delete {:handler cpaapi/delete-category}}]]]])
+ ["/delete-category/:id" {:delete {:handler cpaapi/delete-category}}]
+ ["/edit-category/:id" {:post {:handler cpaapi/edit-category}}]]]])
(def ring-handler (delay (-> router
rring/router