From db66155f8de127fa5d95ad23ffa56b03d99010d4 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 18 Sep 2017 17:11:30 +0200 Subject: [PATCH] IDEMPIERE-3461 For Mobile Compatibility of zk / thanks to Eduardo Gil --- .../org/adempiere/webui/AdempiereWebUI.java | 3 ++- .../src/org/adempiere/webui/WLogin.java | 13 ++++------- .../webui/desktop/DefaultDesktop.java | 12 ++++++++++ .../default/css/fragment/desktop.css.dsp | 22 +++++++++++++++++++ .../theme/default/zul/desktop/header.zul | 17 +++++--------- 5 files changed, 46 insertions(+), 21 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index c4b823b039..b7674e854b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -448,7 +448,7 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb String ua = Servlets.getUserAgent((ServletRequest) Executions.getCurrent().getNativeRequest()); clientInfo.userAgent = ua; ua = ua.toLowerCase(); - clientInfo.tablet = ua.indexOf("ipad") >= 0 || ua.indexOf("iphone") >= 0 || ua.indexOf("android") >= 0; + clientInfo.tablet = Executions.getCurrent().getBrowser("mobile") !=null; if (getDesktop() != null && getDesktop().getSession() != null) { getDesktop().getSession().setAttribute(CLIENT_INFO, clientInfo); } @@ -456,6 +456,7 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb Env.setContext(Env.getCtx(), "#clientInfo_desktopWidth", clientInfo.desktopWidth); Env.setContext(Env.getCtx(), "#clientInfo_desktopHeight", clientInfo.desktopHeight); Env.setContext(Env.getCtx(), "#clientInfo_orientation", clientInfo.orientation); + Env.setContext(Env.getCtx(), "#clientInfo_mobile", clientInfo.tablet); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WLogin.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WLogin.java index ac3a08cde4..c123d9e34f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WLogin.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/WLogin.java @@ -17,24 +17,21 @@ package org.adempiere.webui; import java.util.Locale; import java.util.Properties; -import javax.servlet.ServletRequest; - import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.part.AbstractUIPart; import org.adempiere.webui.theme.ThemeManager; import org.adempiere.webui.util.ZKUpdateUtil; import org.adempiere.webui.window.LoginWindow; -import org.zkoss.web.servlet.Servlets; import org.zkoss.zhtml.Text; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.metainfo.PageDefinition; import org.zkoss.zul.Borderlayout; +import org.zkoss.zul.Div; import org.zkoss.zul.East; import org.zkoss.zul.North; import org.zkoss.zul.South; import org.zkoss.zul.West; -import org.zkoss.zul.Div; import org.zkoss.zul.Window; /** @@ -82,15 +79,13 @@ public class WLogin extends AbstractUIPart browserWarningWindow.doOverlapped(); } - String ua = Servlets.getUserAgent((ServletRequest) Executions.getCurrent().getNativeRequest()); - ua = ua.toLowerCase(); - boolean mobile = ua.indexOf("ipad") >= 0 || ua.indexOf("iphone") >= 0 || ua.indexOf("android") >= 0; - + boolean mobile = Executions.getCurrent().getBrowser("mobile") !=null; West west = layout.getWest(); if (west.getFirstChild() != null && west.getFirstChild().getFirstChild() != null) { + west.setCollapsible(true); + west.setSplittable(true); if (mobile) { - west.setCollapsible(true); west.setOpen(false); } } else { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java index 98cb2cec18..98fe8529b7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java @@ -224,6 +224,13 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria boolean menuCollapsed= pref.isPropertyBool(UserPreference.P_MENU_COLLAPSED); w.setOpen(!menuCollapsed); + boolean mobile = Executions.getCurrent().getBrowser("mobile") !=null; + w.setCollapsible(true); + + if (mobile) { + w.setOpen(false); + } + East e = layout.getEast(); e.addEventListener(Events.ON_OPEN, new EventListener() { @Override @@ -293,6 +300,11 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria helpController.render(e, this); + if (mobile) { + e.setVisible(false); + e.setOpen(false); + } + Center windowArea = layout.getCenter(); windowContainer.createPart(windowArea); diff --git a/org.adempiere.ui.zk/theme/default/css/fragment/desktop.css.dsp b/org.adempiere.ui.zk/theme/default/css/fragment/desktop.css.dsp index c8e3f37d85..c0a1773d50 100644 --- a/org.adempiere.ui.zk/theme/default/css/fragment/desktop.css.dsp +++ b/org.adempiere.ui.zk/theme/default/css/fragment/desktop.css.dsp @@ -231,3 +231,25 @@ height: 16px; padding: 3px 3px; } +@media screen and (min-width: 720px) { + .desktop-header > .z-hlayout-inner { + width: 50%; + height: 100%; + } +} +@media screen and (max-width: 720px) { + .desktop-header { + width: 100%; + height: 100%; + + } + .desktop-user-panel { + float: none; + } + .desktop-header > .z-hlayout-inner { + width: 100%; + height: 40%; + display: block; + } + +} diff --git a/org.adempiere.ui.zk/theme/default/zul/desktop/header.zul b/org.adempiere.ui.zk/theme/default/zul/desktop/header.zul index 7df7a93103..ef83edb555 100644 --- a/org.adempiere.ui.zk/theme/default/zul/desktop/header.zul +++ b/org.adempiere.ui.zk/theme/default/zul/desktop/header.zul @@ -1,19 +1,15 @@