On 25 Feb 2004, at 11:32, Reinhard Poetz wrote:


From: Antonio Gallardo [mailto:[EMAIL PROTECTED]

Jeremy Quinn dijo:
I have a booleanfield widget, that needs to be disabled
under certain
conditions.

pseudo-code :

        if ( album.scenarios.size() > 0 ) {
                 disable ( album.publishable );
        }

ie. the album.publishable value needs to be in the form, but should
not be alterable by the user.

Is there a way of doing this in Cocoon Forms ?

Hi Jeremy:

In short, no. Also a roundtrip to the server to do this is
not the best idea. I think the problem is similar as when we
needed to make some "calculated widgets". We solved the
problem in this way:

1-call a JS function in the OnLoad event of your page to
initializate any state of the controlled widget. 2-Add a
onChange event on "album.scenarios" that will check for size
and turn on of off the "album.publishable" control. The JS
code can be quite similar to this code:

function toggleControl(id) {
    var element = document.getElementById(id);
    with (element.style) {
        if (display == "none") {
            display = ""
        } else{
            display = "none"
        }
    }
}

AFAIK, you will need to change the woody.xslt to allow the
usage of OnLoad event in the <body> of your HTML page.

As a example in the template I wrote:

<document menu="true" js="activity/client.js" onload="atStart();"
  ...
  <td>
    <wt:widget id="pcd_quantity">
      <wi:styling size="10"
OnChange="calculateTheOtherWidget(this);"/>
    </wt:widget>
  </td>
  ...
</document>

BTW, because using clientside JS is very easy when we have
id's on every widget. I suggested to include id's even when
rendering the <wd:output>, but seems like nobody want it and
proposal was forgotten. :-(

Hope this help.

Many thanks for your suggestions Antonio.

Sorry, I don't like this client-side approach.
We have to find something better because sometimes the 'presentation
state' of a widget can depend on the 'application state'. Flowscript as
controller should have access to both.

+1 a woody-model based approach is better IMHO.

When it comes to Validation, we have a simple expression language, no?
That can validate one widget, based on the value of another widget?

I wonder if we could somehow implement enabling/disabling of widgets with a similar technique.

regards Jeremy

Attachment: smime.p7s
Description: S/MIME cryptographic signature



Reply via email to