You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by James Yong <ja...@apache.org> on 2020/05/07 11:48:32 UTC

new widget

Hi all,

Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
e.g.
<platform-specific>
	<html>
		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>

will render as:
<html>
	<head>
	…
		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
	</head>

This will allow inline script from a freemarker file, to be rendered as external script in html.

Regards,
James

Re: new <script-template> widget

Posted by James Yong <ja...@apache.org>.
Hi all,

While extracting the scripts from html-template to script-template and testing the changes, 
I found the process to be cumbersome.

So I made a change not to use script-template tag but add a multi-block attribute to html-template tag.
When multi-block=true, inline scripts will be extracted automatically from any script tag and converted to external script. 
So no need to extract script from the freemarker template. 
Coding for script-template tag is removed

Also upload an updated patch at JIRA for the new change described. 

Regards,
James 

On 2020/05/11 10:37:11, Jacques Le Roux <ja...@les7arts.com> wrote: 
> Hi James,
> 
> Yes, it already exists. Unfortunately for years as it's a major change.
> 
> https://issues.apache.org/jira/browse/OFBIZ-9976
> 
> It will be interesting to see if after your proposed effort much work remains for require.js. It could be then done...
> 
> Jacques
> 
> Le 11/05/2020 à 12:21, James Yong a écrit :
> > Hi Jacques,
> >
> > I think having RequireJs for loading dependencies, can go in another JIRA issue.
> > It requires us to change the way Javascript coding is done.
> >
> > Regards,
> > James
> >
> > On 2020/05/10 12:58:49, Jacques Le Roux <ja...@les7arts.com> wrote:
> >> Hi James,
> >>
> >> I  know it's not all of them as you already mentioned. But could not some these of these scripts be handled by Require.js?
> >>
> >> Jacques
> >>
> >> Le 10/05/2020 à 14:32, James Yong a écrit :
> >>> Hi Michael,
> >>>
> >>> There are CSP errors being logged in the browser console, due to the use of inline javascripts.
> >>>
> >>> The proposed method allow us to:
> >>> 1. convert the inline javascripts into external scripts for better CSP compliance.
> >>> 2. use freemarker macros in the scripts.
> >>> 3. place the extracted javascript in the same directory as the original freemarker template file, to save time locating and editing the 2 related files.
> >>>
> >>> Regards,
> >>> James
> >>>
> >>> On 2020/05/10 09:53:47, Michael Brohl <mi...@ecomify.de> wrote:
> >>>> Hi James,
> >>>>
> >>>> can you explain the purpose of this? Why not just use a JavaScript file
> >>>> and a decorator?
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Michael Brohl
> >>>>
> >>>> ecomify GmbH - www.ecomify.de
> >>>>
> >>>>
> >>>> Am 10.05.20 um 06:53 schrieb James Yong:
> >>>>> Hi all,
> >>>>>
> >>>>> I have created a JIRA issue for this, i.e. OFBIZ-11686.
> >>>>> Decided not to have a placement attribute because script will always be placed after body tag.
> >>>>>
> >>>>> Regards,
> >>>>> James
> >>>>>
> >>>>> On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote:
> >>>>>> Hi all,
> >>>>>>
> >>>>>> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
> >>>>>> e.g.
> >>>>>> <platform-specific>
> >>>>>> 	<html>
> >>>>>> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
> >>>>>>
> >>>>>> will render as:
> >>>>>> <html>
> >>>>>> 	<head>
> >>>>>> 	…
> >>>>>> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
> >>>>>> 	</head>
> >>>>>>
> >>>>>> This will allow inline script from a freemarker file, to be rendered as external script in html.
> >>>>>>
> >>>>>> Regards,
> >>>>>> James
> >>>>>>
> 

Re: new <script-template> widget

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi James,

Yes, it already exists. Unfortunately for years as it's a major change.

https://issues.apache.org/jira/browse/OFBIZ-9976

It will be interesting to see if after your proposed effort much work remains for require.js. It could be then done...

Jacques

Le 11/05/2020 à 12:21, James Yong a écrit :
> Hi Jacques,
>
> I think having RequireJs for loading dependencies, can go in another JIRA issue.
> It requires us to change the way Javascript coding is done.
>
> Regards,
> James
>
> On 2020/05/10 12:58:49, Jacques Le Roux <ja...@les7arts.com> wrote:
>> Hi James,
>>
>> I  know it's not all of them as you already mentioned. But could not some these of these scripts be handled by Require.js?
>>
>> Jacques
>>
>> Le 10/05/2020 à 14:32, James Yong a écrit :
>>> Hi Michael,
>>>
>>> There are CSP errors being logged in the browser console, due to the use of inline javascripts.
>>>
>>> The proposed method allow us to:
>>> 1. convert the inline javascripts into external scripts for better CSP compliance.
>>> 2. use freemarker macros in the scripts.
>>> 3. place the extracted javascript in the same directory as the original freemarker template file, to save time locating and editing the 2 related files.
>>>
>>> Regards,
>>> James
>>>
>>> On 2020/05/10 09:53:47, Michael Brohl <mi...@ecomify.de> wrote:
>>>> Hi James,
>>>>
>>>> can you explain the purpose of this? Why not just use a JavaScript file
>>>> and a decorator?
>>>>
>>>> Thanks,
>>>>
>>>> Michael Brohl
>>>>
>>>> ecomify GmbH - www.ecomify.de
>>>>
>>>>
>>>> Am 10.05.20 um 06:53 schrieb James Yong:
>>>>> Hi all,
>>>>>
>>>>> I have created a JIRA issue for this, i.e. OFBIZ-11686.
>>>>> Decided not to have a placement attribute because script will always be placed after body tag.
>>>>>
>>>>> Regards,
>>>>> James
>>>>>
>>>>> On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
>>>>>> e.g.
>>>>>> <platform-specific>
>>>>>> 	<html>
>>>>>> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
>>>>>>
>>>>>> will render as:
>>>>>> <html>
>>>>>> 	<head>
>>>>>> 	…
>>>>>> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
>>>>>> 	</head>
>>>>>>
>>>>>> This will allow inline script from a freemarker file, to be rendered as external script in html.
>>>>>>
>>>>>> Regards,
>>>>>> James
>>>>>>

Re: new <script-template> widget

Posted by James Yong <ja...@apache.org>.
Hi Jacques,

I think having RequireJs for loading dependencies, can go in another JIRA issue.
It requires us to change the way Javascript coding is done.

Regards,
James

On 2020/05/10 12:58:49, Jacques Le Roux <ja...@les7arts.com> wrote: 
> Hi James,
> 
> I  know it's not all of them as you already mentioned. But could not some these of these scripts be handled by Require.js?
> 
> Jacques
> 
> Le 10/05/2020 à 14:32, James Yong a écrit :
> > Hi Michael,
> >
> > There are CSP errors being logged in the browser console, due to the use of inline javascripts.
> >
> > The proposed method allow us to:
> > 1. convert the inline javascripts into external scripts for better CSP compliance.
> > 2. use freemarker macros in the scripts.
> > 3. place the extracted javascript in the same directory as the original freemarker template file, to save time locating and editing the 2 related files.
> >
> > Regards,
> > James
> >
> > On 2020/05/10 09:53:47, Michael Brohl <mi...@ecomify.de> wrote:
> >> Hi James,
> >>
> >> can you explain the purpose of this? Why not just use a JavaScript file
> >> and a decorator?
> >>
> >> Thanks,
> >>
> >> Michael Brohl
> >>
> >> ecomify GmbH - www.ecomify.de
> >>
> >>
> >> Am 10.05.20 um 06:53 schrieb James Yong:
> >>> Hi all,
> >>>
> >>> I have created a JIRA issue for this, i.e. OFBIZ-11686.
> >>> Decided not to have a placement attribute because script will always be placed after body tag.
> >>>
> >>> Regards,
> >>> James
> >>>
> >>> On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote:
> >>>> Hi all,
> >>>>
> >>>> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
> >>>> e.g.
> >>>> <platform-specific>
> >>>> 	<html>
> >>>> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
> >>>>
> >>>> will render as:
> >>>> <html>
> >>>> 	<head>
> >>>> 	…
> >>>> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
> >>>> 	</head>
> >>>>
> >>>> This will allow inline script from a freemarker file, to be rendered as external script in html.
> >>>>
> >>>> Regards,
> >>>> James
> >>>>
> >>
> 

Re: new <script-template> widget

Posted by Jacques Le Roux <ja...@les7arts.com>.
Hi James,

I  know it's not all of them as you already mentioned. But could not some these of these scripts be handled by Require.js?

Jacques

Le 10/05/2020 à 14:32, James Yong a écrit :
> Hi Michael,
>
> There are CSP errors being logged in the browser console, due to the use of inline javascripts.
>
> The proposed method allow us to:
> 1. convert the inline javascripts into external scripts for better CSP compliance.
> 2. use freemarker macros in the scripts.
> 3. place the extracted javascript in the same directory as the original freemarker template file, to save time locating and editing the 2 related files.
>
> Regards,
> James
>
> On 2020/05/10 09:53:47, Michael Brohl <mi...@ecomify.de> wrote:
>> Hi James,
>>
>> can you explain the purpose of this? Why not just use a JavaScript file
>> and a decorator?
>>
>> Thanks,
>>
>> Michael Brohl
>>
>> ecomify GmbH - www.ecomify.de
>>
>>
>> Am 10.05.20 um 06:53 schrieb James Yong:
>>> Hi all,
>>>
>>> I have created a JIRA issue for this, i.e. OFBIZ-11686.
>>> Decided not to have a placement attribute because script will always be placed after body tag.
>>>
>>> Regards,
>>> James
>>>
>>> On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote:
>>>> Hi all,
>>>>
>>>> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
>>>> e.g.
>>>> <platform-specific>
>>>> 	<html>
>>>> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
>>>>
>>>> will render as:
>>>> <html>
>>>> 	<head>
>>>> 	…
>>>> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
>>>> 	</head>
>>>>
>>>> This will allow inline script from a freemarker file, to be rendered as external script in html.
>>>>
>>>> Regards,
>>>> James
>>>>
>>

Re: new <script-template> widget

Posted by James Yong <ja...@apache.org>.
Hi Michael,

There are CSP errors being logged in the browser console, due to the use of inline javascripts.

The proposed method allow us to:
1. convert the inline javascripts into external scripts for better CSP compliance. 
2. use freemarker macros in the scripts.
3. place the extracted javascript in the same directory as the original freemarker template file, to save time locating and editing the 2 related files.

Regards,
James

On 2020/05/10 09:53:47, Michael Brohl <mi...@ecomify.de> wrote: 
> Hi James,
> 
> can you explain the purpose of this? Why not just use a JavaScript file 
> and a decorator?
> 
> Thanks,
> 
> Michael Brohl
> 
> ecomify GmbH - www.ecomify.de
> 
> 
> Am 10.05.20 um 06:53 schrieb James Yong:
> > Hi all,
> >
> > I have created a JIRA issue for this, i.e. OFBIZ-11686.
> > Decided not to have a placement attribute because script will always be placed after body tag.
> >
> > Regards,
> > James
> >
> > On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote:
> >> Hi all,
> >>
> >> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
> >> e.g.
> >> <platform-specific>
> >> 	<html>
> >> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
> >>
> >> will render as:
> >> <html>
> >> 	<head>
> >> 	…
> >> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
> >> 	</head>
> >>
> >> This will allow inline script from a freemarker file, to be rendered as external script in html.
> >>
> >> Regards,
> >> James
> >>
> 
> 

Re: new <script-template> widget

Posted by Michael Brohl <mi...@ecomify.de>.
Hi James,

can you explain the purpose of this? Why not just use a JavaScript file 
and a decorator?

Thanks,

Michael Brohl

ecomify GmbH - www.ecomify.de


Am 10.05.20 um 06:53 schrieb James Yong:
> Hi all,
>
> I have created a JIRA issue for this, i.e. OFBIZ-11686.
> Decided not to have a placement attribute because script will always be placed after body tag.
>
> Regards,
> James
>
> On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote:
>> Hi all,
>>
>> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
>> e.g.
>> <platform-specific>
>> 	<html>
>> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
>>
>> will render as:
>> <html>
>> 	<head>
>> 	…
>> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
>> 	</head>
>>
>> This will allow inline script from a freemarker file, to be rendered as external script in html.
>>
>> Regards,
>> James
>>


Re: new <script-template> widget

Posted by James Yong <ja...@apache.org>.
Hi all,

I have created a JIRA issue for this, i.e. OFBIZ-11686.
Decided not to have a placement attribute because script will always be placed after body tag.

Regards,
James

On 2020/05/07 11:48:32, James Yong <ja...@apache.org> wrote: 
> Hi all,
> 
> Propose a new <script-template> widget tag that adds an external script inside html head tag, or after body tag. The external script will contain the rendered result of the specified template file location.
> e.g.
> <platform-specific>
> 	<html>
> 		<script-template location="component://order/template/quote/test.ftl” placement=“head”/>
> 
> will render as:
> <html>
> 	<head>
> 	…
> 		<script src=“/ordermgr/control/js/<some random file name>.js” type="application/javascript"/>
> 	</head>
> 
> This will allow inline script from a freemarker file, to be rendered as external script in html.
> 
> Regards,
> James
>