[ 
http://issues.apache.org/jira/browse/COCOON-1825?page=comments#action_12413991 
] 

Sylvain Wallez commented on COCOON-1825:
----------------------------------------

I don't see how surrounding the <table> with a <span> changes something. Or... 
I remember of a bug in IE that doesn't like tables to be replaced in JavaScript 
or something related.

Adding an element for <fi:group> and <fi:struct> is good, but I'm wondering if 
this should be a <div> rather than a <span>.

<fi:placeholder> are used to mark the place of hidden widgets and should be 
kept empty.

> 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
>     Assignee: 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

Reply via email to