cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Antonio Gallardo" <>
Subject Re: disabling widgets
Date Wed, 25 Feb 2004 11:10:16 GMT
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 ( {
        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();"
    <wt:widget id="pcd_quantity">
      <wi:styling size="10" OnChange="calculateTheOtherWidget(this);"/>

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.

Best Regards,

Antonio Gallardo

View raw message