My apologies if I did this somehow out of order, it's my first contribution to 
a Open Source project.  Is there some other process to getting a patch verified 
and applied?  Is there a reason noone has commented on this, or why it hasn't 
been applied?

Curious,

Neal Haggard 

-----Original Message-----
From: Neal Haggard (JIRA) [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 13, 2005 5:28 PM
To: dev@myfaces.apache.org
Subject: [jira] Updated: (MYFACES-243) ClientId not used, so JSCookMenu fires 
multiple actions in tables

     [ http://issues.apache.org/jira/browse/MYFACES-243?page=all ]

Neal Haggard updated MYFACES-243:
---------------------------------

    Attachment: patch.txt

Here's my patch for HtmlJSCookMenuRenderer.java

> ClientId not used, so JSCookMenu fires multiple actions in tables
> -----------------------------------------------------------------
>
>          Key: MYFACES-243
>          URL: http://issues.apache.org/jira/browse/MYFACES-243
>      Project: MyFaces
>         Type: Bug
>     Versions: 1.0.9 beta
>     Reporter: Neal Haggard
>  Attachments: patch.txt
>
> The fix to add the id to the action (so that the proper action can be fired 
> on decode) works fine for multiple JSCookMenu components on the same page, 
> however when a JSCookMenu is placed in something that uses the component as a 
> template (such as within a HtmlDataTable's Column), the NamingContainer 
> doesn't get invoked, so a click on an action triggers once for every row in 
> the table.
> The simple fix is to change the call to getId() to getClientId(context), 
> however, that also requires a change to processDecodes, to change the 
> .indexOf(":") to .lastIndexOf(":").
> There are also some other underlying issues with the id in the rest of the 
> component.  The Javascript that defines the menu uses a generic variable name 
> of 'menuBar'.  If you have more than one JSCookMenu on the page with 
> different CommandNavigationItems, you will only get the last one.
> The solution to this is to supplement the JavaScript variable name with the 
> clientId, much like the div later in encodeEnd.
> I've tied all these changes together by creating a private method called 
> getMenuId() which encapsulates the logic behind getting the clientId(context) 
> and converting all the colons(:) to underscores(_).  Then in 
> encodeChildren(), encodeEnd() and encodeNavigationMenuItems(), I use this 
> method, so that the same id is used throughout.
> Also included in my patch is a quick-fix to allow null labels to not print 
> out the default value (1).
> Hopefully this will be a useful addition to the MyFaces Community.

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