Ok, I think I'm finally getting somewhere with this. No matter what I  
tried, I couldn't get any of the Ajax functions for the dependent  
selects to be generated in my Edit form.
So, using the sample cfproperty definitions for Country/State from the  
wiki, I created a dummy custom type to get an idea of what mine was  
missing. I noticed the javascript listener was being generated for  
Country/State, but not for my custom type. I realized the reason for  
this is that I have a mult-step wizard, so the tag library being used  
to do the formtools magic is in farcry/core/tags/wizard. So, instead  
of ft:object being called where addWatch() is executed, wiz:object was  
being called, where there is no reference to addWatch and therefore,  
none of the Ajax goodness was included.

I simply copied the addWatch call from farcry/core/tags/formtools/ 
object.cfm (line @452) to farcry/core/tags/wizard/object.cfm (line  
@387) and I'm now getting the proper javascript listeners as well as  
dynamic select functionality added in. Still need to refine to grab  
the level of categories I need, but this MAJOR piece of the puzzle is  
now in place to help me finish this up..

Now, this has resulted in me having to make a change to the actual  
core farcry tag files which I understand is not ideal... How do I  
ensure that this change makes it into the core source (or, if there is  
a reason it's not there already, how do I maintain my version of it?).

Thanks again for your help.



On Feb 1, 2009, at 10:52 PM, Blair McKenzie wrote:

> ftAlias is used by category.cfc (and your own formtool) to specify  
> which category branch to use. It looks for the specified alias  
> (obviously). This part of the edit function needs to be changed so  
> that instead of looking for the branch named with ftAlias, it looks  
> for the branch specified in  
> arguments.stObject[arguments.stMetadata.ftPrimaryCategory] (I think)  
> which will be the uuid of the parent category.
>
> It looks like you will have to create a primarycategory formtool as  
> well if you want a single level list. To retrieve a single level  
> inside the formtool use
> application.factory.oTree.getChildren(objectid=parentid)
> instead of the original
> oCategory.getCategoryBranchAsList(lCategoryIDs=rootID)
> This will return a query of objectid,objectname instead of a list of  
> objectid.
>
> The default ajax stuff is added with the ft:object tag. It basically  
> adds events to the watched fields. If those other fields change, the  
> dependent field is ajax'd in. Basically the edit function gets  
> called with the new watched values passed in. You can see an example  
> of this at work with the country and state formtools. Neither of  
> them mention ajax, and both work without it. But if you add  
> ftWatch="countryproperty" to the state property the state list  
> starts automagically switching when the country is changed.
>
> On Mon, Feb 2, 2009 at 2:33 PM, nicholas sollecito <[email protected] 
> > wrote:
> Ok, so I've followed most of your directions, but I think I'm still  
> missing something. Here's what I've done so far...
>
> I've set up the cfproperty for the primary category select as  
> instructed.
>
> For the secondary category, I've taken the "reusable sub- 
> categorisation" approach. I've successfully created the  
> secondaryCategory.cfc which extends  
> farcry.core.packages.formtools.category. I've copied the edit()  
> method and was able to verify through cfdebugging that this is being  
> used for rendering the secondary category property.
>
> Now, here's where I'm confused. First, I've added the  
> ftPrimaryCategory key to the param'd metadata.
>
> Next, when you say "Set ftAlias to the value of that attribute" I'm  
> not sure exactly where you are referring to. By ftAlias, do you mean  
> the other metadata params in the edit method (as in  
> arguments.metadata.ftAlias)? Or, is this the ftAlias attribute in  
> the cfproperty for the secondary category definition? I've added  
> ftWatch to the cfproperty with the name of the primary dropdown  
> property.
>
> Also, this may or may not have anything to do with anything, but...
> I've been digging through the formtools code as well as the wiki to  
> try and figure this out on my own, but I don't seem to really be  
> getting anywhere... It looks like the ajax dependency selects is  
> implemented via farcry.core.packages.formtools.field.addWatch(). So,  
> I searched all the files to see where addWatch() is being called.  
> Other than a recursive call in the method itself, it looks like it's  
> being called only from the object.cfm formtools tag. I set up a  
> trace to see how this was being called from my custom type and it  
> doesn't appear anywhere. I checked some other types and see that it  
> is being called (except from News, which my type is based upon).  
> Wonder if this could be one reason why I'm having problems?
>
> Also, I'm looking to just grab just one level of categories.  
> Currently, based on the structure below, if I set ftAlias="content"  
> the dropdown contains all categories below it. I would like to just  
> get the items at the first level beneath "Content". Once a primary  
> is selected, my secondary category dropdown would then be populated  
> with the level 3 categories.
>
> root
> - Content
> -- Magazine Title 1 (primary)
> --- Column 1 (secondary)
> --- Column 2
> ...
> -- Magazine Title 2
> --- Column 3
> --- Column 4
> ...
>
>
> Anyway, I hope this is clear. Thank you so much for helping with  
> this, I'm pretty new to FarCry but so far I'm very impressed with  
> the potential
>
> -Nick
>
>
> On Feb 1, 2009, at 5:47 PM, Blair McKenzie wrote:
>
>> You can have the first item by using ftType="category",  
>> ftAlias="parentcategoryalias" and ftRenderType="dropdown" (I think).
>>
>> For the second one, you will probably need to write a custom  
>> formtool code.
>>
>> Two approaches.
>>
>> ONCE OFF CUSTOMISATION
>> 1) Add a function named like ftEditYourSecondaryProperty to the  
>> custom type. Open up core/packages/formtools/category.cfc and copy  
>> the arguments and code from the edit function into yours.
>> 2) Look for where ftAlias is param'd / used, and change the code so  
>> that the value of the primary property is used instead
>> 3) In the cfproperty definition, add ftWatch="primarypropertyname".  
>> This will add ajax to the form that updates the field when the  
>> primary property changes.
>>
>> REUSABLE SUB-CATEGORISATION
>> 1) Extend formtools/category.cfc in your project to  
>> secondarycategory.cfc (or whatever)
>> 2) Copy the edit function from category.cfc to your formtool
>> 3) Param another metadata attribute ftPrimaryCategory. Set ftAlias  
>> to the value of that attribute.
>> 4) In the cfproperty definition, set ftType="secondarycategory"
>> 5) Add ftWatch="primarypropertyname". This will add ajax to the  
>> form that updates the field when the primary property changes.
>>
>> On Mon, Feb 2, 2009 at 12:07 AM, nicholas sollecito <[email protected] 
>> > wrote:
>> 5.1
>>
>>
>> On Jan 31, 2009, at 11:23 PM, Blair McKenzie <[email protected]>  
>> wrote:
>>
>>> What version of FarCry are you using?
>>>
>>> On Sun, Feb 1, 2009 at 10:34 AM, Nick S. <[email protected]>  
>>> wrote:
>>>
>>> I have a custom Article content type. I would like to use the  
>>> built-in
>>> categorization in FarCry as a way to apply a Category and sub- 
>>> category
>>> to the content. Is there a way to implement a dependent select so  
>>> that
>>> the user must first a Category from a drop-down and then a separate
>>> list box will be populated with the sub-categories to select from?
>>>
>>> I'm currently using form tools and I'm not sure how to further
>>> customize the form to allow for this type of interaction. Let me  
>>> know
>>> if this is a possibility, I can't seem to find this functionality
>>> either in the wiki or mailing list.
>>>
>>> Thanks in advance,
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
>>
>
>
>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"farcry-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/farcry-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to