1 (in-package :lisp-on-lines-ucw
)
3 (defclass lisp-on-lines-application
(contextl-application)
5 (:default-initargs
:action-class
'lisp-on-lines-action
))
7 (defclass lisp-on-lines-action
(contextl-action)
9 (:metaclass closer-mop
:funcallable-standard-class
))
11 (defclass lisp-on-lines-component
(contextl-component)
13 (:metaclass standard-component-class
))
15 (defclass lisp-on-lines-component-class
(standard-component-class)
19 (defmethod initialize-instance :around
((class lisp-on-lines-component-class
)
20 &rest initargs
&key
(direct-superclasses '()))
21 (declare (dynamic-extent initargs
))
22 (if (loop for direct-superclass in direct-superclasses
23 thereis
(ignore-errors (subtypep direct-superclass
'lisp-on-lines-component
)))
25 (apply #'call-next-method
28 (append direct-superclasses
29 (list (find-class 'lisp-on-lines-component
)))
33 (defmethod reinitialize-instance :around
((class lisp-on-lines-component-class
)
34 &rest initargs
&key
(direct-superclasses '() direct-superclasses-p
))
35 (declare (dynamic-extent initargs
))
36 (if (or (not direct-superclasses-p
)
37 (loop for direct-superclass in direct-superclasses
38 thereis
(ignore-errors (subtypep direct-superclass
'lisp-on-lines-component
))))
40 (apply #'call-next-method
43 (append direct-superclasses
44 (list (find-class 'lisp-on-lines-component
)))
47 (defclass described-component-class
(described-class standard-component-class
)
53 (defmethod ucw-core:handle-action
:wrap-around
((action lisp-on-lines-action
) application session frame
)
54 (let ((lol::*invalid-objects
* (make-hash-table)))
55 (handler-bind ((lol::validation-condition
57 (let ((object (lol::validation-condition-object c
))
58 (attribute (lol::validation-condition-attribute c
)))
61 (setf (gethash object lol
::*invalid-objects
*)
62 (cons (cons attribute c
)
63 (gethash object lol
::*invalid-objects
*)))))))
73 (defclass described-component-class
(described-class standard-component-class
)
78 ;; (defcomponent standard-window-component
79 ;; (ucw-standard::basic-window-component)
82 ;; :accessor window-body
86 ;; (defmethod render-html-head ((window standard-window-component))
87 ;; (let* ((app (context.application *context*))
88 ;; (url-prefix (application.url-prefix app)))
89 ;; (<:meta :http-equiv "Content-Type" :content (window-component.content-type window))
90 ;; (awhen (window-component.title window)
91 ;; (<:title (if (functionp it)
92 ;; (funcall it window)
94 ;; (awhen (window-component.icon window)
95 ;; (<:link :rel "icon"
96 ;; :type "image/x-icon"
97 ;; :href (concatenate 'string url-prefix it)))
98 ;; (dolist (stylesheet (effective-window-stylesheets window))
99 ;; (<:link :rel "stylesheet"
101 ;; :type "text/css"))))
103 ;; (defmethod render-html-body ((window standard-window-component))
104 ;; (render (window-body window)))
106 ;; (defcomponent info-message ()
107 ;; ((message :accessor message :initarg :message)))
109 ;; (defmethod render ((m info-message))
111 ;; :class "info-mssage"
112 ;; (<:as-html (message m)))
113 ;; (<ucw:a :action (answer-component m nil) "Ok"))