diff --git a/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index f0431ba416..287efe4fff 100644 --- a/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -21,6 +21,7 @@ import java.util.Properties; import org.adempiere.webui.session.SessionManager; import org.compiere.util.Env; +import org.compiere.util.Language; import org.zkoss.zk.ui.event.ClientInfoEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -94,9 +95,14 @@ public class AdempiereWebUI extends Window implements EventListener Properties ctx = Env.getCtx(); String langLogin = Env.getContext(ctx, Env.LANGUAGE); if (langLogin == null || langLogin.length() <= 0) { + langLogin = langSession; Env.setContext(ctx, Env.LANGUAGE, langSession); } + // Validate language + Language language = Language.getLanguage(langLogin); + Env.verifyLanguage(ctx, language); + } public void logout() diff --git a/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java b/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java index 7aadb725be..d8092e56bd 100644 --- a/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java +++ b/extension/posterita/webui/WEB-INF/src/org/adempiere/webui/panel/LoginPanel.java @@ -17,6 +17,7 @@ package org.adempiere.webui.panel; +import java.util.ArrayList; import java.util.Properties; import org.adempiere.webui.component.Grid; @@ -27,12 +28,18 @@ import org.adempiere.webui.component.Textbox; import org.adempiere.webui.component.WConfirmPanel; import org.adempiere.webui.component.Window; import org.adempiere.webui.window.LoginWindow; +import org.compiere.util.Env; import org.compiere.util.KeyNamePair; +import org.compiere.util.Language; import org.compiere.util.Login; +import org.compiere.util.ValueNamePair; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.Listbox; +import org.zkoss.zul.Listitem; /** * @@ -49,8 +56,10 @@ public class LoginPanel extends Window implements EventListener private Properties ctx; private Label lblUserId; private Label lblPassword; + private Label lblLanguage; private Textbox txtUserId; private Textbox txtPassword; + private Listbox lstLanguage; /* private Button btnOk; private Button btnCancel;*/ private LoginWindow wndLogin; @@ -73,6 +82,8 @@ public class LoginPanel extends Window implements EventListener rowUser.setId("rowUser"); Row rowPassword = new Row(); rowPassword.setId("rowPassword"); + Row rowLanguage = new Row(); + rowLanguage.setId("rowLanguage"); rowUser.appendChild(lblUserId); rowUser.appendChild(this.txtUserId); @@ -80,6 +91,8 @@ public class LoginPanel extends Window implements EventListener rowPassword.appendChild(lblPassword); rowPassword.appendChild(txtPassword); + rowLanguage.appendChild(lblLanguage); + rowLanguage.appendChild(lstLanguage); Row rowButtons = new Row(); //rowButtons.setAlign("right"); @@ -94,6 +107,7 @@ public class LoginPanel extends Window implements EventListener rows.appendChild(rowUser); rows.appendChild(rowPassword); + rows.appendChild(rowLanguage); rows.appendChild(rowButtons); grid.appendChild(rows); this.appendChild(grid); @@ -109,6 +123,10 @@ public class LoginPanel extends Window implements EventListener lblPassword.setId("lblPassword"); lblPassword.setValue("Password: "); + lblLanguage = new Label(); + lblLanguage.setId("lblLanguage"); + lblLanguage.setValue("Language: "); + txtUserId = new Textbox(); txtUserId.setId("txtUserId"); txtUserId.setConstraint("no empty"); @@ -122,6 +140,21 @@ public class LoginPanel extends Window implements EventListener txtPassword.setCols(25); txtPassword.setMaxlength(40); + lstLanguage = new Listbox(); + lstLanguage.setId("lstLanguage"); + lstLanguage.setRows(1); + lstLanguage.setMold("select"); + lstLanguage.addEventListener(Events.ON_SELECT, this); + lstLanguage.setWidth("180px"); + + // Update Language List + lstLanguage.getItems().clear(); + String[] availableLanguages = Language.getNames(); + for (String langName : availableLanguages) { + Language language = Language.getLanguage(langName); + lstLanguage.appendItem(langName, language.getAD_Language()); + } + /* btnOk = new Button(); btnOk.setName("btnOk"); btnOk.setLabel("Ok"); @@ -141,6 +174,15 @@ public class LoginPanel extends Window implements EventListener { validateLogin(); } + if (event.getName().equals("onSelect")) + { + if(eventComp.getId().equals(lstLanguage.getId())) { + String langName = (String) lstLanguage.getSelectedItem().getValue(); + Env.setContext(ctx, Env.LANGUAGE, langName); + Language language = Language.getLanguage(langName); + Env.verifyLanguage(ctx, language); + } + } } /** * validates user name and password when logging in