cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg Heinicke (JIRA) <j...@apache.org>
Subject [jira] Updated: (COCOON-1825) Ajax errror when an active state widget become invisible state widget
Date Thu, 12 Oct 2006 08:07:37 GMT
     [ http://issues.apache.org/jira/browse/COCOON-1825?page=all ]

Jörg Heinicke updated COCOON-1825:
----------------------------------


> 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
>          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="{@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.
-
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

       

Mime
View raw message