From 81660c7fc7ca7220f96c3268e875bc7fa81acb58 Mon Sep 17 00:00:00 2001 From: hengsin Date: Tue, 9 Apr 2024 21:08:20 +0800 Subject: [PATCH] IDEMPIERE-6085 HTMLExtension doesn't handle HTML_REPORT_THEME that starts with "~./" (#2288) --- .../src/org/compiere/print/IHTMLExtension.java | 13 +++++++++---- .../org/adempiere/webui/report/HTMLExtension.java | 12 ++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/print/IHTMLExtension.java b/org.adempiere.base/src/org/compiere/print/IHTMLExtension.java index 991e0bca3b..e2227d1b07 100644 --- a/org.adempiere.base/src/org/compiere/print/IHTMLExtension.java +++ b/org.adempiere.base/src/org/compiere/print/IHTMLExtension.java @@ -24,17 +24,20 @@ import org.apache.ecs.xhtml.body; public interface IHTMLExtension { /** - * @return css class prefix for report element + * Get CSS class prefix for HTML report element + * @return CSS class prefix for HTML report element */ public String getClassPrefix(); /** - * @return url to report css + * Get URL to report CSS + * @return URL to report CSS */ public String getStyleURL(); /** - * @return url to report js + * Get URL to report javascript + * @return URL to report javascript */ public String getScriptURL(); @@ -61,11 +64,13 @@ public interface IHTMLExtension { public void setWebAttribute (body reportBody); /** - * @return absolute path to css style file + * Get absolute local file path to CSS file (typically for embedding the file content to HTML report) + * @return absolute local file path to CSS file */ public String getFullPathStyle (); /** + * Get one or more links (<link ... >) to web font * @return one or more links for web font */ String getWebFontLinks(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java index affe0d2104..6674a54e9e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/report/HTMLExtension.java @@ -65,14 +65,14 @@ public class HTMLExtension implements IHTMLExtension { String theme = MSysConfig.getValue(MSysConfig.HTML_REPORT_THEME, "/", Env.getAD_Client_ID(Env.getCtx())); - if (! theme.startsWith("/") && !theme.startsWith("~./")) + if (!theme.startsWith("/") && !theme.startsWith(ThemeManager.ZK_URL_PREFIX_FOR_CLASSPATH_RESOURCE)) theme = "/" + theme; if (! theme.endsWith("/")) theme = theme + "/"; this.classPrefix = classPrefix; this.componentId = componentId; - if (theme.startsWith("~./")) { + if (theme.startsWith(ThemeManager.ZK_URL_PREFIX_FOR_CLASSPATH_RESOURCE)) { if (Executions.getCurrent() != null) { this.styleURL = Executions.encodeURL(theme + "css/report.css"); } @@ -197,12 +197,16 @@ public class HTMLExtension implements IHTMLExtension { @Override public String getFullPathStyle() { String theme = MSysConfig.getValue(MSysConfig.HTML_REPORT_THEME, "/", Env.getAD_Client_ID(Env.getCtx())); - if (! theme.startsWith("/")) + if (!theme.startsWith("/") && !theme.startsWith(ThemeManager.ZK_URL_PREFIX_FOR_CLASSPATH_RESOURCE)) theme = "/" + theme; - if (! theme.endsWith("/")) + if (!theme.endsWith("/")) theme = theme + "/"; String resFile = theme + "css/report.css"; + // translate ~./ url to classpath url + if (theme.startsWith(ThemeManager.ZK_URL_PREFIX_FOR_CLASSPATH_RESOURCE)) + resFile = ThemeManager.toClassPathResourcePath(resFile); + URL urlFile = this.getClass().getResource(resFile); if (urlFile == null) { resFile = "/css/report.css"; // default