You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Jörg Heinicke (JIRA)" <ji...@apache.org> on 2008/04/28 04:42:55 UTC
[jira] Assigned: (COCOON-1825) Ajax error when an active state
widget become invisible state widget
[ https://issues.apache.org/jira/browse/COCOON-1825?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jörg Heinicke reassigned COCOON-1825:
-------------------------------------
Assignee: Jörg Heinicke (was: Antonio Gallardo)
> Ajax error when an active state widget become invisible state widget
> --------------------------------------------------------------------
>
> Key: COCOON-1825
> URL: https://issues.apache.org/jira/browse/COCOON-1825
> Project: Cocoon
> Issue Type: Bug
> Components: Blocks: Forms
> Affects Versions: 2.1.9
> Reporter: Vincent Demay
> Assignee: Jörg Heinicke
>
> 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="{@id}"/>
> + <span id="{@id}"><xsl:apply-templates/></span>
> </xsl:template>
>
> <!--+
> | fi:struct - has no visual representation by default
> +-->
> <xsl:template match="fi:struct">
> - <xsl:apply-templates/>
> + <span id="{@id}"><xsl:apply-templates/></span>
> </xsl:template>
>
> <!--+
> | fi:group - has no visual representation by default
> +-->
> <xsl:template match="fi:group">
> - <xsl:apply-templates/>
> + <span id="{@id}"><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.
-
You can reply to this email to add a comment to the issue online.