[Bese-devel] simple submit sans javascript.

Waldo Rubinstein waldo at trianet.net
Tue May 9 19:48:17 UTC 2006


I think that the exploitation of Ajax all over the place are spoiling  
the users, who after much work, time, and effort, finally accepted  
the way browser-based apps worked compared to fat client-server apps.

Now that Ajax has hit the streets and has shown the users how it can  
disguise the back and forth of the usual browser-based interaction  
with something more seamless, is just forcing everything to the  
"pages bloated with javascript".

At least this has been my experience with my customers. I don't  
develop for public users. All my applications are for internal  
purposes, intranet-like apps. So that "fat client-server"-like  
experience is not only appreciated, but now is being demanded.

I haven't done much work with Dojo, simply because I started using  
Prototype (with rails). Now that I'm developing more with UCW I am  
appreciating more Dojo and, regardless of what everyone says, I like  
it. It may not be as easy as prototype at first, but it is certainly  
very powerful and better organized.

I don't see the "big deal" in requiring it in UCW apps. Once of the  
things about Dojo compared to the rest is it's packaging system which  
will let you minimize the initial amount of javascript hat you need  
to load and then just load what you need more if you have to.

- Waldo

On May 9, 2006, at 3:15 PM, Drew Crampsie wrote:

> Imagine my surprise when, after updating to ucw_dev, ALL my  
> application stopped working!
>
> The culprit? forms now require dojo to work. I like dojo as much as  
> the next guy, but i rarely initially develop in an environment  
> where it is available.
>
> To tell you the truth, i've never much liked the fact that forms  
> used Javascript to begin with, but lived with it until now :)
>
> anyways, patchy patchy applied to ucw_public and attached.  
> Personally, i think that SIMPLE-FORMS should become the default,  
> and the complex, bulky, page-bloating javascript producing forms  
> should be used only if the user specifically wants them.
>
> Thoughts?
>
> drewc
>
> Sun May 7 00:36:02 BST 2006 Drew Crampsie <drewc at tech.coop>
> * Add a <ucw:simple-submit and <ucw:simple-form that do not require  
> javascript.
>
> <ucw:simple-submit uses a BUTTON tag to render a submit button that  
> does not require javascript
>
> To make this happen, i added a method to find-action that operates  
> on a list,
> grabbing the car and using it as the action id. When a form is  
> submitted with an extra action parameter,
> the last one submitted (first in the list) is taken to be the  
> action-id.
>
> This allows forms without javascript!! SIMPLE-SUBMIT will work in  
> the standard UCW:FORM,
> SIMPLE-FORM is a form without the JS cruft, but will not work with  
> standard <UCW:* submit buttons.
>
>
>
>
> New patches:
>
> [Add a <ucw:simple-submit and <ucw:simple-form that do not require  
> javascript.
> Drew Crampsie <drewc at tech.coop>**20060506233602
>
>  <ucw:simple-submit uses a BUTTON tag to render a submit button  
> that does not require javascript
>
>  To make this happen, i added a method to find-action that operates  
> on a list,
>  grabbing the car and using it as the action id. When a form is  
> submitted with an extra action parameter,
>  the last one submitted (first in the list) is taken to be the  
> action-id.
>
>  This allows forms without javascript!! SIMPLE-SUBMIT will work in  
> the standard UCW:FORM,
>  SIMPLE-FORM is a form without the JS cruft, but will not work with  
> standard <UCW:* submit buttons.
>
>
>
> ] {
> hunk ./src/packages.lisp 317
> +   #:simple-form
> +   #:simple-submit
> hunk ./src/rerl/standard-session-frame.lisp 12
> +
> +(defmethod find-action ((f standard-session-frame) (action-id list))
> +  (find-action f (car action-id)))
> +
> +(defmethod (setf find-action) (lambda (f standard-session-frame)  
> (action-id string))
> +  (setf (gethash action-id (frame.actions f))
> +	lambda))
> hunk ./src/yaclml/ucw-tags.lisp 39
> +(deftag-macro <ucw:simple-form (&attribute (id '(js:gen-js-name- 
> string :prefix "ucw-form"))
> +					    action
> +					    &allow-other-attributes others
> +					    &body body)
> +  "A Simple form tag, made for use with SIMPLE-SUBMIT. Does not  
> require javascript."
> +  (with-unique-names (url query action-id)
> +    (rebinding (id)
> +      `(let* ((,action-id (make-new-action (context.current-frame  
> *context*)
> +					   (lambda () (with-call/cc ,action))))
> +              (,url (compute-url *current-component*
> +                                 :action-id ,action-id)))
> +         (<:form :action (print-uri-to-string-sans-query ,url)
> +                 , at others
> +		 (dolist (,query (uri.query ,url))
> +		   (if (string= ,+action-parameter-name+ (car ,query))
> +		       (<:input :type "hidden" :name ,+action-parameter-name+
> +				:value (when ,action (cdr ,query))
> +				:id ,action-id)
> +		       (<:input :type "hidden" :name (car ,query) :value  
> (cdr ,query))))
> +		 , at body)))))
> +
> +(deftag-macro <ucw:simple-submit (&attribute action &allow-other- 
> attributes others &body body)
> +  "Presents an button tag which executes ACTION when clicked."
> +  `(<:button :type "submit"
> +	     :name +action-parameter-name+
> +	     :value (make-new-action (context.current-frame *context*)
> +				     (lambda () (with-call/cc ,action)))
> +	     , at others , at body))
> +
> +
> }
>
> Context:
>
> [Added send-redirect function.
> Marco Baringer <mb at bese.it>**20060501154250
>
>  send-redirect does what redirect-component's render method did but
>  it's usable from a simple-dispatcher (or anywhere else we don't have
>  ucw's component context machinery).
> ]
> [Use dolist*, not dolist, in tabbed-pane's render method.
> Marco Baringer <mb at bese.it>**20060501135314]
> [Using (when (whatever) T) is weird, use (whatever) instead
> Marco Baringer <mb at bese.it>**20060501135000]
> [Minor indentation/whitespace fixups in src/components/form.lisp
> Marco Baringer <mb at bese.it>**20060501134849]
> [make-with-dummy-request-nicer
> cjstuij at gmail.com**20060501001756]
> [tabbed-pane-makeover - tabbed panes are now wrapped in divs in  
> stead of a table, for more design flexibility. Is no longer tied to  
> a tal file.
> cjstuij at gmail.com**20060430233920]
> [Removing integer-range-validator, use number-range-validator instead.
> Nathan Bird <nathan at acceleration.net>**20060428165829]
> [the value of a number-field should be nil, not 0, if nothing was  
> entered.
> Nathan Bird <nathan at acceleration.net>**20060428164949]
> [bin/ucwctl: allow a custom ucwctl.conf via -u|--ucwctl-file
> Luca Capello <luca at pca.it>**20060501110031
>
>  This adds the possibility to specify a different ucwctl.conf file
>  instead of the default /etc/ucw/ucwctl.conf.  Moreover, by default
>  ucwctl now reads ~/.ucw/ucwctl.conf it it exists, overriding the
>  values in the general /etc/ucw/ucwctl.conf, and the same happens if
>  the ucwctl.conf is specified via the command line option.  All  
> command
>  line options override the values present in any ucwctl.conf files.
>  The order is the following:
>
>    1) /etc/ucw/ucwctl.conf (if it exists)
>    2) ~/.ucw/ucwctl.conf (if it exists)
>    3) -u|--ucwctl-file (if specified, exit if it cannot be read)
>    4) command line options
>
>  A deeper discussion is available at:
>
>    http://common-lisp.net/pipermail/bese-devel/2006-April/001932.html
>    http://common-lisp.net/pipermail/bese-devel/2006-April/001961.html
> ]
> [In the phone and email validators instead of defining a new slot  
> we just use the :default-initargs class option
> Marco Baringer <mb at bese.it>**20060428103114]
> [Adding documentation to form.lisp
> Nathan Bird <nathan at acceleration.net>**20060428023256]
> [Rearranging file contents to reduce style-warnings
> Nathan Bird <nathan at acceleration.net>**20060428022511]
> [Implementing value-validators
> Nathan Bird <nathan at acceleration.net>**20060428020403
>  Value-validators are a category of validators that are only  
> applied if there
>  is actually a value. This was done to provide a more systematic  
> scheme since
>  there were several different ways it was being handled previously.
>  Javascript validation in this patch is untested.
> ]
> [Expanded the forms example to include a number-field and number- 
> range-validated field.
> Nathan Bird <nathan at acceleration.net>**20060428014551]
> [added a standard regular exprexpression validator then made e-mail- 
> validator use it.  E-mail-validator IS NO LONGER INVALID IF EMPTY.  
> Adde d an international phonenumber validator
> russ at acceleration.net**20060425154947]
> [added regex exports
> russ at acceleration.net**20060424225714]
> [Comment fixup
> Nathan Bird <nathan at acceleration.net>**20060427173259]
> [Added missing id param that got lost in my <ucw:form changes
> attila.lendvai at gmail.com**20060424150549]
> [TAG 2006-04-25
> Marco Baringer <mb at bese.it>**20060425145623]
> Patch bundle hash:
> 35fa34a9ac934fdd8cafa9b7992c7e5aaf03ab8a
> _______________________________________________
> bese-devel mailing list
> bese-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/bese-devel




More information about the bese-devel mailing list