web, frontend: fixes, select template by action

This commit is contained in:
Helmut Merz 2025-06-21 18:17:49 +02:00
parent a8ffd8bd72
commit c3afd20f5f
7 changed files with 28 additions and 10 deletions

View file

@ -60,7 +60,7 @@
(defun ac-step (tsk bhv msg) (defun ac-step (tsk bhv msg)
(let ((*self* tsk)) (let ((*self* tsk))
(handler-case (funcall bhv msg) (handler-case (funcall bhv msg)
(error (err) (condition (err)
(invoke-debugger err) (invoke-debugger err)
(util:lg :error "behavior" msg err) (util:lg :error "behavior" msg err)
)))) ))))

View file

@ -121,6 +121,7 @@
(setf (gethash (config:name cfg) services) child))))) (setf (gethash (config:name cfg) services) child)))))
(defun handle-message (ctx msg) (defun handle-message (ctx msg)
(util:lgd ctx msg)
(do-actions ctx msg)) (do-actions ctx msg))
(defun do-actions (ctx msg &optional (acts #'actions)) (defun do-actions (ctx msg &optional (acts #'actions))

View file

@ -14,12 +14,28 @@
(in-package :scopes/frontend/cs-hx) (in-package :scopes/frontend/cs-hx)
(defvar *templates* (make-hash-table))
(defclass response (response:html-response) ()) (defclass response (response:html-response) ())
(defmethod response:render-content ((resp response) msg) (defmethod response:render-content ((resp response) msg)
;(dom:render (dom:dlist nil (shape:data msg)))) ;(dom:render (dom:dlist nil (shape:data msg))))
(dom:render (let ((tmpl (gethash (shape:head-value msg :action) *templates*)))
(div nil (util:loop-plist (shape:data msg) k v collect (view-field k v))))) (dom:render (funcall tmpl resp msg))))
(defun view (resp msg)
(div nil (util:loop-plist (shape:data msg) k v collect (view-field k v))))
(defun form (resp msg)
(let* ((data (shape:data msg))
(fields (getf data :fields)))
(mapcar (lambda (f) (form-field f)) fields)))
(defun view-field (label value) (defun view-field (label value)
(div nil (label nil label) ": " value)) (div nil (label nil label) ": " value))
(defun form-field (name)
(div nil (label nil name) ": " name))
(setf (gethash :view *templates*) #'view)
(setf (gethash :form *templates*) #'form)

View file

@ -69,7 +69,7 @@
(defgeneric principal-id (prc) (defgeneric principal-id (prc)
(:method ((prc principal)) (:method ((prc principal))
(head-value :name prc))) (shape:head-value :name prc)))
;;;; login entry point ;;;; login entry point

View file

@ -16,10 +16,10 @@
(in-package :scopes-auth/web) (in-package :scopes-auth/web)
(defun login-form (ctx msg) (defun login-form (ctx msg)
(let ((msg (message:create '(:html :render :form :login) (let ((mso (message:create '(:auth :form :login)
:data '(:fields (:login :password) :button "Login") :data '(:fields (:login :password) :button "Login"))))
:customer (actor:customer msg)))) (actor:send (actor:customer msg) mso)
(core:echo ctx msg))) ))
(defun login (ctx msg) (defun login (ctx msg)
(let* ((prc (auth:login (shape:data msg)))) (let* ((prc (auth:login (shape:data msg))))

View file

@ -30,7 +30,8 @@
(defvar *default-actions* (defvar *default-actions*
(core:define-actions '((:response :set-cookie) set-cookie) (core:define-actions '((:response :set-cookie) set-cookie)
'(nil render-msg))) '(nil render-msg)
))
(defun render-cookie (cdata) (defun render-cookie (cdata)
(let ((cookie (apply #'cookie:create-from-keys cdata))) (let ((cookie (apply #'cookie:create-from-keys cdata)))

View file

@ -92,7 +92,7 @@
(msg (message:create (head env) (msg (message:create (head env)
:data (plist (post-data env)) :data (plist (post-data env))
:customer (core:mailbox resp)))) :customer (core:mailbox resp))))
(util:lgd msg) ;(util:lgd msg)
; (check-auth ctx msg env) => (response:render-unauthorized resp) ; (check-auth ctx msg env) => (response:render-unauthorized resp)
(if (core:handle-message ctx msg) (if (core:handle-message ctx msg)
(response:render resp) (response:render resp)