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 create this? > We found it's very difficultty to extend the current form widget, all the > widget generation code is hard code in HtmlFormRenderer, we need to change > this 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 dojo > function 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 well about > struts2, then you will also know the form theme we are creating. > > Those ftl files is responsible for the html code generation, like text.ftl: > <input type="text"<#rt/> > name="${rp.name?default("")?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 the > html text instand of the hard code. > > Finally,we can have different themes like simple/text.ftl ajax/text.ftl > and dojo/text.ftl. By setting the theme with code "theme=simple/ajax/dojo " > , the corresponding theme file like text.ftl will be loaded. The attachment > is the dojo theme capture. > > If you are interested or have any advises, we can discuss it in detail. > >
