You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Bart Molenkamp <b....@bizzdesign.nl> on 2005/05/09 17:37:13 UTC

[CForms] having more control over showing/processing a form

Hi all,

Currently, in flowscript, you display a form by calling
form.showForm(uri). This function loops until the form is successfully
processed. There is, as far as I can see, no way to get between there.

I wonder if it would be useful to define two more functions in Form.js,
that allow me to have better control over displaying/processing a form.
E.g. something like:

var form = new Form("form.xml");

...

var finished = false;
do {
  form.showPage("form-template.xml");    // show the form only once.
  
  if (user clicked some link) {
    ...
    // dome something else
  } else {
    finished = form.process();           // process the form only once.
  }
} while (!finished);

In this case, I do the looping that is otherwise done in the
form.showForm() function. But now I have more control over the form
flow. And, form.showForm() still exists and can be built using the above
two new methods.

I can make this change. Would it be valuable addition for CForms, or
not?

Thanks,
Bart.


Re: [CForms] having more control over showing/processing a form

Posted by Sylvain Wallez <sy...@apache.org>.
Bart Molenkamp wrote:

>Hi all,
>
>Currently, in flowscript, you display a form by calling
>form.showForm(uri). This function loops until the form is successfully
>processed. There is, as far as I can see, no way to get between there.
>
>I wonder if it would be useful to define two more functions in Form.js,
>that allow me to have better control over displaying/processing a form.
>E.g. something like:
>
>var form = new Form("form.xml");
>
>...
>
>var finished = false;
>do {
>  form.showPage("form-template.xml");    // show the form only once.
>  
>  if (user clicked some link) {
>    ...
>    // dome something else
>  } else {
>    finished = form.process();           // process the form only once.
>  }
>} while (!finished);
>
>In this case, I do the looping that is otherwise done in the
>form.showForm() function. But now I have more control over the form
>flow. And, form.showForm() still exists and can be built using the above
>two new methods.
>
>I can make this change. Would it be valuable addition for CForms, or
>not?
>  
>

You can already to this without having to insert some code within the 
showForm loop (which BTW is no more a loop in 2.1.7): you can place an 
<fd:submit validate="false"> that will exit the shorForm function.

The corresponding flowscript could then look like:

var redisplayForm = true;
while(redisplayForm) {
    form.showForm();
    switch(form.submitId) {
        case "details":
            showDetails();
            break;
        case "create":
            createNew();
            break;
        case "cart":
            redisplayForm = false;
            showCart();
            break;
        case "ok":
            redisplayForm = false;
            processForm(form);
            break;
    }
}

Does it answer your need?

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://apache.org/~sylvain            http://anyware-tech.com
Apache Software Foundation Member     Research & Technology Director