From 7747fdac0662b03d103753a46c5fe348955e0ed3 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 23 Jun 2014 13:41:11 -0500 Subject: [PATCH 1/5] IDEMPIERE-2014 Read-only tab/role allows user to edit AlwaysUpdateable fields --- .../src/org/compiere/model/GridField.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 8d4f328fdd..3da297356e 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -423,17 +423,17 @@ public class GridField || (m_vo.ColumnName.equals("Record_ID") && m_vo.displayType == DisplayType.Button)) // Zoom return true; - // Fields always updareable - if (m_vo.IsAlwaysUpdateable) // Zoom - return true; - // Tab or field is R/O if (m_vo.tabReadOnly || m_vo.IsReadOnly) { if (log.isLoggable(Level.FINEST)) log.finest(m_vo.ColumnName + " NO - TabRO=" + m_vo.tabReadOnly + ", FieldRO=" + m_vo.IsReadOnly); return false; } - + + // Fields always updateable + if (m_vo.IsAlwaysUpdateable) // Zoom + return true; + //check tab context if (checkContext && getGridTab() != null && ! "Y".equals(Env.getContext(Env.getCtx(), getWindowNo(), "_QUICK_ENTRY_MODE_"))) From 224e1630057cd07ef13b3f72d79b9458436e504c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 23 Jun 2014 13:41:27 -0500 Subject: [PATCH 2/5] IDEMPIERE-2015 Zoom disabled when access to window is read-only --- .../src/org/adempiere/webui/editor/WEditorPopupMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java index 27220601ff..d982dd04a5 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java @@ -123,7 +123,7 @@ public class WEditorPopupMenu extends Menupopup implements EventListener int winID = lookup.getZoom(); int winIDPO = lookup.getZoom(false) ; Boolean canAccess = MRole.getDefault().getWindowAccess(winID); - if (winID <= 0 || canAccess == null || ! canAccess) { + if (winID <= 0 || canAccess == null) { this.zoomEnabled = false; this.newEnabled = false; this.updateEnabled = false; From 02c221db86ea19c6b5baba432c63aa9d60d5b2ef Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Wed, 25 Jun 2014 09:12:54 -0500 Subject: [PATCH 3/5] IDEMPIERE-2013 Impossible to empty EMail field on User window --- org.adempiere.base/src/org/compiere/model/MUser.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MUser.java b/org.adempiere.base/src/org/compiere/model/MUser.java index fc1518a3d4..fcaf233e92 100644 --- a/org.adempiere.base/src/org/compiere/model/MUser.java +++ b/org.adempiere.base/src/org/compiere/model/MUser.java @@ -42,6 +42,7 @@ import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.Secure; import org.compiere.util.SecureEngine; +import org.compiere.util.Util; /** * User Model @@ -899,7 +900,7 @@ public class MUser extends X_AD_User setEMailVerifyDate(null); // IDEMPIERE-1409 - if (getEMail() != null && (newRecord || is_ValueChanged("EMail"))) { + if (!Util.isEmpty(getEMail()) && (newRecord || is_ValueChanged("EMail"))) { if (! EMail.validate(getEMail())) { log.saveError("SaveError", Msg.getMsg(getCtx(), "InvalidEMailFormat") + Msg.getElement(getCtx(), COLUMNNAME_EMail) + " - [" + getEMail() + "]"); return false; From 1ec538db0b5b4dffd62ae50c3753ed050ef2a52f Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 30 Jun 2014 12:07:47 -0500 Subject: [PATCH 4/5] IDEMPIERE-2028 Find not requerying if not changed --- .../src/org/compiere/model/GridTab.java | 32 ++----------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index 0b63eb3d4f..34b437e8f1 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -113,7 +113,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable /** * */ - private static final long serialVersionUID = -4152187193662318491L; + private static final long serialVersionUID = 1377113168185797983L; public static final String DEFAULT_STATUS_MESSAGE = "NavigateOrUpdate"; @@ -210,8 +210,6 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable private DataStatusEvent m_lastDataStatusEvent; - private String m_parsedWhere; - //Contains currently selected rows private ArrayList selection = null; @@ -626,10 +624,6 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo + " - Only Current Rows=" + onlyCurrentRows + ", Days=" + onlyCurrentDays + ", Detail=" + isDetail()); - // is it same query? - boolean refresh = m_oldQuery.equals(m_query.getWhereClause()) - && m_vo.onlyCurrentRows == onlyCurrentRows && m_vo.onlyCurrentDays == onlyCurrentDays; - m_oldQuery = m_query.getWhereClause(); m_vo.onlyCurrentRows = onlyCurrentRows; m_vo.onlyCurrentDays = onlyCurrentDays; @@ -670,8 +664,6 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable } // Same link value? - if (refresh) - refresh = m_linkValue.equals(value); if (! m_linkValue.equals(value)) setQuery(null); m_linkValue = value; @@ -704,23 +696,6 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable m_extendedWhere = where.toString(); - if (m_extendedWhere.indexOf("@") > 1) - { - String s = Env.parseContext(Env.getCtx(), getWindowNo(), m_extendedWhere, false); - if (s != null) - { - if (!(s.equals(m_parsedWhere))) - { - refresh = false; - } - } - else - { - refresh = false; - } - m_parsedWhere = s; - } - // Final Query if (m_query.isActive()) { @@ -740,10 +715,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo + " - " + where); if (m_mTable.isOpen()) { - if (refresh) - m_mTable.dataRefreshAll(); - else - m_mTable.dataRequery(where.toString(), m_vo.onlyCurrentRows && !isDetail(), onlyCurrentDays); + m_mTable.dataRequery(where.toString(), m_vo.onlyCurrentRows && !isDetail(), onlyCurrentDays); } else { From 15596ee282583029b35a54d492c985f25fcbac91 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 30 Jun 2014 13:10:29 -0500 Subject: [PATCH 5/5] IDEMPIERE-2028 Find not requerying if not changed / restore one line deleted by mistake --- org.adempiere.base/src/org/compiere/model/GridTab.java | 1 + 1 file changed, 1 insertion(+) diff --git a/org.adempiere.base/src/org/compiere/model/GridTab.java b/org.adempiere.base/src/org/compiere/model/GridTab.java index 34b437e8f1..d388ea3167 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTab.java +++ b/org.adempiere.base/src/org/compiere/model/GridTab.java @@ -624,6 +624,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable if (log.isLoggable(Level.FINE)) log.fine("#" + m_vo.TabNo + " - Only Current Rows=" + onlyCurrentRows + ", Days=" + onlyCurrentDays + ", Detail=" + isDetail()); + m_oldQuery = m_query.getWhereClause(); m_vo.onlyCurrentRows = onlyCurrentRows; m_vo.onlyCurrentDays = onlyCurrentDays;