(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 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
(:cancel
(cancel-save-instance self))
(:save
- (save-instance self)))))
- (answer self))
+ (save-instance self))))))
(: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))
(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