that's a good idea, I will submit a jira issue later. 2009/3/2 Bruno Busco <bruno.bu...@gmail.com>
> 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 <guo.weiz...@gmail.com>: > > 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( <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 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. > > > > >