summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/wicket/pages/EditUserPage.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/gitblit/wicket/pages/EditUserPage.java')
-rw-r--r--src/main/java/com/gitblit/wicket/pages/EditUserPage.java34
1 files changed, 34 insertions, 0 deletions
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<String> teams = new Palette<String>("teams", new ListModel<String>(
new ArrayList<String>(userTeams)), new CollectionModel<String>(app().users()
.getAllTeamNames()), new StringChoiceRenderer(), 10, false);
+ Locale locale = userModel.getPreferences().getLocale();
+ if (locale == null) {
+ locale = Locale.ENGLISH;
+ }
+
+ List<Language> 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> language = Model.of(preferredLanguage);
Form<UserModel> form = new Form<UserModel>("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<String>("displayName").setEnabled(editDisplayName));
form.add(new TextField<String>("emailAddress").setEnabled(editEmailAddress));
+
+ DropDownChoice<Language> choice = new DropDownChoice<Language>("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