diff --git a/org.adempiere.ui.zk/WEB-INF/src/metainfo/tld/config.xml b/org.adempiere.ui.zk/WEB-INF/src/metainfo/tld/config.xml
new file mode 100644
index 0000000000..30167039f0
--- /dev/null
+++ b/org.adempiere.ui.zk/WEB-INF/src/metainfo/tld/config.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ org.adempiere.webui.AdempiereWebUI
+ 1.0.0
+
+
+ http://www.idempiere.org/dsp/web/util
+ /WEB-INF/tld/web/idempiere-util.dsp.tld
+
+
diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java
index 3cc496291a..50913be80f 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java
@@ -358,21 +358,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
div.setVflex("1");
div.setWidth("100%");
div.setSpacing("0px");
-
- StringBuilder cssContent = new StringBuilder();
- cssContent.append(".adtab-form-borderlayout .z-south-colpsd:before { ");
- cssContent.append("content: \"");
- cssContent.append(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Detail")));
- cssContent.append("\"; ");
- cssContent.append("position: relative; font-size: 12px; font-weight: bold; ");
- cssContent.append("top: 3px; ");
- cssContent.append("left: 4px; ");
- cssContent.append("z-index: -1; ");
- cssContent.append("} ");
- Style style = new Style();
- style.setContent(cssContent.toString());
- appendChild(style);
-
+
Borderlayout layout = new Borderlayout();
layout.setParent(this);
layout.setSclass("adtab-form-borderlayout");
diff --git a/org.adempiere.ui.zk/WEB-INF/tld/web/idempiere-util.dsp.tld b/org.adempiere.ui.zk/WEB-INF/tld/web/idempiere-util.dsp.tld
new file mode 100644
index 0000000000..86a6cbd8fd
--- /dev/null
+++ b/org.adempiere.ui.zk/WEB-INF/tld/web/idempiere-util.dsp.tld
@@ -0,0 +1,41 @@
+
+
+
+ http://www.idempiere.org/dsp/web/util
+
+ Util methods for zweb in DSP
+
+
+
+ getCtx
+ org.compiere.util.Env
+
+ java.util.Properties getCtx()
+
+
+ Returns current context
+
+
+
+
+ getMsg
+ org.compiere.util.Msg
+
+ java.lang.String getMsg(java.util.Properties,java.lang.String)
+
+
+ Returns translated message
+
+
+
+
+ cleanAmp
+ org.compiere.util.Util
+
+ java.lang.String cleanAmp(java.lang.String)
+
+
+ Clean all ampersand from string
+
+
+
\ No newline at end of file
diff --git a/org.adempiere.ui.zk/theme/default/css/theme.css.dsp b/org.adempiere.ui.zk/theme/default/css/theme.css.dsp
index 024f48ede0..d2acecfc17 100644
--- a/org.adempiere.ui.zk/theme/default/css/theme.css.dsp
+++ b/org.adempiere.ui.zk/theme/default/css/theme.css.dsp
@@ -1,5 +1,6 @@
<%@ page contentType="text/css;charset=UTF-8" %>
<%@ taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" %>
+<%@ taglib uri="http://www.idempiere.org/dsp/web/util" prefix="u" %>
html,body {
margin: 0;
@@ -802,6 +803,16 @@ div.wc-modal, div.wc-modal-none, div.wc-highlighted, div.wc-highlighted-none {
background-color: #F9F9F9;
}
+.adtab-form-borderlayout .z-south-colpsd:before {
+ content: '${u:cleanAmp(u:getMsg(u:getCtx(), "Detail"))}';
+ position: relative;
+ font-size: 12px;
+ font-weight: bold;
+ top: 3px;
+ left: 4px;
+ z-index: -1;
+}
+
.z-grid tbody tr.highlight td.z-cell {
background-color: #FFFFCC !important;
background-image: none !important;