fixed the slot-presentations so that changes to an edit in progress are properly...
authordrewc <drewc@tech.coop>
Wed, 29 Jun 2005 15:08:53 +0000 (08:08 -0700)
committerdrewc <drewc@tech.coop>
Wed, 29 Jun 2005 15:08:53 +0000 (08:08 -0700)
darcs-hash:20050629150853-39164-160275e40f164c76b2df1eee0d1c11c9737e36b0.gz

src/mewa/mewa.lisp
src/mewa/slot-presentations.lisp
src/packages.lisp

index 01b3577..16a08e5 100644 (file)
@@ -277,8 +277,6 @@ attributes is an alist keyed on the attribute nreeame."
 (defmacro call-presentation (object &rest args)
   `(present-object ,object :presentation (make-presentation ,object ,@args)))
 
 (defmacro call-presentation (object &rest args)
   `(present-object ,object :presentation (make-presentation ,object ,@args)))
 
-
-
 (defaction cancel-save-instance ((self mewa))
   (cond  
     ((slot-value (instance self) 'clsql-sys::view-database)
 (defaction cancel-save-instance ((self mewa))
   (cond  
     ((slot-value (instance self) 'clsql-sys::view-database)
@@ -295,6 +293,10 @@ attributes is an alist keyed on the attribute nreeame."
 (defaction ok ((self mewa) &optional arg)
   "Returns the component if it has not been modified. if it has been, prompt user to save or cancel"
   (declare (ignore arg))
 (defaction ok ((self mewa) &optional arg)
   "Returns the component if it has not been modified. if it has been, prompt user to save or cancel"
   (declare (ignore arg))
+  (ensure-instance-sync self)
+  (answer self))
+
+(defaction ensure-instance-sync ((self mewa))
   (when (modifiedp self)
     (let ((message (format nil "Record has been modified, Do you wish to save the changes?<br/> ~a" (print (modifications self)))))
       (case (call 'option-dialog 
   (when (modifiedp self)
     (let ((message (format nil "Record has been modified, Do you wish to save the changes?<br/> ~a" (print (modifications self)))))
       (case (call 'option-dialog 
@@ -304,8 +306,7 @@ attributes is an alist keyed on the attribute nreeame."
        (:cancel
         (cancel-save-instance self))
        (:save 
        (:cancel
         (cancel-save-instance self))
        (:save 
-        (save-instance self)))))
-  (answer self))
+        (save-instance self))))))
 
 
 
 
 
 
index edc42fd..e0ddb79 100644 (file)
   (:default-initargs))
 
 (defaction view-instance ((self component) instance &rest initargs)
   (:default-initargs))
 
 (defaction view-instance ((self component) instance &rest initargs)
-  (call-component (parent self) (apply #'mewa:make-presentation instance initargs)))
+  (call-component (parent self) (apply #'mewa:make-presentation instance initargs))
+  ;; the viewed instance could have been changed/deleted, so we sync this instance
+  (meta-model:sync-instance (instance (parent self))))
 
 
 (defmethod  present-slot :around ((slot foreign-key-slot-presentation) instance)
 
 
 (defmethod  present-slot :around ((slot foreign-key-slot-presentation) instance)
     (cond 
       ((editablep slot)
        (render)
     (cond 
       ((editablep slot)
        (render)
-       (<ucw:a :action (search-records slot instance) (<:as-html " (search)"))
-       (<ucw:a :action (create-record slot instance) (<:as-html " (new)")))
+       (<ucw:submit :action  (search-records slot instance) :value "Search" :style "display:inline")
+       (<ucw:submit :action  (create-record slot instance) :value "Add New" :style "display:inline"))
       ((linkedp slot)
        (<ucw:a :action (view-instance slot (foreign-instance slot)) 
               (render)))
       ((linkedp slot)
        (<ucw:a :action (view-instance slot (foreign-instance slot)) 
               (render)))
 
 ;;;; HAS MANY 
 (defslot-presentation has-many-slot-presentation (mewa-relation-slot-presentation)
 
 ;;;; HAS MANY 
 (defslot-presentation has-many-slot-presentation (mewa-relation-slot-presentation)
-  ()
+  ((add-new-label :accessor add-new-label :initarg :add-new-label :initform "Add New"))
   (:type-name has-many))
 
 
   (:type-name has-many))
 
 
       (meta-model:sync-instance (instance (parent slot))))))
 
 (defmethod present-slot ((slot has-many-slot-presentation) instance)
       (meta-model:sync-instance (instance (parent slot))))))
 
 (defmethod present-slot ((slot has-many-slot-presentation) instance)
-  (<ucw:a :action (add-to-has-many slot instance) 
-         (<:as-html "(add new)"))
+  (<ucw:submit :action (add-to-has-many slot instance) :value (add-new-label slot))
   (let ((i (get-foreign-instances slot instance))
        (linkedp (linkedp slot)))
     (<:ul 
   (let ((i (get-foreign-instances slot instance))
        (linkedp (linkedp slot)))
     (<:ul 
index 2466038..afa92f2 100644 (file)
@@ -65,9 +65,7 @@
    :edit-instance
    :save-instance
    :cancel-save-instance
    :edit-instance
    :save-instance
    :cancel-save-instance
-   :global-properties
-   :search-expr
-   :search-query))
+   :global-properties))
 
 
 (defpackage :lisp-on-lines
 
 
 (defpackage :lisp-on-lines