Kamal pisze:
Hi,
I have been struggling with CForms, trying to work out what I did wrong.
I think I found a couple of bugs in CForms.
I have a form that dynamically reveal sets of fields based on whether a
tick box has been checked. Because I was using a very old version of
CForms (2.1.7), I couldn't use the group method, so I had to reveal/hide
each field separately. I found out that this approach is not compatible
with CForms + Ajax because the labels are not updated. Also, the Cocoon
website says to put a div around all fields in a ft:group for Ajax. I
did this, but it kept failing. I had a look at the code and I found this:
<xsl:template match="fi:[EMAIL PROTECTED] and count(*) = 1 and not(fi:*)]">
<xsl:apply-templates mode="copy-parent-id"/>
</xsl:template>
<xsl:template match="fi:group">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="fi:group" mode="copy-parent-id"> <xsl:copy>
<xsl:attribute name="id"><xsl:value-of
select="../@id"/></xsl:attribute>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
I changed it to this:
<!--+
| fi:group - has no visual representation by default
| If the fi:group contains an id and has only one child that is not
in the fi: namespace,
| then copy the id to the child. This is needed for ajax when
grouping is just used to group
| widgets.
+-->
<xsl:template match="fi:[EMAIL PROTECTED] and count(*) = 1 and not(fi:*)]">
<xsl:apply-templates mode="copy-parent-id"/>
</xsl:template>
<xsl:template match="fi:group">
<xsl:apply-templates/>
</xsl:template>
*<xsl:template match="*" mode="copy-parent-id"> * <xsl:copy>
<xsl:attribute name="id"><xsl:value-of
select="../@id"/></xsl:attribute>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
and it all works. Is my fix correct? If so, should I create a patch
and/or Jira ticket?'
Yep, creating issue in JIRA is the best option. If you attach a patch, could you please provide a
more detailed explanation why you need match="*" here? I'm not sure if I understand your problem
correctly.
Also, the booleanfield no longer works the way it used to in 2.1.
Namely, I used to be able to do this:
if (widget.value == 'false')
{
// Do something.
}
Now, it is returning a Boolean object (maybe it always did, I don't
know) and I now have to do this:
if (widget.value.toString().equals('false'))
Any thoughts? Is it a good idea to return a string instead?
Returning a String is not a good idea for several reasons (e.g. API change). I guess that the
changed behavior may come from the upgraded Rhino version.
Have you tried:
if (widget.value == false)
?
Finally, my previous post (BTW, sorry for all the emails) mentioned
javascript files that are missing/in the wrong spot. I had a look at the
logs and these files are still being requested, but they are not
impacting on the rendering of the page. However, for the life of me, I
cannot find the references to these files on my page.
Are you sure that request for these files are coming from browser and not from
a block?
Also, I know we have an ongoing issue with tabs and validation errors
not working. I was wondering about the rationale for not using
bu:replace on the appropriate divs to fix these issues?
Can you elaborate here?
--
Grzegorz Kossakowski
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]