(: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 "--"))))