Html asset versioning should allow fluent deployment

Description

issue:
idempiere static assets (js, css) are cached, and in some circumstances cache cause unpredictable error

*Solution: *
Professional web developers implements static asset versioning.
When server static asset changed, server never provide same asset with same name, because maven build automatically generate version depends on strategy eg. suffix. or directory name versioned eg. asset/?/function.js OR asset/function_?.js

examples of 2 deployments
deployment at aug 20 10:06:01h eg. /asset/20200820100601/function.js
deployment at aug 20 14:00:26h eg. /asset/20200820140026/function.js

we have done it in jsp project, however this is depends on core developers policy, so no exact suggestion here how to implement it.

Environment

None

Activity

Show:
Carlos Ruiz
December 9, 2020, 3:15 PM

Reported by ken.wang in mattermost
https://mattermost.idempiere.org/idempiere/pl/41kj4493j38kzy1dzpx1dctfiy

BreadCrumb:293

Carlos Ruiz
December 2, 2020, 7:36 PM

Hi ,

Just noticed that the zoom icons in report are broken:

I think is probably because of this ticket?

I tried in test.idempiere.org, both with and without ZK_THEME_USE_FONT_ICON_FOR_IMAGE

Regards,

Carlos Ruiz

Heng Sin Low
November 29, 2020, 3:07 PM
Edited

Some Theme Migration Note:

  1. Theme resources reside at “src/web/theme/<theme_name>” instead of “/theme/<theme_name”

  2. Within the theme folder, reference to other theme resources must use full path (with “~./” prefix) instead of relative path. For e.g, at “theme/default/zul/login/login-left.zul”, the macroURI value is change from "vendor-logo.zul" to "~./theme/default/zul/login/vendor-logo.zul".

  3. Same goes for resource reference at *.css.dsp. For e.g, at theme/default/css/fragment/grid.css.dsp, “background-image: url(${c:encodeURL('/theme/default/images/EditRecord16.png')})” is replace with “background-image: url(${c:encodeURL('~./theme/default/images/EditRecord16.png')})”. Note the added “~./” prefix.

  4. For versioning, add a dummy javascript-module entry to src/metainfo/zk/lang-addon.xml (see the example entry for default theme. naming of the dummy js is arbitrary but it is probably easier to just use the pattern of idempiere.theme.<theme_name>). For external theme, you can use the same src/metainfo/zk/lang-addon.xml approach (at the src folder of your external theme plugin).

Heng Sin Low
November 29, 2020, 7:10 AM
Edited

Created .

Changes is not backward compatible as with the new approach, theme resources is loaded from classpath (src/web/theme/default for default theme) instead of from /theme folder.

Versioning of theme is through the use of dummy javascript-module entry at metainfo/zk/lang-addon.xml (idempiere.theme.default for default theme).

For theme plugin, I’ve created an example of this at (project org.idempiere.zk.iceblue_c.theme, branch IDEMPIERE-4421).

Carlos Ruiz
November 17, 2020, 10:46 AM

Hi ,

opened to cover the javascript case.

So, we could leave this ticket open just for the CSS case (maybe good to edit the subject).

Maybe the link from could be the solution for CSS case.

Regards,

Carlos Ruiz

Fixed

Assignee

Heng Sin Low

Reporter

Norbert Bede

Labels

None

Tested By

None

Fix versions

Priority

Major