the idea is that the html code is created by ftl macros, the macro calls are executed by the Screen/FormRenderers
I am working on it in my very limited spare time but I would be more than happy to share the code, especially if others will help me to complete the implementation.
Cheers, Jacopo On Mar 2, 2009, at 5:38 AM, guo weizhan wrote:
that's a good idea, I will submit a jira issue later. 2009/3/2 Bruno Busco <[email protected]>Hi Guo, this looks interesting! I think the best would be submitting a simple patch in a jira issue when you have some ready. -Bruno 2009/3/1 guo weizhan <[email protected]>:Hi all, We are creating the "theme" for the ofbiz widget form, why we createthis?We found it's very difficultty to extend the current form widget, all thewidget generation code is hard code in HtmlFormRenderer, we need tochangethis file if we want to add some function to the form, like ajax. And yes, we have some ajax function in ofbiz now, but the code of HtmlFormRenderer with ajax is much harder for understanding.like the code: "if(ajaxEnabled)". In fact , we want to implement the dojofunction in ofbiz without mess.So we decide to extract the hard code is responsible for the html form generation to the ftl files, like the struts2 does. If you know wellaboutstruts2, then you will also know the form theme we are creating. Those ftl files is responsible for the html code generation, liketext.ftl:<input type="text"<#rt/> name="${rp.name?default( <http://rp.name?default%28>"")?html}"<#rt/> <#include "class.ftl" /> <#if rp.value?exists> <#escape x as x?html> value="${rp.value}" </#escape> <#rt/> </#if> <#if rp.textSize?exists> size="${rp.textSize?html}"<#rt/> </#if> <#if rp.maxlength?exists> maxlength="${rp.maxlength?html}"<#rt/> </#if> <#if rp.textId?exists> id="${rp.textId?html}"<#rt/> </#if> <#if rp.event?exists && rp.action?exists> ${rp.event?html}="${rp.action?html}"<#rt/> </#if> <#if rp.clientAutocomplete?exists && !rp.clientAutocomplete> autocomplete="off"<#rt/> </#if> />Then, in the renderTextField method, we use the ftl file to generate thehtml text instand of the hard code.Finally,we can have different themes like simple/text.ftl ajax/ text.ftland dojo/text.ftl. By setting the theme with code"theme=simple/ajax/dojo ", the corresponding theme file like text.ftl will be loaded. Theattachmentis the dojo theme capture.If you are interested or have any advises, we can discuss it in detail.
smime.p7s
Description: S/MIME cryptographic signature
