IDEMPIERE-2556 User preferences window configurable / peer review
This commit is contained in:
parent
0a5a14eb51
commit
6be02013d7
|
@ -335,10 +335,6 @@ INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsA
|
|||
UPDATE AD_Tab SET WhereClause='AD_User_ID=@#AD_User_ID@ AND AD_Client_ID=@#AD_Client_ID@',Updated=TO_DATE('2015-04-20 22:11:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Tab_ID=200189
|
||||
;
|
||||
|
||||
-- Apr 20, 2015 10:11:23 PM CEST
|
||||
UPDATE C_AcctProcessor SET DateLastRun=TO_DATE('2015-04-20 22:11:22','YYYY-MM-DD HH24:MI:SS'), DateNextRun=TO_DATE('2015-04-20 22:21:22','YYYY-MM-DD HH24:MI:SS'),Updated=TO_DATE('2015-04-20 22:11:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE C_AcctProcessor_ID=100
|
||||
;
|
||||
|
||||
-- Apr 20, 2015 10:11:33 PM CEST
|
||||
UPDATE AD_Column SET DefaultValue='Y',Updated=TO_DATE('2015-04-20 22:11:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=212173
|
||||
;
|
||||
|
@ -371,6 +367,6 @@ INSERT INTO AD_IndexColumn (AD_Client_ID,AD_Org_ID,AD_IndexColumn_ID,AD_IndexCol
|
|||
CREATE UNIQUE INDEX ad_userpreference_user_idx ON AD_UserPreference (AD_User_ID,AD_Client_ID)
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201504180139_IDEMPIERE-2556.sql') FROM dual
|
||||
SELECT register_migration_script('201504231737_IDEMPIERE-2556.sql') FROM dual
|
||||
;
|
||||
|
||||
|
|
|
@ -331,10 +331,6 @@ INSERT INTO AD_Sequence (Name,CurrentNext,IsAudited,StartNewYear,Description,IsA
|
|||
UPDATE AD_Tab SET WhereClause='AD_User_ID=@#AD_User_ID@ AND AD_Client_ID=@#AD_Client_ID@',Updated=TO_TIMESTAMP('2015-04-20 22:11:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Tab_ID=200189
|
||||
;
|
||||
|
||||
-- Apr 20, 2015 10:11:23 PM CEST
|
||||
UPDATE C_AcctProcessor SET DateLastRun=TO_TIMESTAMP('2015-04-20 22:11:22','YYYY-MM-DD HH24:MI:SS'), DateNextRun=TO_TIMESTAMP('2015-04-20 22:21:22','YYYY-MM-DD HH24:MI:SS'),Updated=TO_TIMESTAMP('2015-04-20 22:11:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE C_AcctProcessor_ID=100
|
||||
;
|
||||
|
||||
-- Apr 20, 2015 10:11:33 PM CEST
|
||||
UPDATE AD_Column SET DefaultValue='Y',Updated=TO_TIMESTAMP('2015-04-20 22:11:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=212173
|
||||
;
|
||||
|
@ -367,6 +363,6 @@ INSERT INTO AD_IndexColumn (AD_Client_ID,AD_Org_ID,AD_IndexColumn_ID,AD_IndexCol
|
|||
CREATE UNIQUE INDEX ad_userpreference_user_idx ON AD_UserPreference (AD_User_ID,AD_Client_ID)
|
||||
;
|
||||
|
||||
SELECT register_migration_script('201504180139_IDEMPIERE-2556.sql') FROM dual
|
||||
SELECT register_migration_script('201504231737_IDEMPIERE-2556.sql') FROM dual
|
||||
;
|
||||
|
||||
|
|
|
@ -1,3 +1,28 @@
|
|||
/**********************************************************************
|
||||
* This file is part of iDempiere ERP Open Source *
|
||||
* http://www.idempiere.org *
|
||||
* *
|
||||
* Copyright (C) Contributors *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU General Public License *
|
||||
* as published by the Free Software Foundation; either version 2 *
|
||||
* of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the Free Software *
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
|
||||
* MA 02110-1301, USA. *
|
||||
* *
|
||||
* Contributors: *
|
||||
* - Diego Ruiz - BX Service GmbH *
|
||||
**********************************************************************/
|
||||
|
||||
package org.compiere.model;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
|
@ -6,16 +31,11 @@ import java.util.Properties;
|
|||
import org.compiere.util.Env;
|
||||
|
||||
public class MUserPreference extends X_AD_UserPreference{
|
||||
|
||||
/** Auto Commit */
|
||||
public static final String P_AUTO_COMMIT = "AutoCommit";
|
||||
public static final String P_AUTO_NEW = "AutoNew";
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 2406291562249262021L;
|
||||
|
||||
private static final long serialVersionUID = 4653362918831026642L;
|
||||
|
||||
public MUserPreference(Properties ctx, int AD_UserPreference_ID,
|
||||
String trxName) {
|
||||
super(ctx, AD_UserPreference_ID, trxName);
|
||||
|
@ -45,7 +65,7 @@ public class MUserPreference extends X_AD_UserPreference{
|
|||
} //createUserPreferences
|
||||
|
||||
public static MUserPreference getUserPreference(int AD_User_ID, int AD_Client_ID){
|
||||
Query query = new Query(Env.getCtx(), MUserPreference.Table_Name, "NVL(AD_User_ID,0) = ? AND NVL(AD_Client_ID,0) = ?", null);
|
||||
Query query = new Query(Env.getCtx(), MUserPreference.Table_Name, "AD_User_ID=? AND AD_Client_ID=?", null);
|
||||
MUserPreference preferences = query.setParameters(new Object[]{AD_User_ID, AD_Client_ID}).firstOnly();
|
||||
|
||||
if(preferences==null){
|
||||
|
@ -70,18 +90,38 @@ public class MUserPreference extends X_AD_UserPreference{
|
|||
|
||||
return "";
|
||||
}
|
||||
|
||||
public void fillPreferences(){
|
||||
MTable t = new MTable(Env.getCtx(), MUserPreference.Table_ID, null);
|
||||
for (MColumn c: t.getColumns(false)){
|
||||
if( !c.getColumnName().equals("AD_Client_ID") && !c.getColumnName().equals("AD_Org_ID") &&
|
||||
!c.getColumnName().equals("AD_User_ID") && !c.getColumnName().equals("AD_UserPreference_ID") &&
|
||||
!c.getColumnName().equals("AD_UserPreference_UU") && !c.getColumnName().equals("Created") &&
|
||||
!c.getColumnName().equals("CreatedBy") && !c.getColumnName().equals("Updated") &&
|
||||
!c.getColumnName().equals("UpdatedBy") && !c.getColumnName().equals("IsActive") )
|
||||
|
||||
Env.getCtx().setProperty(c.getColumnName(), getPreference(c.getColumnName()));
|
||||
public void fillPreferences(){
|
||||
for (int i=0; i < get_ColumnCount(); i++) {
|
||||
String colName = get_ColumnName(i);
|
||||
if (! ( "AD_Client_ID".equals(colName)
|
||||
|| "AD_Org_ID".equals(colName)
|
||||
|| "AD_User_ID".equals(colName)
|
||||
|| "AD_UserPreference_ID".equals(colName)
|
||||
|| "AD_UserPreference_UU".equals(colName)
|
||||
|| "Created".equals(colName)
|
||||
|| "CreatedBy".equals(colName)
|
||||
|| "Updated".equals(colName)
|
||||
|| "UpdatedBy".equals(colName)
|
||||
|| "IsActive".equals(colName))) {
|
||||
Env.setContext(getCtx(), colName, getPreference(colName));
|
||||
Env.setContext(getCtx(), "P|" + colName, getPreference(colName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean beforeSave(boolean newRecord) {
|
||||
if (getAD_Org_ID() != 0)
|
||||
setAD_Org_ID(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean afterSave(boolean newRecord, boolean success) {
|
||||
if (success)
|
||||
fillPreferences();
|
||||
return success;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,12 +28,14 @@ import org.compiere.util.Language;
|
|||
* @author hengsin
|
||||
* @author Teo Sarca, www.arhipac.ro
|
||||
* <li>FR [ 2694043 ] Query. first/firstOnly usage best practice
|
||||
*
|
||||
* IDEMPIERE-2556 - this class is now for global code-managed preferences - user selectable preferences are managed in table AD_UserPreference
|
||||
*/
|
||||
public final class UserPreference implements Serializable {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -9128019013390545760L;
|
||||
private static final long serialVersionUID = -2619860653017483658L;
|
||||
|
||||
/** Language */
|
||||
public static final String P_LANGUAGE = "Language";
|
||||
|
@ -52,17 +54,9 @@ public final class UserPreference implements Serializable {
|
|||
public static final String P_WAREHOUSE = "Warehouse";
|
||||
private static final String DEFAULT_WAREHOUSE = "";
|
||||
|
||||
/** Auto Commit */
|
||||
public static final String P_AUTO_COMMIT = "AutoCommit";
|
||||
private static final String DEFAULT_AUTO_COMMIT = "Y";
|
||||
|
||||
/** Language Name Context **/
|
||||
public static final String LANGUAGE_NAME = "#LanguageName";
|
||||
|
||||
/** Auto New **/
|
||||
public static final String P_AUTO_NEW = "AutoNew";
|
||||
public static final String DEFAULT_AUTO_NEW = "Y";
|
||||
|
||||
/** Menu Collapsed **/
|
||||
public static final String P_MENU_COLLAPSED = "MenuCollapsed";
|
||||
public static final String DEFAULT_MENU_COLLAPSED = "N";
|
||||
|
@ -82,8 +76,6 @@ public final class UserPreference implements Serializable {
|
|||
P_CLIENT,
|
||||
P_ORG,
|
||||
P_WAREHOUSE,
|
||||
P_AUTO_COMMIT,
|
||||
P_AUTO_NEW,
|
||||
P_MENU_COLLAPSED,
|
||||
P_HELP_COLLAPSED,
|
||||
P_HEADER_COLLAPSED};
|
||||
|
@ -94,8 +86,6 @@ public final class UserPreference implements Serializable {
|
|||
DEFAULT_CLIENT,
|
||||
DEFAULT_ORG,
|
||||
DEFAULT_WAREHOUSE,
|
||||
DEFAULT_AUTO_COMMIT,
|
||||
DEFAULT_AUTO_NEW,
|
||||
DEFAULT_MENU_COLLAPSED,
|
||||
DEFAULT_HELP_COLLAPSED,
|
||||
DEFAULT_HEADER_COLLAPSED};
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.zkoss.zk.ui.event.EventListener;
|
|||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zul.A;
|
||||
import org.zkoss.zul.Div;
|
||||
import org.zkoss.zul.Separator;
|
||||
/**
|
||||
*
|
||||
* @author hengsin
|
||||
|
@ -92,6 +91,12 @@ public class WPreference extends WQuickEntry implements EventListener<Event> {
|
|||
private void init() {
|
||||
|
||||
Div div = new Div();
|
||||
div.setStyle("background-color: transparent !important; border: none; margin: 5px;");
|
||||
morePreferences= new A();
|
||||
morePreferences.setLabel(Msg.translate(Env.getCtx(), "MorePreferences"));
|
||||
morePreferences.addEventListener(Events.ON_CLICK, this);
|
||||
div.appendChild(morePreferences);
|
||||
this.appendChild(div);
|
||||
|
||||
if (Env.getAD_Client_ID(Env.getCtx()) <= 20 && Env.getAD_User_ID(Env.getCtx()) <= 102) {
|
||||
adempiereSys = new WYesNoEditor("AdempiereSys", Msg.getMsg(Env.getCtx(), "AdempiereSys", true),
|
||||
|
@ -113,29 +118,6 @@ public class WPreference extends WQuickEntry implements EventListener<Event> {
|
|||
logMigrationScript.setValue(Env.getCtx().getProperty("LogMigrationScript"));
|
||||
}
|
||||
|
||||
div = new Div();
|
||||
div.setStyle("background-color: transparent !important; border: none; margin: 5px;");
|
||||
addgadgets= new A();
|
||||
addgadgets.setLabel( Msg.translate(Env.getCtx(), "ManageGadgets"));
|
||||
addgadgets.addEventListener(Events.ON_CLICK, this);
|
||||
div.appendChild(addgadgets);
|
||||
this.appendChild(div);
|
||||
|
||||
div = new Div();
|
||||
div.setStyle("background-color: transparent !important; border: none; margin: 5px;");
|
||||
morePreferences= new A();
|
||||
morePreferences.setLabel(Msg.translate(Env.getCtx(), "MorePreferences"));
|
||||
morePreferences.addEventListener(Events.ON_CLICK, this);
|
||||
div.appendChild(morePreferences);
|
||||
this.appendChild(div);
|
||||
|
||||
Separator separator = new Separator();
|
||||
separator.setSpacing("20px");
|
||||
div = new Div();
|
||||
div.setStyle("background-color: transparent !important; border: none; margin: 5px;");
|
||||
div.appendChild(separator);
|
||||
this.appendChild(div);
|
||||
|
||||
ToolBar toolbar = new ToolBar();
|
||||
toolbar.setAlign("end");
|
||||
this.appendChild(toolbar);
|
||||
|
@ -147,6 +129,14 @@ public class WPreference extends WQuickEntry implements EventListener<Event> {
|
|||
toolbar.appendChild(btn);
|
||||
toolbar.setStyle("border: none");
|
||||
|
||||
div = new Div();
|
||||
div.setStyle("background-color: transparent !important; border: none; margin: 5px;");
|
||||
addgadgets= new A();
|
||||
addgadgets.setLabel( Msg.translate(Env.getCtx(), "ManageGadgets"));
|
||||
addgadgets.addEventListener(Events.ON_CLICK, this);
|
||||
div.appendChild(addgadgets);
|
||||
this.appendChild(div);
|
||||
|
||||
} //init
|
||||
|
||||
public void onEvent(Event event) throws Exception {
|
||||
|
@ -179,9 +169,6 @@ public class WPreference extends WQuickEntry implements EventListener<Event> {
|
|||
private void onSave() {
|
||||
actionSave();
|
||||
|
||||
//Set all preferences in the Context
|
||||
preferences.fillPreferences();
|
||||
|
||||
// Log Migration Script and AdempiereSys are just in-memory preferences, must not be saved
|
||||
if (logMigrationScript != null)
|
||||
Env.getCtx().setProperty("LogMigrationScript", (Boolean)logMigrationScript.getValue() ? "Y" : "N");
|
||||
|
|
Loading…
Reference in New Issue