Skip to content

Commit 2e68cb6

Browse files
committed
New Setting "Default Language" when creating user.
1 parent 06f23c3 commit 2e68cb6

File tree

4 files changed

+71
-29
lines changed

4 files changed

+71
-29
lines changed

src/main/java/com/gitblit/wicket/pages/EditUserPage.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@
3131
<tr><th><wicket:message key="gb.confirmPassword"></wicket:message></th><td class="edit"><input type="password" wicket:id="confirmPassword" size="30" tabindex="3" /></td></tr>
3232
<tr><th><wicket:message key="gb.displayName"></wicket:message></th><td class="edit"><input type="text" wicket:id="displayName" size="30" tabindex="4" /></td></tr>
3333
<tr><th><wicket:message key="gb.emailAddress"></wicket:message></th><td class="edit"><input type="text" wicket:id="emailAddress" size="30" tabindex="5" /></td></tr>
34-
<tr><th><wicket:message key="gb.canAdmin"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canAdmin" tabindex="6" /> &nbsp;<span class="help-inline"><wicket:message key="gb.canAdminDescription"></wicket:message></span></label></td></tr>
35-
<tr><th><wicket:message key="gb.canCreate"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canCreate" tabindex="7" /> &nbsp;<span class="help-inline"><wicket:message key="gb.canCreateDescription"></wicket:message></span></label></td></tr>
36-
<tr><th><wicket:message key="gb.canFork"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canFork" tabindex="8" /> &nbsp;<span class="help-inline"><wicket:message key="gb.canForkDescription"></wicket:message></span></label></td></tr>
37-
<tr><th><wicket:message key="gb.excludeFromFederation"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="excludeFromFederation" tabindex="9" /> &nbsp;<span class="help-inline"><wicket:message key="gb.excludeFromFederationDescription"></wicket:message></span></label></td></tr>
38-
<tr><th><wicket:message key="gb.disableUser"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="disabled" tabindex="10" /> &nbsp;<span class="help-inline"><wicket:message key="gb.disableUserDescription"></wicket:message></span></label></td></tr>
34+
<tr><th><wicket:message key="gb.languagePreference"></wicket:message></th><td class="edit"><select wicket:id="language" ></select></td></tr>
35+
<tr><th><wicket:message key="gb.canAdmin"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canAdmin" tabindex="7" /> &nbsp;<span class="help-inline"><wicket:message key="gb.canAdminDescription"></wicket:message></span></label></td></tr>
36+
<tr><th><wicket:message key="gb.canCreate"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canCreate" tabindex="8" /> &nbsp;<span class="help-inline"><wicket:message key="gb.canCreateDescription"></wicket:message></span></label></td></tr>
37+
<tr><th><wicket:message key="gb.canFork"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canFork" tabindex="9" /> &nbsp;<span class="help-inline"><wicket:message key="gb.canForkDescription"></wicket:message></span></label></td></tr>
38+
<tr><th><wicket:message key="gb.excludeFromFederation"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="excludeFromFederation" tabindex="10" /> &nbsp;<span class="help-inline"><wicket:message key="gb.excludeFromFederationDescription"></wicket:message></span></label></td></tr>
39+
<tr><th><wicket:message key="gb.disableUser"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="disabled" tabindex="11" /> &nbsp;<span class="help-inline"><wicket:message key="gb.disableUserDescription"></wicket:message></span></label></td></tr>
3940
</tbody>
4041
</table>
4142
</div>

src/main/java/com/gitblit/wicket/pages/EditUserPage.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@
2020
import java.util.Collections;
2121
import java.util.Iterator;
2222
import java.util.List;
23+
import java.util.Locale;
2324

2425
import org.apache.wicket.PageParameters;
2526
import org.apache.wicket.behavior.SimpleAttributeModifier;
2627
import org.apache.wicket.extensions.markup.html.form.palette.Palette;
2728
import org.apache.wicket.markup.html.form.Button;
2829
import org.apache.wicket.markup.html.form.CheckBox;
30+
import org.apache.wicket.markup.html.form.DropDownChoice;
2931
import org.apache.wicket.markup.html.form.Form;
3032
import org.apache.wicket.markup.html.form.TextField;
3133
import org.apache.wicket.model.CompoundPropertyModel;
34+
import org.apache.wicket.model.IModel;
3235
import org.apache.wicket.model.Model;
3336
import org.apache.wicket.model.util.CollectionModel;
3437
import org.apache.wicket.model.util.ListModel;
@@ -108,6 +111,30 @@ protected void setupPage(final UserModel userModel) {
108111
final Palette<String> teams = new Palette<String>("teams", new ListModel<String>(
109112
new ArrayList<String>(userTeams)), new CollectionModel<String>(app().users()
110113
.getAllTeamNames()), new StringChoiceRenderer(), 10, false);
114+
Locale locale = userModel.getPreferences().getLocale();
115+
if (locale == null) {
116+
locale = Locale.ENGLISH;
117+
}
118+
119+
List<Language> languages = UserPage.getLanguages();
120+
Language preferredLanguage = null;
121+
if (locale != null) {
122+
String localeCode = locale.getLanguage();
123+
if (!StringUtils.isEmpty(locale.getCountry())) {
124+
localeCode += "_" + locale.getCountry();
125+
}
126+
127+
for (Language lang : languages) {
128+
if (lang.code.equals(localeCode)) {
129+
// language_COUNTRY match
130+
preferredLanguage = lang;
131+
} else if (preferredLanguage != null && lang.code.startsWith(locale.getLanguage())) {
132+
// language match
133+
preferredLanguage = lang;
134+
}
135+
}
136+
}
137+
final IModel<Language> language = Model.of(preferredLanguage);
111138
Form<UserModel> form = new Form<UserModel>("editForm", model) {
112139

113140
private static final long serialVersionUID = 1L;
@@ -123,6 +150,10 @@ protected void onSubmit() {
123150
error(getString("gb.pleaseSetUsername"));
124151
return;
125152
}
153+
Language lang = language.getObject();
154+
if (lang != null) {
155+
userModel.getPreferences().setLocale(lang.code);
156+
}
126157
// force username to lower-case
127158
userModel.username = userModel.username.toLowerCase();
128159
String username = userModel.username;
@@ -251,7 +282,10 @@ protected void onSubmit() {
251282
form.add(confirmPasswordField.setEnabled(editCredentials));
252283
form.add(new TextField<String>("displayName").setEnabled(editDisplayName));
253284
form.add(new TextField<String>("emailAddress").setEnabled(editEmailAddress));
285+
254286

287+
DropDownChoice<Language> choice = new DropDownChoice<Language>("language",language,languages );
288+
form.add( choice.setEnabled(languages.size()>0) );
255289
if (userModel.canAdmin() && !userModel.canAdmin) {
256290
// user inherits Admin permission
257291
// display a disabled-yet-checked checkbox
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.gitblit.wicket.pages;
2+
3+
import java.io.Serializable;
4+
5+
public class Language implements Serializable {
6+
7+
private static final long serialVersionUID = 1L;
8+
9+
final String name;
10+
final String code;
11+
12+
public Language(String name, String code) {
13+
this.name = name;
14+
this.code = code;
15+
}
16+
17+
@Override
18+
public String toString() {
19+
return name + " (" + code + ")";
20+
}
21+
}

src/main/java/com/gitblit/wicket/pages/UserPage.java

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,9 @@ protected void addDropDownMenus(List<NavLink> navLinks) {
166166

167167
navLinks.add(menu);
168168
}
169-
170-
private void addPreferences(UserModel user) {
171-
// add preferences
172-
Form<Void> prefs = new Form<Void>("prefsForm");
173-
174-
List<Language> languages = Arrays.asList(
169+
170+
public static List<Language> getLanguages(){
171+
return Arrays.asList(
175172
new Language("Deutsch","de"),
176173
new Language("English","en"),
177174
new Language("Español", "es"),
@@ -185,6 +182,13 @@ private void addPreferences(UserModel user) {
185182
new Language("Português", "pt_BR"),
186183
new Language("簡體中文", "zh_CN"),
187184
new Language("正體中文", "zh_TW"));
185+
}
186+
187+
private void addPreferences(UserModel user) {
188+
// add preferences
189+
Form<Void> prefs = new Form<Void>("prefsForm");
190+
191+
List<Language> languages = getLanguages();
188192

189193
Locale locale = user.getPreferences().getLocale();
190194
if (locale == null) {
@@ -315,22 +319,4 @@ private void addSshKeys(final UserModel user) {
315319
add(new Fragment("sshKeysLink", "sshKeysLinkFragment", this).setRenderBodyOnly(true));
316320
add(keysTab.setRenderBodyOnly(true));
317321
}
318-
319-
private class Language implements Serializable {
320-
321-
private static final long serialVersionUID = 1L;
322-
323-
final String name;
324-
final String code;
325-
326-
public Language(String name, String code) {
327-
this.name = name;
328-
this.code = code;
329-
}
330-
331-
@Override
332-
public String toString() {
333-
return name + " (" + code +")";
334-
}
335-
}
336322
}

0 commit comments

Comments
 (0)