Change ${...} to [=...] for freemarker template

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Change ${...} to [=...] for freemarker template

James Yong-2
Hi all,

Currently interpolation syntax used for freemarker template is ${...}.
This is the same as the interpolation syntax for template literal in javascript.
As a result, extra coding is needed to escape the interpolation expression for javascript coding with freemarker template.

Propose to change the use of ${...} to [=...] for freemarker template.

Reference:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals 
https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation

Regards,
James
Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

Jacques Le Roux
Administrator
Hi James,

I see no problems with that: +1

Jacques

Le 12/12/2020 à 10:43, James Yong a écrit :

> Hi all,
>
> Currently interpolation syntax used for freemarker template is ${...}.
> This is the same as the interpolation syntax for template literal in javascript.
> As a result, extra coding is needed to escape the interpolation expression for javascript coding with freemarker template.
>
> Propose to change the use of ${...} to [=...] for freemarker template.
>
> Reference:
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
>
> Regards,
> James

Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

Pawan Verma
Hi James,

What is the scope of this effort? Are we talking about changing it to all
the FTL code?

AFAIK, When square bracket interpolation syntax is used, ${expression} and
#{expression} in the template will be just static text, which is printed
as-is. That means all the existing code will become stale, we need to
change that also.

And there will also be concern about migration from lower-release to
higher-release.

Please share your thoughts on this.
--
Thanks & Regards
Pawan Verma
Technical Consultant
*HotWax Systems*
*Enterprise open source experts*
http://www.hotwaxsystems.com


On Sat, Dec 12, 2020 at 3:59 PM Jacques Le Roux <
[hidden email]> wrote:

> Hi James,
>
> I see no problems with that: +1
>
> Jacques
>
> Le 12/12/2020 à 10:43, James Yong a écrit :
> > Hi all,
> >
> > Currently interpolation syntax used for freemarker template is ${...}.
> > This is the same as the interpolation syntax for template literal in
> javascript.
> > As a result, extra coding is needed to escape the interpolation
> expression for javascript coding with freemarker template.
> >
> > Propose to change the use of ${...} to [=...] for freemarker template.
> >
> > Reference:
> >
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> >
> https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
> >
> > Regards,
> > James
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

James Yong-2
Hi Pawan,

Yes, all FTL code in framework and plugins will be changed.
Changes can be done using regular expression for the replacement.
So migration for custom or existing code should be relatively simple.

Regards,
James

On 2020/12/12 11:50:34, Pawan Verma <[hidden email]> wrote:

> Hi James,
>
> What is the scope of this effort? Are we talking about changing it to all
> the FTL code?
>
> AFAIK, When square bracket interpolation syntax is used, ${expression} and
> #{expression} in the template will be just static text, which is printed
> as-is. That means all the existing code will become stale, we need to
> change that also.
>
> And there will also be concern about migration from lower-release to
> higher-release.
>
> Please share your thoughts on this.
> --
> Thanks & Regards
> Pawan Verma
> Technical Consultant
> *HotWax Systems*
> *Enterprise open source experts*
> http://www.hotwaxsystems.com
>
>
> On Sat, Dec 12, 2020 at 3:59 PM Jacques Le Roux <
> [hidden email]> wrote:
>
> > Hi James,
> >
> > I see no problems with that: +1
> >
> > Jacques
> >
> > Le 12/12/2020 à 10:43, James Yong a écrit :
> > > Hi all,
> > >
> > > Currently interpolation syntax used for freemarker template is ${...}.
> > > This is the same as the interpolation syntax for template literal in
> > javascript.
> > > As a result, extra coding is needed to escape the interpolation
> > expression for javascript coding with freemarker template.
> > >
> > > Propose to change the use of ${...} to [=...] for freemarker template.
> > >
> > > Reference:
> > >
> > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> > >
> > https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
> > >
> > > Regards,
> > > James
> >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

Michael Brohl-3
In reply to this post by James Yong-2
Hi James,

I cannot recall having any problems with that during the last 18 years
of running OFBiz projects.

Can you give us a real world example where this really is a problem?

Besides this, I am not in favour of a forced change in all of the
codebase. Wouldn't it be possible to use both ways, leaving it up to the
developer to use the [=...] Syntax where necessary?

Best regards,

Michael Brohl

ecomify GmbH - www.ecomify.de


Am 12.12.20 um 10:43 schrieb James Yong:

> Hi all,
>
> Currently interpolation syntax used for freemarker template is ${...}.
> This is the same as the interpolation syntax for template literal in javascript.
> As a result, extra coding is needed to escape the interpolation expression for javascript coding with freemarker template.
>
> Propose to change the use of ${...} to [=...] for freemarker template.
>
> Reference:
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
>
> Regards,
> James
Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

James Yong-2
Hi Michael,

Please see my reply inline.

Regards,
James

On 2020/12/14 08:12:26, Michael Brohl <[hidden email]> wrote:
> Hi James,
>
> I cannot recall having any problems with that during the last 18 years
> of running OFBiz projects.
>
> Can you give us a real world example where this really is a problem?

[James]
Some advantage of using template literal:

1. The following fragment will be highlighted or blocked by Content-Security-Policy due to the inline event handler. This is not a problem when the fragment is in template literal.
<button id="btn" onclick="doSomething()">

2. Form and its data can be separated / decoupled using template literal. This allows the form to be rendered only once at the server-side.

3. There is also tagged template literal. More about its possible use at https://2ality.com/2011/09/quasi-literals.html

>
> Besides this, I am not in favour of a forced change in all of the
> codebase. Wouldn't it be possible to use both ways, leaving it up to the
> developer to use the [=...] Syntax where necessary?

[James]
Let me check this possibility..

>
> Best regards,
>
> Michael Brohl
>
> ecomify GmbH - www.ecomify.de
>
>
> Am 12.12.20 um 10:43 schrieb James Yong:
> > Hi all,
> >
> > Currently interpolation syntax used for freemarker template is ${...}.
> > This is the same as the interpolation syntax for template literal in javascript.
> > As a result, extra coding is needed to escape the interpolation expression for javascript coding with freemarker template.
> >
> > Propose to change the use of ${...} to [=...] for freemarker template.
> >
> > Reference:
> > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> > https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
> >
> > Regards,
> > James
>
Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

James Yong-2
Hi all,

Thanks for the feedbacks.

Plan to allow freemarker square interpolation syntax, i.e. [=...],
when the template filename extension is '.sqi.ftl'.
So it will not affect existing templates that doesn't use js template literal.
sqi is abbreviation for square interpolation.

Regards,
James

On 2020/12/15 12:38:32, James Yong <[hidden email]> wrote:

> Hi Michael,
>
> Please see my reply inline.
>
> Regards,
> James
>
> On 2020/12/14 08:12:26, Michael Brohl <[hidden email]> wrote:
> > Hi James,
> >
> > I cannot recall having any problems with that during the last 18 years
> > of running OFBiz projects.
> >
> > Can you give us a real world example where this really is a problem?
>
> [James]
> Some advantage of using template literal:
>
> 1. The following fragment will be highlighted or blocked by Content-Security-Policy due to the inline event handler. This is not a problem when the fragment is in template literal.
> <button id="btn" onclick="doSomething()">
>
> 2. Form and its data can be separated / decoupled using template literal. This allows the form to be rendered only once at the server-side.
>
> 3. There is also tagged template literal. More about its possible use at https://2ality.com/2011/09/quasi-literals.html
>
> >
> > Besides this, I am not in favour of a forced change in all of the
> > codebase. Wouldn't it be possible to use both ways, leaving it up to the
> > developer to use the [=...] Syntax where necessary?
>
> [James]
> Let me check this possibility..
>
> >
> > Best regards,
> >
> > Michael Brohl
> >
> > ecomify GmbH - www.ecomify.de
> >
> >
> > Am 12.12.20 um 10:43 schrieb James Yong:
> > > Hi all,
> > >
> > > Currently interpolation syntax used for freemarker template is ${...}.
> > > This is the same as the interpolation syntax for template literal in javascript.
> > > As a result, extra coding is needed to escape the interpolation expression for javascript coding with freemarker template.
> > >
> > > Propose to change the use of ${...} to [=...] for freemarker template.
> > >
> > > Reference:
> > > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> > > https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
> > >
> > > Regards,
> > > James
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Change ${...} to [=...] for freemarker template

James Yong-2
Created OFBIZ-12099 for this new feature.

On 2020/12/20 07:41:03, James Yong <[hidden email]> wrote:

> Hi all,
>
> Thanks for the feedbacks.
>
> Plan to allow freemarker square interpolation syntax, i.e. [=...],
> when the template filename extension is '.sqi.ftl'.
> So it will not affect existing templates that doesn't use js template literal.
> sqi is abbreviation for square interpolation.
>
> Regards,
> James
>
> On 2020/12/15 12:38:32, James Yong <[hidden email]> wrote:
> > Hi Michael,
> >
> > Please see my reply inline.
> >
> > Regards,
> > James
> >
> > On 2020/12/14 08:12:26, Michael Brohl <[hidden email]> wrote:
> > > Hi James,
> > >
> > > I cannot recall having any problems with that during the last 18 years
> > > of running OFBiz projects.
> > >
> > > Can you give us a real world example where this really is a problem?
> >
> > [James]
> > Some advantage of using template literal:
> >
> > 1. The following fragment will be highlighted or blocked by Content-Security-Policy due to the inline event handler. This is not a problem when the fragment is in template literal.
> > <button id="btn" onclick="doSomething()">
> >
> > 2. Form and its data can be separated / decoupled using template literal. This allows the form to be rendered only once at the server-side.
> >
> > 3. There is also tagged template literal. More about its possible use at https://2ality.com/2011/09/quasi-literals.html
> >
> > >
> > > Besides this, I am not in favour of a forced change in all of the
> > > codebase. Wouldn't it be possible to use both ways, leaving it up to the
> > > developer to use the [=...] Syntax where necessary?
> >
> > [James]
> > Let me check this possibility..
> >
> > >
> > > Best regards,
> > >
> > > Michael Brohl
> > >
> > > ecomify GmbH - www.ecomify.de
> > >
> > >
> > > Am 12.12.20 um 10:43 schrieb James Yong:
> > > > Hi all,
> > > >
> > > > Currently interpolation syntax used for freemarker template is ${...}.
> > > > This is the same as the interpolation syntax for template literal in javascript.
> > > > As a result, extra coding is needed to escape the interpolation expression for javascript coding with freemarker template.
> > > >
> > > > Propose to change the use of ${...} to [=...] for freemarker template.
> > > >
> > > > Reference:
> > > > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
> > > > https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html#dgui_misc_alternativesyntax_interpolation
> > > >
> > > > Regards,
> > > > James
> > >
> >
>