cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Reinhard Poetz" <reinh...@apache.org>
Subject RE: disabling widgets
Date Wed, 25 Feb 2004 11:32:26 GMT

From: Antonio Gallardo [mailto:agallardo@agssa.net] 

> 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.

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.

--
Reinhard


Mime
View raw message