commit 0a463c4eca0502530ed799f1090f1d5803ec23ff parent 93754377e42ac1fa04d25f4f4c1c29e5ccc94448 Author: Natasha Kerensikova <natgh@instinctive.eu> Date: Thu, 21 May 2026 18:58:32 +0000 HTMX responses in actions are refactored Diffstat:
| M | src/cgi.scm | | | 110 | ++++++++++++++++++++++++++++--------------------------------------------------- |
1 file changed, 39 insertions(+), 71 deletions(-)
diff --git a/src/cgi.scm b/src/cgi.scm @@ -815,41 +815,31 @@ END-OF-CSS (let ((id (db-edit))) (post-htmx id))) -(define (do-locked) +(define (do-locked htmx?) (let ((id (required-input-var "id")) (submit (required-input-var "submit"))) (cond - ((string=? submit "Push") (db-push-gruik id) (redirect "/")) - ((string=? submit "Unlock") (db-set-mark id 2 1) - (redirect (conc "/gruik/" id))) - (else (bad-input "bad value for submit"))))) - -(define (xdo-locked) - (let ((id (required-input-var "id")) - (submit (required-input-var "submit"))) - (cond - ((string=? submit "Push") (htmx-push-gruik id)) - ((string=? submit "Unlock") (db-set-mark id 2 1) (post-htmx id)) - (else (bad-input "bad value for submit"))))) - -(define (do-marked) - (let ((id (required-input-var "id")) - (submit (required-input-var "submit"))) - (cond - ((string=? submit "Edit") (redirect (conc "/gruik/" id))) - ((string=? submit "Unmark") (db-set-mark id 1 0) (redirect "/")) - (else (bad-input "bad value for submit"))))) - -(define (xdo-marked) + ((string=? submit "Push") + (if htmx? (htmx-push-gruik id) + (begin (db-push-gruik id) (redirect "/")))) + ((string=? submit "Unlock") + (db-set-mark id 2 1) + (if htmx? (post-htmx id) (redirect (conc "/gruik/" id)))) + (else (bad-input "bad value for submit"))))) + +(define (do-marked htmx?) (let ((id (required-input-var "id")) (submit (required-input-var "submit"))) (cond - ((string=? submit "Edit") (htmx-output - (edit-post-fragment* (string->number id)))) - ((string=? submit "Unmark") (db-set-mark id 1 0) (post-htmx id)) - (else (bad-input "bad value for submit"))))) - -(define (do-undelete) + ((string=? submit "Edit") + (if htmx? (htmx-output (edit-post-fragment* (string->number id))) + (redirect (conc "/gruik/" id)))) + ((string=? submit "Unmark") + (db-set-mark id 1 0) + (if htmx? (post-htmx id) (redirect "/"))) + (else (bad-input "bad value for submit"))))) + +(define (do-undelete htmx?) (let ((id (required-input-var "id")) (oldmark (string->number (optional-input-var "from" ""))) (submit (required-input-var "submit"))) @@ -858,51 +848,29 @@ END-OF-CSS (cond ((string=? submit "Restore") (db-set-mark id oldmark 0) - (redirect (conc "/gruik/" id))) + (if htmx? (post-htmx id) + (redirect (conc "/gruik/" id)))) ((string=? submit "Hide") (db-set-mark id oldmark -10) - (redirect "/")) + (if htmx? (htmx-output '()) (redirect "/"))) (else (bad-input "bad value for submit")))) - ((string=? submit "Restore") (db-set-mark id -10 0) (redirect "/")) - (else (bad-input "bad value for submit"))))) + ((string=? submit "Restore") + (db-set-mark id -10 0) + (if htmx? (htmx-output '()) (redirect "/"))) + (else (bad-input "bad value for submit"))))) -(define (xdo-undelete) - (let ((id (required-input-var "id")) - (oldmark (string->number (optional-input-var "from" ""))) - (submit (required-input-var "submit"))) - (cond - ((and oldmark (<= -5 oldmark -1)) - (cond - ((string=? submit "Restore") - (db-set-mark id oldmark 0) - (post-htmx id)) - ((string=? submit "Hide") - (db-set-mark id oldmark -10) - (htmx-output '())) - (else (bad-input "bad value for submit")))) - ((string=? submit "Restore") (db-set-mark id -10 0) (htmx-output '())) - (else (bad-input "bad value for submit"))))) - -(define (do-unmarked) - (let ((id (required-input-var "id")) - (submit (required-input-var "submit"))) - (cond - ((string=? submit "Mark") (db-set-mark id 0 1) - (auto-descr id) - (redirect "/")) - ((string=? submit "Delete") (db-set-mark id 0 -10) (redirect "/")) - (else (bad-input "bad value for submit"))))) - -(define (xdo-unmarked) +(define (do-unmarked htmx?) (let ((id (required-input-var "id")) (submit (required-input-var "submit"))) (cond - ((string=? submit "Mark") (db-set-mark id 0 1) - (auto-descr id) - (post-htmx id)) - ((string=? submit "Delete") (db-set-mark id 0 -10) (htmx-output '())) - (else (bad-input "bad value for submit"))))) - + ((string=? submit "Mark") + (db-set-mark id 0 1) + (auto-descr id) + (if htmx? (post-htmx id) (redirect "/"))) + ((string=? submit "Delete") + (db-set-mark id 0 -10) + (if htmx? (htmx-output '()) (redirect "/"))) + (else (bad-input "bad value for submit"))))) (define route-xdo-edit (preceded-by (char-seq "xdo-edit") @@ -910,19 +878,19 @@ END-OF-CSS (define route-do-locked (sequence* ((x? (maybe (is #\x))) (_ (char-seq "do-locked"))) - (result (lambda () (if x? (xdo-locked) (do-locked)))))) + (result (lambda () (do-locked x?))))) (define route-do-marked (sequence* ((x? (maybe (is #\x))) (_ (char-seq "do-marked"))) - (result (lambda () (if x? (xdo-marked) (do-marked)))))) + (result (lambda () (do-marked x?))))) (define route-do-undelete (sequence* ((x? (maybe (is #\x))) (_ (char-seq "do-undelete"))) - (result (lambda () (if x? (xdo-undelete) (do-undelete)))))) + (result (lambda () (do-undelete x?))))) (define route-do-unmarked (sequence* ((x? (maybe (is #\x))) (_ (char-seq "do-unmarked"))) - (result (lambda () (if x? (xdo-unmarked) (do-unmarked)))))) + (result (lambda () (do-unmarked x?))))) (define route-deleted (preceded-by (char-seq "deleted") (result deleted-view)))