Fixed conflicts introduced in last merge from Vladimir
[clinton/lisp-on-lines.git] / src / mewa / slot-presentations.lisp
index edc42fd..09d1488 100644 (file)
   (: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)
     (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)))
 
 ;;;; 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))
 
 
 (defaction add-to-has-many ((slot has-many-slot-presentation) instance)
-  (destructuring-bind (class home foreign) 
-      (multiple-value-funcall #'meta-model:explode-has-many instance (slot-name slot))
+  (mewa:ensure-instance-sync (parent slot))
+  (multiple-value-bindf (class home foreign) 
+      (meta-model:explode-has-many instance (slot-name slot))
     (let ((new (make-instance class)))
       (setf (slot-value new foreign) (slot-value instance home))
       (meta-model:sync-instance new :fill-gaps-only t)
       (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 
          (progn
            (setf (instance (presentation slot)) (presentation-slot-value slot instance))
            (present (presentation slot)))
-         (<:as-html "--"))))
\ No newline at end of file
+         (<:as-html "--"))))