Ajax errror when an active state widget become invisible state widget ---------------------------------------------------------------------
Key: COCOON-1825 URL: http://issues.apache.org/jira/browse/COCOON-1825 Project: Cocoon Type: Bug Components: Blocks: Forms Versions: 2.1.9 Reporter: vincent Demay 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