Author: achiumenti Date: Thu Dec 18 07:46:23 2008 New Revision: 159
Log: bugfixes and initscripts methods renaming
Modified: trunk/main/claw-demo/src/frontend/components/edit-customer.lisp trunk/main/claw-demo/src/frontend/components/pager.lisp trunk/main/claw-demo/src/frontend/components/redirect.lisp trunk/main/claw-html.dojo/src/djbody.lisp trunk/main/claw-html.dojo/src/djform.lisp trunk/main/claw-html.dojo/src/djwidget.lisp trunk/main/claw-html/src/packages.lisp trunk/main/claw-html/src/tags.lisp
Modified: trunk/main/claw-demo/src/frontend/components/edit-customer.lisp ============================================================================== --- trunk/main/claw-demo/src/frontend/components/edit-customer.lisp (original) +++ trunk/main/claw-demo/src/frontend/components/edit-customer.lisp Thu Dec 18 07:46:23 2008 @@ -70,7 +70,7 @@ when val return t))))
-(defmethod htcomponent-class-initscripts :around ((obj edit-customer)) +(defmethod htcomponent-global-initscripts :around ((obj edit-customer)) (let ((req-function (ps:ps (defun is-address-field-required (container-id) (defvar input-list (dojo.query "[widgetId]" (dojo.by-id container-id))) (defvar result false) @@ -99,7 +99,7 @@ (lambda (input-widget) (setf (slot-value input-widget 'required) false)))))))))) (append (list req-function address-field-validation) (call-next-method))))
-(defmethod htcomponent-instance-initscript :around ((obj edit-customer)) +(defmethod htcomponent-initscripts :around ((obj edit-customer)) (let* ((component-id (htcomponent-client-id obj)) (parent-script (call-next-method)) (script (ps:ps* `(progn
Modified: trunk/main/claw-demo/src/frontend/components/pager.lisp ============================================================================== --- trunk/main/claw-demo/src/frontend/components/pager.lisp (original) +++ trunk/main/claw-demo/src/frontend/components/pager.lisp Thu Dec 18 07:46:23 2008 @@ -82,7 +82,7 @@ (div> :class "button last" (span> :on-click (set-offset-value pager count-pages) "last"))))))))
-(defmethod htcomponent-class-initscripts ((pager pager)) +(defmethod htcomponent-global-initscripts ((pager pager)) (let ((update-component-id (pager-update-component-id pager)) (page-size (pager-page-size pager))) (list
Modified: trunk/main/claw-demo/src/frontend/components/redirect.lisp ============================================================================== --- trunk/main/claw-demo/src/frontend/components/redirect.lisp (original) +++ trunk/main/claw-demo/src/frontend/components/redirect.lisp Thu Dec 18 07:46:23 2008 @@ -34,7 +34,7 @@ :reader redirect-href)) (:metaclass metacomponent))
-(defmethod htcomponent-instance-initscript ((redirect redirect)) +(defmethod htcomponent-initscripts ((redirect redirect)) (ps:ps* `(location.replace ,(redirect-href redirect))))
(defmethod wcomponent-template ((redirect redirect))
Modified: trunk/main/claw-html.dojo/src/djbody.lisp ============================================================================== --- trunk/main/claw-html.dojo/src/djbody.lisp (original) +++ trunk/main/claw-html.dojo/src/djbody.lisp Thu Dec 18 07:46:23 2008 @@ -108,7 +108,7 @@ (htcomponent-body obj) (djxcontent-pane> :static-id id (script> :type "text/javascript" - (page-body-init-scripts pobj)))))) + (page-body-initscripts pobj))))))
(defmethod wcomponent-after-prerender ((obj djbody) (pobj page))
Modified: trunk/main/claw-html.dojo/src/djform.lisp ============================================================================== --- trunk/main/claw-html.dojo/src/djform.lisp (original) +++ trunk/main/claw-html.dojo/src/djform.lisp Thu Dec 18 07:46:23 2008 @@ -55,7 +55,7 @@ (subseq js-array 0 (1- (length js-array))))))))))
-(defmethod htcomponent-instance-initscript ((obj djform)) +(defmethod htcomponent-initscripts ((obj djform)) nil)
(defclass djtext-box (cinput djwidget) @@ -283,7 +283,7 @@ :editor editor (wcomponent-informal-parameters obj))))
-(defmethod htcomponent-instance-initscript((obj djinline-edit-box)) +(defmethod htcomponent-initscripts((obj djinline-edit-box)) (let ((id (htcomponent-client-id obj)) (page-url (claw-script-name))) (ps* `(dojo.connect (dijit.by-id ,id)
Modified: trunk/main/claw-html.dojo/src/djwidget.lisp ============================================================================== --- trunk/main/claw-html.dojo/src/djwidget.lisp (original) +++ trunk/main/claw-html.dojo/src/djwidget.lisp Thu Dec 18 07:46:23 2008 @@ -57,7 +57,7 @@
(defmethod djwidget-formal-parameters ((djwidget djwidget))())
-(defmethod htcomponent-class-initscripts ((obj djwidget)) +(defmethod htcomponent-global-initscripts ((obj djwidget)) (let ((dojo-type (djwidget-dojo-type obj)) (dojo-require (djwidget-dojo-require obj))) (append
Modified: trunk/main/claw-html/src/packages.lisp ============================================================================== --- trunk/main/claw-html/src/packages.lisp (original) +++ trunk/main/claw-html/src/packages.lisp Thu Dec 18 07:46:23 2008 @@ -57,11 +57,11 @@ #:page-req-parameter #:page-script-files #:page-stylesheet-files - #:page-class-initscripts - #:page-instance-initscripts + #:page-global-initscripts + #:page-initscripts #:page-initstyles #:page-current-component - #:page-body-init-scripts + #:page-body-initscripts #:htcomponent #:htcomponent-page #:htcomponent-body @@ -70,8 +70,8 @@ #:htcomponent-real-id #:htcomponent-script-files #:htcomponent-stylesheet-files - #:htcomponent-class-initscripts - #:htcomponent-instance-initscript + #:htcomponent-global-initscripts + #:htcomponent-initscripts #:htcomponent-initstyles #:tag #:tag-name
Modified: trunk/main/claw-html/src/tags.lisp ============================================================================== --- trunk/main/claw-html/src/tags.lisp (original) +++ trunk/main/claw-html/src/tags.lisp Thu Dec 18 07:46:23 2008 @@ -108,17 +108,17 @@ - REST The format arguments See http://www.lisp.org/HyperSpec/Body/fun_format.html#format for more info."))
-(defgeneric page-body-init-scripts (page) +(defgeneric page-body-initscripts (page) (:documentation "During the render phase wcomponent instances inject their initialization scripts (javascript) that will be evaluated when the page has been loaded. -This internal method is called to render these scripts. The result is used by the HTBODY-INIT-SCRIPTS-TAG method +This internal method is called to render these scripts. The result is used by the HTBODY-INITSCRIPTS-TAG method that generates a <script> tag that will be appended at the end of the <body> tag (generated by the BODY> function tag. - PAGE is the page instance that must be given"))
-(defgeneric htbody-init-scripts-tag (page &optional on-load) +(defgeneric htbody-initscripts-tag (page &optional on-load) (:documentation "Encloses the init inscance scripts injected into the page into a <script> tag component -See PAGE-BODY-INIT-SCRIPTS form more info. If the ON-LOAD parameter it not nil, then the script will be executed +See PAGE-BODY-INITSCRIPTS form more info. If the ON-LOAD parameter it not nil, then the script will be executed on the onload document event. - PAGE is the page instance that must be given"))
@@ -285,6 +285,11 @@ `(let ((,var ,form)) (when ,var ,@body)))
+(defmacro listify (var) + `(if (listp ,var) + ,var + (list ,var))) + (defun flatten (tree &optional result-list) "Traverses the tree in order, collecting even non-null leaves into a list." (let ((result result-list)) @@ -393,10 +398,10 @@ :accessor page-script-files :documentation "Holds component class scripts files injected by components during the request cycle") (stylesheet-files :initarg :stylesheet-files :accessor page-stylesheet-files :documentation "Holds component class css files injected by components during the request cycle") - (class-initscripts :initarg :class-initscripts - :accessor page-class-initscripts :documentation "Holds component class javascript directives injected by components during the request cycle") - (instancee-initscripts :initarg :instance-initscripts - :accessor page-instance-initscripts :documentation "Holds component instance javascript directives injected by components during the request cycle") + (global-initscripts :initarg :global-initscripts + :accessor page-global-initscripts :documentation "Holds component class javascript directives injected by components during the request cycle") + (initscripts :initarg :initscripts + :accessor page-initscripts :documentation "Holds component instance javascript directives injected by components during the request cycle") (initstyles :initarg :initstyles :accessor page-initstyles :documentation "Holds component class and instance stylesheet directives injected by components during the request cycle") (indent :initarg :indent @@ -440,8 +445,8 @@ :script-files nil :json-component-count 0 :stylesheet-files nil - :class-initscripts nil - :instance-initscripts nil + :global-initscripts nil + :initscripts nil :initstyles nil :indent t :tabulator 0 @@ -486,12 +491,12 @@ :accessor htcomponent-script-files :documentation "Page injectable script files") (stylesheet-files :initarg :stylesheet-files :accessor htcomponent-stylesheet-files :documentation "Page injectable css files") - (class-initscripts :initarg :class-initscripts - :accessor htcomponent-class-initscripts :documentation "Page injectable javascript class derectives") - (instance-initscript :initarg :instance-initscript - :accessor htcomponent-instance-initscript :documentation "Page injectable javascript instance derectives") + (global-initscripts :initarg :global-initscripts + :accessor htcomponent-global-initscripts :documentation "Page injectable javascript class derectives") + (initscripts :initarg :initscript + :accessor htcomponent-initscripts :documentation "Page injectable javascript instance derectives. It may be a string or a list of strings") (initstyles :initarg :initstyles - :accessor htcomponent-initstyles :documentation "Component injectable css derectives")) + :accessor htcomponent-initstyles :documentation "Component injectable css derectives. It may be a string or a list of strings")) (:default-initargs :page nil :body nil :json-render-on-validation-errors-p nil @@ -501,8 +506,8 @@ :render-condition nil :script-files nil :stylesheet-files nil - :class-initscripts nil - :instance-initscript nil + :global-initscripts nil + :initscripts nil :initstyles nil) (:documentation "Base class for all other claw components"))
@@ -709,7 +714,7 @@ (when injection (htcomponent-render injection page))) (page-format-raw page "",instanceInjections:"") - (let ((init-scripts (htbody-init-scripts-tag page))) + (let ((init-scripts (htbody-initscripts-tag page))) (when init-scripts (htcomponent-render init-scripts page))) (page-format-raw page "",errors:") @@ -719,8 +724,8 @@ (page-format-raw page "}") (page-format-raw page (page-json-suffix page)))))
-(defmethod page-body-init-scripts ((page page)) - (when-let (init-scripts (reverse (page-instance-initscripts page))) +(defmethod page-body-initscripts ((page page)) + (when-let (init-scripts (reverse (page-initscripts page))) (format nil "~{~a~%~}" init-scripts)))
(defmethod page-print-tabulation ((page page)) @@ -738,7 +743,7 @@
(defmethod page-init-injections ((page page)) (let ((tag-list) - (class-init-scripts (format nil "~{~a~%~}" (reverse (page-class-initscripts page)))) + (class-init-scripts (format nil "~{~a~%~}" (reverse (page-global-initscripts page)))) (init-styles (format nil "~{~a~%~}" (reverse (page-initstyles page))))) (unless (string= "" class-init-scripts) (let ((current-js (script> :type "text/javascript"))) @@ -1117,15 +1122,15 @@ ((null child-tag) nil) (t (htcomponent-render child-tag page))))) (when (page-can-print page) - (when-let (init-script-tag (htbody-init-scripts-tag page t)) + (when-let (init-script-tag (htbody-initscripts-tag page t)) (htcomponent-render init-script-tag page)) (tag-render-endtag htbody page)) (when (or (page-can-print page) previous-print-status) (setf (page-can-print page) nil) (htcomponent-json-print-end-component htbody)))))
-(defmethod htbody-init-scripts-tag ((page page) &optional on-load) - (when-let (scripts (page-body-init-scripts page)) +(defmethod htbody-initscripts-tag ((page page) &optional on-load) + (when-let (scripts (page-body-initscripts page)) (let ((js (script> :type "text/javascript")) (js-control-string (if on-load " @@ -1266,9 +1271,11 @@ css-files (list css-files))) (pushnew css (page-stylesheet-files page) :test #'equal))) - (dolist (js (htcomponent-class-initscripts wcomponent)) - (pushnew js (page-class-initscripts page) :test #'equal)) - (dolist (style (htcomponent-initstyles wcomponent)) + (dolist (js (htcomponent-global-initscripts wcomponent)) + (pushnew js (page-global-initscripts page) :test #'equal)) + (dolist (js (listify (htcomponent-initscripts wcomponent))) + (pushnew js (page-initscripts page) :test #'equal)) + (dolist (style (listify (htcomponent-initstyles wcomponent))) (pushnew style (page-initstyles page) :test #'equal))) (if (listp template) (dolist (tag template)