You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Jeremy Quinn <je...@media.demon.co.uk> on 2004/12/01 20:29:53 UTC

reaching viewData in a CForms event handler

Hi All

A little problem I cannot solve ...... and I cannot find any samples 
tat do this ......

Part of a form I am working on has a couple of menus.

The menu called 'group' is a list of folders grabbed dynamically from 
the filesystem by the flowscript that calls the form.
The menu called 'cid' is set to a list of the files in the folder 
chosen in "group".

<fd:field id="group" required="true">
	. . .
   <fd:selection-list type="flow-jxpath" list-path="groups" 
value-path="value" label-path="label" />
   <fd:on-value-changed>
     <javascript>
       var value = event.source.value;
       var cid = event.source.lookupWidget("../cid");
       if (value != null) {
         cid.setSelectionList(getComponentFiles(viewData.components, 
value), "value", "label");
       } else {
         event.source.setValue(null);
         cid.setSelectionList(new 
Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("..."));
       }
       cid.setValue(null);
     </javascript>
   </fd:on-value-changed>
</fd:field>

The function getComponentFiles needs the 'components' parameter, which 
is the location of the base components folder. It needs to be passed 
from a SiteMap parameter, so I have added it to the bizData:

	form.showForm(screen, {groups:getComponentGroups(components), 
components:components});

I am getting errors similar to this when the form attempts to load:

	ReferenceError: "viewData" is not defined

I have used the "viewData" value in projects before, in earlier 
versions of CForms.

I have tried several variations, but cannot work out the correct way of 
getting the bizdata.

	viewData.components
	viewData["components"]
	components
etc.

If I make 'components' a global JS variable instead of passing it as 
bizData, I can access it fine, but I would prefer not to work that way 
;)

What am I doing wrong?

Thanks for any suggestions.

regards Jeremy


--------------------------------------------------------

                   If email from this address is not signed
                                 IT IS NOT FROM ME

                         Always check the label, folks !!!!!
--------------------------------------------------------

Re: reaching viewData in a CForms event handler

Posted by Vadim Gritsenko <va...@reverycodes.com>.
Jeremy Quinn wrote:
> I have worked around the problem by adding my bizData to the Form as an 
> Attribute.
> 
> We need to decide which to do ....

I think I can only confirm what you already know. In Woody, we used to have 
access to viewData:

     <wd:field id="a">
       <wd:on-value-changed>
     	<javascript>
           viewData.myBean....
         </javascript>
       </wd:on-value-changed>
     </wd:field>

If it is broken in current CForms, probably this is something which need fixing...

Vadim


>     fix it if it is broken
>     update the docs with the proper technique if it does actually work
>     remove it from the docs if we don't want this functionality
> 
> regards Jeremy
> 
> 
> 
> On 7 Dec 2004, at 14:28, Jeremy Quinn wrote:
> 
>> Sorry to bug you guys about this again, but I still have no solution.
>>
>> According to the docs, I am supposed to have access to BizData sent 
>> with the sendForm function, from within CForms EventHandlers, but 
>> still cannot work out how to do it.
>>
>> I am using the CForms model in :
>>
>>     resource://org/apache/cocoon/forms/flow/javascript/Form.js
>>
>> Form.js seems to add the bizData to the ContextObject, but I do not 
>> see how to retrieve it.
>>
>> Should I be able to do this?
>> Or is it a bug in the code or the docs?
>>
>> Thanks for any help
>>
>> regards Jeremy
>>
>> On 1 Dec 2004, at 19:29, Jeremy Quinn wrote:
>>
>>> Hi All
>>>
>>> A little problem I cannot solve ...... and I cannot find any samples 
>>> tat do this ......
>>>
>>> Part of a form I am working on has a couple of menus.
>>>
>>> The menu called 'group' is a list of folders grabbed dynamically from 
>>> the filesystem by the flowscript that calls the form.
>>> The menu called 'cid' is set to a list of the files in the folder 
>>> chosen in "group".
>>>
>>> <fd:field id="group" required="true">
>>>     . . .
>>>   <fd:selection-list type="flow-jxpath" list-path="groups" 
>>> value-path="value" label-path="label" />
>>>   <fd:on-value-changed>
>>>     <javascript>
>>>       var value = event.source.value;
>>>       var cid = event.source.lookupWidget("../cid");
>>>       if (value != null) {
>>>         cid.setSelectionList(getComponentFiles(viewData.components, 
>>> value), "value", "label");
>>>       } else {
>>>         event.source.setValue(null);
>>>         cid.setSelectionList(new 
>>> Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("..."));
>>>       }
>>>       cid.setValue(null);
>>>     </javascript>
>>>   </fd:on-value-changed>
>>> </fd:field>
>>>
>>> The function getComponentFiles needs the 'components' parameter, 
>>> which is the location of the base components folder. It needs to be 
>>> passed from a SiteMap parameter, so I have added it to the bizData:
>>>
>>>     form.showForm(screen, {groups:getComponentGroups(components), 
>>> components:components});
>>>
>>> I am getting errors similar to this when the form attempts to load:
>>>
>>>     ReferenceError: "viewData" is not defined
>>>
>>> I have used the "viewData" value in projects before, in earlier 
>>> versions of CForms.
>>>
>>> I have tried several variations, but cannot work out the correct way 
>>> of getting the bizdata.
>>>
>>>     viewData.components
>>>     viewData["components"]
>>>     components
>>> etc.
>>>
>>> If I make 'components' a global JS variable instead of passing it as 
>>> bizData, I can access it fine, but I would prefer not to work that 
>>> way ;)
>>>
>>> What am I doing wrong?
>>>
>>> Thanks for any suggestions.
>>>
>>> regards Jeremy

Re: reaching viewData in a CForms event handler

Posted by Jeremy Quinn <je...@media.demon.co.uk>.
I have worked around the problem by adding my bizData to the Form as an 
Attribute.

We need to decide which to do ....

	fix it if it is broken
	update the docs with the proper technique if it does actually work
	remove it from the docs if we don't want this functionality

regards Jeremy



On 7 Dec 2004, at 14:28, Jeremy Quinn wrote:

> Sorry to bug you guys about this again, but I still have no solution.
>
> According to the docs, I am supposed to have access to BizData sent 
> with the sendForm function, from within CForms EventHandlers, but 
> still cannot work out how to do it.
>
> I am using the CForms model in :
>
> 	resource://org/apache/cocoon/forms/flow/javascript/Form.js
>
> Form.js seems to add the bizData to the ContextObject, but I do not 
> see how to retrieve it.
>
> Should I be able to do this?
> Or is it a bug in the code or the docs?
>
> Thanks for any help
>
> regards Jeremy
>
> On 1 Dec 2004, at 19:29, Jeremy Quinn wrote:
>
>> Hi All
>>
>> A little problem I cannot solve ...... and I cannot find any samples 
>> tat do this ......
>>
>> Part of a form I am working on has a couple of menus.
>>
>> The menu called 'group' is a list of folders grabbed dynamically from 
>> the filesystem by the flowscript that calls the form.
>> The menu called 'cid' is set to a list of the files in the folder 
>> chosen in "group".
>>
>> <fd:field id="group" required="true">
>> 	. . .
>>   <fd:selection-list type="flow-jxpath" list-path="groups" 
>> value-path="value" label-path="label" />
>>   <fd:on-value-changed>
>>     <javascript>
>>       var value = event.source.value;
>>       var cid = event.source.lookupWidget("../cid");
>>       if (value != null) {
>>         cid.setSelectionList(getComponentFiles(viewData.components, 
>> value), "value", "label");
>>       } else {
>>         event.source.setValue(null);
>>         cid.setSelectionList(new 
>> Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("..."));
>>       }
>>       cid.setValue(null);
>>     </javascript>
>>   </fd:on-value-changed>
>> </fd:field>
>>
>> The function getComponentFiles needs the 'components' parameter, 
>> which is the location of the base components folder. It needs to be 
>> passed from a SiteMap parameter, so I have added it to the bizData:
>>
>> 	form.showForm(screen, {groups:getComponentGroups(components), 
>> components:components});
>>
>> I am getting errors similar to this when the form attempts to load:
>>
>> 	ReferenceError: "viewData" is not defined
>>
>> I have used the "viewData" value in projects before, in earlier 
>> versions of CForms.
>>
>> I have tried several variations, but cannot work out the correct way 
>> of getting the bizdata.
>>
>> 	viewData.components
>> 	viewData["components"]
>> 	components
>> etc.
>>
>> If I make 'components' a global JS variable instead of passing it as 
>> bizData, I can access it fine, but I would prefer not to work that 
>> way ;)
>>
>> What am I doing wrong?
>>
>> Thanks for any suggestions.
>>
>> regards Jeremy
>>
>>
>> --------------------------------------------------------
>>
>>                   If email from this address is not signed
>>                                 IT IS NOT FROM ME
>>
>>                         Always check the label, folks !!!!!
>> --------------------------------------------------------
>>
> --------------------------------------------------------
>
>                   If email from this address is not signed
>                                 IT IS NOT FROM ME
>
>                         Always check the label, folks !!!!!
> --------------------------------------------------------
>
>
--------------------------------------------------------

                   If email from this address is not signed
                                 IT IS NOT FROM ME

                         Always check the label, folks !!!!!
--------------------------------------------------------


Re: reaching viewData in a CForms event handler

Posted by Jeremy Quinn <je...@media.demon.co.uk>.
Sorry to bug you guys about this again, but I still have no solution.

According to the docs, I am supposed to have access to BizData sent 
with the sendForm function, from within CForms EventHandlers, but still 
cannot work out how to do it.

I am using the CForms model in :

	resource://org/apache/cocoon/forms/flow/javascript/Form.js

Form.js seems to add the bizData to the ContextObject, but I do not see 
how to retrieve it.

Should I be able to do this?
Or is it a bug in the code or the docs?

Thanks for any help

regards Jeremy

On 1 Dec 2004, at 19:29, Jeremy Quinn wrote:

> Hi All
>
> A little problem I cannot solve ...... and I cannot find any samples 
> tat do this ......
>
> Part of a form I am working on has a couple of menus.
>
> The menu called 'group' is a list of folders grabbed dynamically from 
> the filesystem by the flowscript that calls the form.
> The menu called 'cid' is set to a list of the files in the folder 
> chosen in "group".
>
> <fd:field id="group" required="true">
> 	. . .
>   <fd:selection-list type="flow-jxpath" list-path="groups" 
> value-path="value" label-path="label" />
>   <fd:on-value-changed>
>     <javascript>
>       var value = event.source.value;
>       var cid = event.source.lookupWidget("../cid");
>       if (value != null) {
>         cid.setSelectionList(getComponentFiles(viewData.components, 
> value), "value", "label");
>       } else {
>         event.source.setValue(null);
>         cid.setSelectionList(new 
> Packages.org.apache.cocoon.forms.datatype.EmptySelectionList("..."));
>       }
>       cid.setValue(null);
>     </javascript>
>   </fd:on-value-changed>
> </fd:field>
>
> The function getComponentFiles needs the 'components' parameter, which 
> is the location of the base components folder. It needs to be passed 
> from a SiteMap parameter, so I have added it to the bizData:
>
> 	form.showForm(screen, {groups:getComponentGroups(components), 
> components:components});
>
> I am getting errors similar to this when the form attempts to load:
>
> 	ReferenceError: "viewData" is not defined
>
> I have used the "viewData" value in projects before, in earlier 
> versions of CForms.
>
> I have tried several variations, but cannot work out the correct way 
> of getting the bizdata.
>
> 	viewData.components
> 	viewData["components"]
> 	components
> etc.
>
> If I make 'components' a global JS variable instead of passing it as 
> bizData, I can access it fine, but I would prefer not to work that way 
> ;)
>
> What am I doing wrong?
>
> Thanks for any suggestions.
>
> regards Jeremy
>
>
> --------------------------------------------------------
>
>                   If email from this address is not signed
>                                 IT IS NOT FROM ME
>
>                         Always check the label, folks !!!!!
> --------------------------------------------------------
>
--------------------------------------------------------

                   If email from this address is not signed
                                 IT IS NOT FROM ME

                         Always check the label, folks !!!!!
--------------------------------------------------------