X-Git-Url: https://git.hcoop.net/clinton/lisp-on-lines.git/blobdiff_plain/8c6914bd27843fc74d07da3965fafaac09c85c4e..e9309ae70f96ab8fd87d2862500347909f5fd6c0:/src/slot-presentations.lisp diff --git a/src/slot-presentations.lisp b/src/slot-presentations.lisp index 188db91..2f75737 100644 --- a/src/slot-presentations.lisp +++ b/src/slot-presentations.lisp @@ -217,11 +217,10 @@ Calendar.setup({ ;; the viewed instance could have been changed/deleted, so we sync this instance (meta-model:sync-instance (instance (ucw::parent self)))) - (defmethod present-slot :around ((slot foreign-key-slot-presentation) instance) (setf (foreign-instance slot) (when (lol::presentation-slot-value slot instance) - (meta-model:explode-foreign-key instance (slot-name slot)))) + (meta-model:explode-foreign-key instance (slot-name slot) :nilp t))) (flet ((render () (when (foreign-instance slot)(call-next-method)))) (if (slot-boundp slot 'ucw::place) (cond @@ -239,7 +238,8 @@ Calendar.setup({ (defmethod find-foreign-instances ((slot foreign-key-slot-presentation)) - (clsql:select (class-name (class-of (meta-model:explode-foreign-key (instance slot) (slot-name slot)))))) + (clsql:select (class-name (class-of (meta-model:explode-foreign-key (instance slot) (slot-name slot)))) + :order-by (car (list-keys (instance slot))))) @@ -393,7 +393,9 @@ Calendar.setup({ ((list-view :accessor list-view :initarg :list-view :initform :one-line) (action-view :accessor action-view :initarg :action-view :initform :viewer) (create-view :initform :creator) - (select-view :initform :as-string :accessor select-view)) + (select-view :initform :as-string :accessor select-view) + (can-add-new-p :initarg :can-add-new-p :accessor can-add-new-p :initform t) + (can-add-existing-p :initarg :can-add-existing-p :accessor can-add-existing-p :initform t)) (:type-name many-to-many) (:default-initargs :label "many to many")) @@ -429,22 +431,26 @@ Calendar.setup({ (let ((instances (slot-value instance (slot-name slot))) new-instance) (<:ul - (<:li (