[ http://issues.apache.org/jira/browse/COCOON-1825?page=all ]
Antonio Gallardo updated COCOON-1825: ------------------------------------- Would you provide a full patch? The latest looks like a partial patch without the initial patch. > [PATCH] Ajax error when an active state widget become invisible state widget > ---------------------------------------------------------------------------- > > Key: COCOON-1825 > URL: http://issues.apache.org/jira/browse/COCOON-1825 > Project: Cocoon > Issue Type: Bug > Components: Blocks: Forms > Affects Versions: 2.1.9 > Reporter: vincent Demay > Assigned To: Antonio Gallardo > > Some widget (field with selection-list and styling=radio, group, etc...) can > not be hidden (state=invisible)in ajax mode. > I declare some widgets without state attribute in the form definition, my > form is in ajax mode, when I set the widget state to INVISIBLE, the ajax > response can not be applied to the form because <span > id="widget-name">...</span> is not available in source code. > I think about 2 patches : > *putting a <span></span> in forms-field-styling.xsl where is not set > *or modifing abstractWidgetDefinition.java in ordre to generate a placeholder > around each widget (but patch seems to need a lot of modification in > forms-field-styling.xsl too) > Here is the patch for first > --- forms-field-styling.orig 2006-04-13 15:37:06.590221200 +0200 > +++ forms-field-styling.xsl 2006-04-13 15:38:22.525291200 +0200 > @@ -198,8 +198,9 @@ > <xsl:variable name="value" select="fi:value"/> > <xsl:variable name="vertical" > select="string(fi:styling/@list-orientation) != 'horizontal'"/> > <xsl:choose> > - <xsl:when test="$vertical"> > - <table id="{$id}" cellpadding="0" cellspacing="0" border="0" > title="{fi:hint}"> > + <xsl:when test="$vertical"> > + <span id="{$id}"> > + <table id="{$id}" cellpadding="0" cellspacing="0" border="0" > title="{fi:hint}"> > <xsl:for-each select="fi:selection-list/fi:item"> > <xsl:variable name="item-id" select="concat($id, ':', > position())"/> > <tr> > @@ -224,6 +225,7 @@ > </tr> > </xsl:for-each> > </table> > + </span> > </xsl:when> > <xsl:otherwise> > <span id="{$id}" title="{fi:hint}"> > @@ -682,22 +684,24 @@ > | know where to insert the widget if it becomes visible > +--> > <xsl:template match="fi:placeholder"> > - <span id="[EMAIL PROTECTED]"/> > + <span id="[EMAIL PROTECTED]"><xsl:apply-templates/></span> > </xsl:template> > > <!--+ > | fi:struct - has no visual representation by default > +--> > <xsl:template match="fi:struct"> > - <xsl:apply-templates/> > + <span id="[EMAIL PROTECTED]"><xsl:apply-templates/></span> > </xsl:template> > > <!--+ > | fi:group - has no visual representation by default > +--> > <xsl:template match="fi:group"> > - <xsl:apply-templates/> > + <span id="[EMAIL PROTECTED]"><xsl:apply-templates/></span> > </xsl:template> > + > + > > <xsl:template match="@*|node()" priority="-1"> > <xsl:copy> > Here for the second > --- AbstractWidget.orig 2006-04-13 15:31:07.851701200 +0200 > +++ AbstractWidget.java 2006-04-13 15:30:31.446616200 +0200 > @@ -483,6 +483,10 @@ > public void generateSaxFragment(ContentHandler contentHandler, Locale > locale) > throws SAXException { > > + AttributesImpl placeHolderAttrs = new AttributesImpl(); > + placeHolderAttrs.addCDATAAttribute("id", getRequestParameterName()); > + contentHandler.startElement(FormsConstants.INSTANCE_NS, > "placeholder", FormsConstants.INSTANCE_PREFIX_COLON + "placeholder", > placeHolderAttrs); > + > if (getCombinedState().isDisplayingValues()) { > // FIXME: we may want to strip out completely widgets that > aren't updated when in AJAX mode > String element = this.getXMLElementName(); > @@ -497,15 +501,9 @@ > > generateItemSaxFragment(contentHandler, locale); > > - contentHandler.endElement(FormsConstants.INSTANCE_NS, element, > FormsConstants.INSTANCE_PREFIX_COLON + element); > - > - } else { > - // Generate a placeholder that can be used later by AJAX updates > - AttributesImpl attrs = new AttributesImpl(); > - attrs.addCDATAAttribute("id", getRequestParameterName()); > - contentHandler.startElement(FormsConstants.INSTANCE_NS, > "placeholder", FormsConstants.INSTANCE_PREFIX_COLON + "placeholder", attrs); > - contentHandler.endElement(FormsConstants.INSTANCE_NS, > "placeholder", FormsConstants.INSTANCE_PREFIX_COLON + "placeholder"); > + contentHandler.endElement(FormsConstants.INSTANCE_NS, element, > FormsConstants.INSTANCE_PREFIX_COLON + element); > } > + contentHandler.endElement(FormsConstants.INSTANCE_NS, "placeholder", > FormsConstants.INSTANCE_PREFIX_COLON + "placeholder"); > } > > public Object getAttribute(String name) { -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira