diff --git a/source/clog-base.lisp b/source/clog-base.lisp index 0c17c03..96bdcbf 100644 --- a/source/clog-base.lisp +++ b/source/clog-base.lisp @@ -527,18 +527,45 @@ an application share per connection the same queue of serialized events." ;; set-on-event ;; ;;;;;;;;;;;;;;;;;; -(defgeneric set-on-event (clog-obj event-name handler) +(defgeneric set-on-event (clog-obj event-name handler &key cancel-event one-time) (:documentation "Set a HANDLER for EVENT-NAME on CLOG-OBJ. If handler is nil unbind all event handlers. (Internal)")) -(defmethod set-on-event ((obj clog-obj) event-name handler) +(defmethod set-on-event ((obj clog-obj) event-name handler + &key + (cancel-event nil) + (one-time nil)) (set-event obj event-name (when handler (lambda (data) (declare (ignore data)) - (funcall handler obj))))) + (funcall handler obj))) + :cancel-event cancel-event + :one-time one-time)) +;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; set-on-event-with-date ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defgeneric set-on-event-with-data (clog-obj event-name handler + &key cancel-event one-time) + (:documentation "Set a HANDLER for EVENT-NAME on CLOG-OBJ. If handler is nil unbind +all event handlers. Handler is called with a data option passed from javascript +calling the jQuery custom event mechanism .trigger('event_name', data) (Internal)")) + +(defmethod set-on-event-with-data ((obj clog-obj) event-name handler + &key + (cancel-event nil) + (one-time nil)) + (set-event obj event-name + (when handler + (lambda (data) + (funcall handler obj data))) + :call-back-script "+data" + :cancel-event cancel-event + :one-time one-time)) + ;;;;;;;;;;;;;;;;;;; ;; set-on-resize ;; ;;;;;;;;;;;;;;;;;;; diff --git a/source/clog.lisp b/source/clog.lisp index dec4835..36d0153 100644 --- a/source/clog.lisp +++ b/source/clog.lisp @@ -123,12 +123,13 @@ embedded in a native template application.)" (flush-connection-cache function) "CLOG-Obj - Internals for Extensions and Plugins" - (html-id generic-function) - (execute generic-function) - (query generic-function) - (js-execute generic-function) - (js-query generic-function) - (set-on-event generic-function) + (html-id generic-function) + (execute generic-function) + (query generic-function) + (js-execute generic-function) + (js-query generic-function) + (set-on-event generic-function) + (set-on-event-with-data generic-function) "CLOG-Obj - Event Handling" (set-on-resize generic-function)