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 disabledunder certainconditions.
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
smime.p7s
Description: S/MIME cryptographic signature
