diff --git a/migration/i1.0c-release/oracle/20130718094134_IDEMPIERE-984.sql b/migration/i1.0c-release/oracle/20130718094134_IDEMPIERE-984.sql index 951e2b600e..c057c28e9d 100644 --- a/migration/i1.0c-release/oracle/20130718094134_IDEMPIERE-984.sql +++ b/migration/i1.0c-release/oracle/20130718094134_IDEMPIERE-984.sql @@ -7,6 +7,7 @@ INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,V -- IDEMPIERE-984 Change Role and Logout must check for unsaved records on open windows INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200208 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) ; + SELECT register_migration_script('20130718094134_IDEMPIERE-984.sql') FROM dual ; diff --git a/migration/i1.0c-release/postgresql/20130718094134_IDEMPIERE-984.sql b/migration/i1.0c-release/postgresql/20130718094134_IDEMPIERE-984.sql index cdf5ca4a18..0e1cf76565 100644 --- a/migration/i1.0c-release/postgresql/20130718094134_IDEMPIERE-984.sql +++ b/migration/i1.0c-release/postgresql/20130718094134_IDEMPIERE-984.sql @@ -7,6 +7,7 @@ INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,V -- IDEMPIERE-984 Change Role and Logout must check for unsaved records on open windows INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200208 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) ; + SELECT register_migration_script('20130718094134_IDEMPIERE-984.sql') FROM dual ; 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 047f84ff27..bcae1ea138 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 @@ -86,7 +86,7 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb /** * */ - private static final long serialVersionUID = -208259686238044047L; + private static final long serialVersionUID = 6505634026383902627L; private static final String SAVED_CONTEXT = "saved.context"; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/IWebClient.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/IWebClient.java index 905f461348..f06952a169 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/IWebClient.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/IWebClient.java @@ -33,6 +33,7 @@ public interface IWebClient { * logout */ public void logout(); + /** * logout after browser destroyed */ diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/UserPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/UserPanel.java index 4e6a99592d..6e18227a4b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/UserPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/UserPanel.java @@ -79,7 +79,7 @@ public class UserPanel implements EventListener, Composer { String s = Msg.getMsg(Env.getCtx(), "CloseTabFromBrowser?").replace("\n", "
"); Clients.confirmClose(s); - lblUserNameValue = (Label) component.getFellowIfAny("loginUserAndRole", true); + lblUserNameValue = (Label) component.getFellowIfAny("loginUserAndRole", true); lblUserNameValue.setValue(getUserName() + "@" + getClientName() + "." + getOrgName()+"/"+this.getRoleName()); lblUserNameValue.addEventListener(Events.ON_CLICK, this); @@ -242,11 +242,13 @@ public class UserPanel implements EventListener, Composer } else if (ON_DEFER_LOGOUT.equals(event.getName())) { + Clients.confirmClose(null); SessionManager.logoutSession(); } else if (ON_DEFER_CHANGE_ROLE.equals(event.getName())) { MUser user = MUser.get(ctx); + Clients.confirmClose(null); SessionManager.changeRole(user); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java index 3f1d15b2e5..adccb34ef7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/session/SessionManager.java @@ -100,6 +100,7 @@ public class SessionManager if (app != null) app.logout(); } + public static void logoutSessionAfterBrowserDestroyed() { IWebClient app = getSessionApplication();