[jira] Created: (OFBIZ-322) Form widget header link (for sorting) doesn't render if fields have use-whens

Posted by Nicolas Malin (Jira) on
URL: http://ofbiz.116.s1.nabble.com/jira-Created-OFBIZ-322-Form-widget-header-link-for-sorting-doesn-t-render-if-fields-have-use-whens-tp172593.html

Form widget header link (for sorting) doesn't render if fields have use-whens
-----------------------------------------------------------------------------

                 Key: OFBIZ-322
                 URL: http://issues.apache.org/jira/browse/OFBIZ-322
             Project: OFBiz (The Open for Business Project)
          Issue Type: Bug
          Components: framework
    Affects Versions: SVN trunk
            Reporter: Jacques Le Roux
         Assigned To: Jacques Le Roux
            Priority: Minor
             Fix For: SVN trunk


From Leon Torres in http://jira.undersunconsulting.com/browse/OFBIZ-830

Ok this is a tricky bug to describe, so I'll do this by example. Suppose you have a form "ListParties" that you re-use all over and it needs two behaviors for the "partyId" field:

1. Normal behavior: Show the partyId as a hyperlink to the viewParty page.
2. LookupParty behavior: In a LookupParty popup that uses ListParties, have the partyId hyperlink do a javascript:set_value(partyId) instead.

This is a common scenario, where one has to re-use a field for different purposes. The form widget supports this with the use-when attribute. One way to set it up is to use the same field name="" and give them both use-whens as follows,

<field name="partyId" header-link="sortLink" use-when="isLookup==false">
  <hyperlink description="${partyId}" target="viewPartyLink?partyId=${partyId}"/>
</field>

<field name="partyId" use-when="isLookup==true">
  <hyperlink also-hidden="false" target-type="plain" description="${partyId}"
      target="javascript:set_value('${partyId}')"/>
</field>

So in a lookup form, only the second one will be used.

The bug is that the header-link="sortLink" will not work. The sort link is not rendered in the header, preventing the user from sorting by partyId.

However, if you swap the order of the field elements such that the header-link one is second, it will work.

I traced this bug to ModelForm.java renderHeaderRow() where it decides how to render the header-link. The current code marked "Modification Nicolas" is not doing the right thing. It should be evaluating the use-when and comparing it to any other one before deciding to continue.

For now the workaround is to make sure the header-link element comes after the other one.

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