Form types
authordrewc <drewc@tech.coop>
Thu, 5 Oct 2006 04:57:31 +0000 (21:57 -0700)
committerdrewc <drewc@tech.coop>
Thu, 5 Oct 2006 04:57:31 +0000 (21:57 -0700)
Added types to the form attribute, as well as avoiding nesting with the usual pattern.

darcs-hash:20061005045731-39164-f910484fbc78ddcd353c24416baa8bc84b3de8c8.gz

src/standard-wrappers.lisp
src/validation/standard-validation.lisp

index 690ac6d..110bdd3 100644 (file)
 ;;; wrap-a-form
 (deflayer wrap-form)
 
 ;;; wrap-a-form
 (deflayer wrap-form)
 
+(defvar *in-form-p* nil)
+
 (define-layered-class description
   :in-layer wrap-form ()
 (define-layered-class description
   :in-layer wrap-form ()
-  ((form-buttons :initarg :form-buttons :initform nil :special t :accessor form-buttons)))
+  ((form-buttons :initarg :form-buttons :initform nil :special t :accessor form-buttons)
+   (form-type :initarg :form-type :initform '<ucw:simple-form :special t :accessor form-type)))
 
 (defattribute form-button-attribute ()
   ((form-buttons :initarg :form-buttons :initform nil :special t :accessor form-buttons)))
 
 (defattribute form-button-attribute ()
   ((form-buttons :initarg :form-buttons :initform nil :special t :accessor form-buttons)))
                                   action))))))))
 
 
                                   action))))))))
 
 
-
-(defdisplay :in-layer wrap-form :around (description object)
-  (<ucw:form
-   :action (refresh-component self)
-   (with-inactive-layers (wrap-form)
-     (call-next-method)
-     (with-inactive-layers (show-attribute-labels)
-       (display-attribute
-       (make-instance
-        'form-button-attribute
-        :form-buttons
-        (form-buttons description))
-       object)))))
+(defdisplay
+  :in-layer wrap-form
+  :around (description object)
+  (flet ((body ()
+          (with-inactive-layers (wrap-form)
+            (call-next-method)
+            (with-inactive-layers (show-attribute-labels)
+              (display-attribute
+               (make-instance
+                'form-button-attribute
+                :form-buttons
+                (form-buttons description))
+               object)))))
+    (ecase (form-type description)
+      ('<ucw:simple-form
+       (<ucw:simple-form
+       :action (refresh-component self)
+       (body)))
+      ('<ucw:form
+       (<ucw:form
+       :action (refresh-component self)
+       (body))))))
 
 ;;;; wrap a DIV
 
 
 ;;;; wrap a DIV
 
index 8856b07..3d616f2 100644 (file)
@@ -50,7 +50,7 @@
               (<:li (<:as-html (message c)))))
            (funcall next-method))))
 
               (<:li (<:as-html (message c)))))
            (funcall next-method))))
 
-(defattribute string-attribute ()
+(defattribute base-attribute ()
   ()
   (:in-layer validate)
   (:default-properties
   ()
   (:in-layer validate)
   (:default-properties