From 2e68cb6eb7f943379aa4f8a40854bc9dfd8d9bc4 Mon Sep 17 00:00:00 2001 From: william Date: Wed, 8 Feb 2017 08:35:01 +0800 Subject: New Setting "Default Language" when creating user. --- .../com/gitblit/wicket/pages/EditUserPage.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/main/java/com/gitblit/wicket/pages/EditUserPage.java') diff --git a/src/main/java/com/gitblit/wicket/pages/EditUserPage.java b/src/main/java/com/gitblit/wicket/pages/EditUserPage.java index 72dee6b6..0a6981b3 100644 --- a/src/main/java/com/gitblit/wicket/pages/EditUserPage.java +++ b/src/main/java/com/gitblit/wicket/pages/EditUserPage.java @@ -20,15 +20,18 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Locale; import org.apache.wicket.PageParameters; import org.apache.wicket.behavior.SimpleAttributeModifier; import org.apache.wicket.extensions.markup.html.form.palette.Palette; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.CheckBox; +import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.CompoundPropertyModel; +import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.util.CollectionModel; import org.apache.wicket.model.util.ListModel; @@ -108,6 +111,30 @@ public class EditUserPage extends RootSubPage { final Palette teams = new Palette("teams", new ListModel( new ArrayList(userTeams)), new CollectionModel(app().users() .getAllTeamNames()), new StringChoiceRenderer(), 10, false); + Locale locale = userModel.getPreferences().getLocale(); + if (locale == null) { + locale = Locale.ENGLISH; + } + + List languages = UserPage.getLanguages(); + Language preferredLanguage = null; + if (locale != null) { + String localeCode = locale.getLanguage(); + if (!StringUtils.isEmpty(locale.getCountry())) { + localeCode += "_" + locale.getCountry(); + } + + for (Language lang : languages) { + if (lang.code.equals(localeCode)) { + // language_COUNTRY match + preferredLanguage = lang; + } else if (preferredLanguage != null && lang.code.startsWith(locale.getLanguage())) { + // language match + preferredLanguage = lang; + } + } + } + final IModel language = Model.of(preferredLanguage); Form form = new Form("editForm", model) { private static final long serialVersionUID = 1L; @@ -123,6 +150,10 @@ public class EditUserPage extends RootSubPage { error(getString("gb.pleaseSetUsername")); return; } + Language lang = language.getObject(); + if (lang != null) { + userModel.getPreferences().setLocale(lang.code); + } // force username to lower-case userModel.username = userModel.username.toLowerCase(); String username = userModel.username; @@ -251,7 +282,10 @@ public class EditUserPage extends RootSubPage { form.add(confirmPasswordField.setEnabled(editCredentials)); form.add(new TextField("displayName").setEnabled(editDisplayName)); form.add(new TextField("emailAddress").setEnabled(editEmailAddress)); + + DropDownChoice choice = new DropDownChoice("language",language,languages ); + form.add( choice.setEnabled(languages.size()>0) ); if (userModel.canAdmin() && !userModel.canAdmin) { // user inherits Admin permission // display a disabled-yet-checked checkbox -- cgit v1.2.3