cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pieter Delmee <p.del...@elsto.nl>
Subject Re: DynamicSelectionList filter parameter
Date Tue, 24 Apr 2007 15:20:25 GMT
Warrell wrote:
> Hi,
> 
> Can anyone shed a bit more light on how to user the filter parameter? The
> documentation states :-
> 
> This list is filterable, and if a filter is provided, the "filter" parameter
> is appended to the URL, e.g. <fd:selection-list
> src="cocoon://pipeline.xml"/>  will call, given the "foo" filter value, the
> URL cocoon://pipeline.xml?filter=foo.
> 
> Where do I specify the parameter value? What I would like to do is :-
> 
> In the Template form define the selection list as
> 
> 	<fd:field id="sourcecode" required="true">
> 		<fd:label>Source Code:</fd:label>
> 	      <fd:datatype base="string"/>
> 	      <fd:selection-list src="cocoon:/sources" cache="request"/>
> 	</fd:field>
> 
> Then in the Instance form do something like :-
> 
> 	<ft:widget id="sourcecode">
> 		<filter>${team}</filter>
> 	</ft:widget>
> 
> So that in the sitemap I can do :-
> 
> 	<map:match pattern="sources">
> 		<map:generate src="teams.xml"/>
> 		<map:transform src="filterTeamsToSL.xsl">
> 			<map:parameter name="team"
> value="{request-param:filter}"/>
> 		</map:transform>
> 		<map:serialize type="xml"/>
> 	</map:match>
> 
> Is this how it's supposed to work? I will take another look at the Java
> source but any help would be very welcome,
> 
> Regards
> 
> Warrell

Hi Warrell,

You can set the filter in the fd:on-value-changed javascript.
Using your sourcecode field you'ld need another field in which the 
filter is specified, for example:

<fd:field id="filter">
   <fd:label>filter</fd:label>
   <fd:datatype base="string"/>
   <fd:on-value-changed>
     <fd:javascript>
       var sourcecodeWidget = this.lookupWidget('../sourcecode');
       if (this.value != null) {
         sourcecodeWidget.setSelectionList('cocoon:/sources?filter=' + 
this.value);
       } else {
         sourcecodeWidget.setSelectionList('cocoon:/sources');
       }
     </fd:javascript>
   </fd:on-value-changed>
</fd:field>

You can also use the following lines to enable/disable the field when 
there's no filter specified.

sourcecodeWidget.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.ACTIVE);
sourcecodeWidget.setState(Packages.org.apache.cocoon.forms.formmodel.WidgetState.DISABLED);

regards,

Pieter


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message