Sorry, it should be this:
<field name="stateProvinceGeoId">
<drop-down>
<entity-options entity-name="Geo" description="${geoName}" combine="or"
key-field-name="geoId">
<entity-constraint name="geoTypeId" value="STATE">
<entity-constraint name="geoTypeId" value="PROVINCE">
<entity-order-by field-name="geoName"/>
</entity-options>
</drop-down>
</field>
Jonathon
Jonathon -- Improov wrote:
Skip,
Yes, I knew we can include screen widgets in FTL. I told you "screens as
building blocks", remember?
Also, check out ${sections.render('section_name')}, by the way.
My problem is that I can't add less than a screen in FTL.
Consider that you have in FTL a HTML form. Somewhere inside that form,
you want to insert a <drop-down> widget. You can't, so you do what Si
Chen did, using FreeMarker macros.
Why are we doing a HTML form in FTL? Because as discussed often before,
some UIs just need to be complex and pretty and requires FTL.
Why am I trying to include <drop-down> widget into a HTML form in FTL?
Because it's more complex to use FTL <select>. Let me give a concrete
example. See ${component:party}/webapp/partymgr/party/editcontactmech.ftl .
See lines:
<select name="stateProvinceGeoId">
<option>${(mechMap.postalAddress.stateProvinceGeoId)?if_exists}</option>
<option></option>
${screens.render("component://common/widget/CommonScreens.xml#states")}
</select>
Looks simple enough?
See screen widget ${component:common}/widget/CommonScreens.xml#states .
It points to another FTL file in
/framework/common/webcommon/includes/states.ftl . Look in that
states.ftl , and see how a non-trivial CommonWorkers class is used.
If we can use widgets, it's just:
<field name="geoId">
<drop-down>
<entity-options entity-name="Geo" description="${geoName}"
combine="or">
<entity-constraint name="geoTypeId" value="STATE">
<entity-constraint name="geoTypeId" value="PROVINCE">
<entity-order-by field-name="geoName"/>
</entity-options>
</drop-down>
</field>
Compare the above <field> to the alternative now. See the <select>
chunk, plus the <screen name="states"> chunk, plus the states.ftl, plus
the CommonWorkers.getStateList() chunk.
Note note! The attribute "combine" in element <entity-options> does not
exist... yet. :) Currently, all <entity-constraint> elements are "ANDed"
together, not "ORed".
Jonathon
[EMAIL PROTECTED] wrote:
Yep, you can already do it, check out the screens.render line
#if collectionSummary?has_content>
<div class="screenlet-body">
<table width="100%" border="0" cellspacing="5">
<tr>
<td width="50%">
${screens.render("component://ar/widget/opentaps/collections/screens/Collect
ionScreens.xml#collectionWorkArea")}
</td>
<td width="50%">
<#if chartURL?has_content>
<img src="${chartURL}" style="vertical-align:middle;
margin-left:35px"/>
<#else>
No chart Image
</#if>
</td>
</tr>
</table>
</div>
<#else>
${uiLabelMap.PartyNoPartyFoundWithPartyId}:
${parameters.partyId?if_exists}
</#if>
-----Original Message-----
From: Jonathon -- Improov [mailto:[EMAIL PROTECTED]
Sent: Tuesday, December 04, 2007 1:02 AM
To: user@ofbiz.apache.org
Subject: Re: Any plan to allow field widgets like <drop-down> inside
<screen>?
Skip,
Do you mean it can currently be done already? Didn't know this.
Or you mean it's a good step forward?
Right now, whenever widgets are inadequate, a common practice (maybe the
only feasible one) is to
jump right into FTL and forget about widgets.
(But if you can do all-widget forms and all-ftl forms, they do mix. I
replied to your post about
the "screens as building blocks" thing.)
The lack of widgets (like convenient <drop-down>) in FTL is possibly the
main motivation behind Si
Chen's (opentaps) route with FreeMarker macros. Was mine too, at one
time. I
had a library of
macros (sold, privatized, again, sigh).
Jonathon
[EMAIL PROTECTED] wrote:
Widgets in FTL is the only way currently to get some things done if you
want
to use widgets.
Skip
-----Original Message-----
From: Jonathon -- Improov [mailto:[EMAIL PROTECTED]
Sent: Monday, December 03, 2007 5:36 PM
To: user@ofbiz.apache.org
Subject: Re: Any plan to allow field widgets like <drop-down> inside
<screen>?
Actually, this isn't going backwards. It's going forward.
Some screens are best done in ftl. This was discussed countless times
before.
In getting ftl screens to use field widgets, we reuse more of OFBiz's
widgets in more places. This
will bring us closer to using more of widgets.
Jonathon
BJ Freeman wrote:
seems your going backwards.
remove the ftl and use screen widgets that include formwidgets.
add a class (style) and use the css for aligning tables.
Jonathon -- Improov sent the following on 12/2/2007 8:48 PM:
The problem I'm facing now is that form widgets always have the start
and end wrappers (<table cellspacing...> and </table). It is not
possible to mix fields from one form into another form done in ftl.
Attributes skip-start and skip-end only remove the <form> wrapper.
Getting form widgets to say skip-table could solve this problem,
though
it's not intuitive to use form widgets as field widgets. Better to use
field widgets in screen widgets instead. However, this approach
could be
a quick interim fix.
Another problem is the colspan for <td>. Maybe we can make that
variable.
Field widgets like <drop-down> are fantastic. It's a pity we can't use
them inside of creative displays written in ftl.
Si Chen did some FreeMarker macros for these, I believe. But if we're
gonna strongly advocate widget usage, I think we need to fill that
void
in screen widgets. Going the FreeMarker macros route would basically
rewrite much of what is already provided by field widgets.
Maybe have a generic "group of fields" widget via <fields>?
Jonathon