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

Reply via email to