From c7796ebac77a30c91e61ca474f63e8f181f6e1be Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 05 Jun 2014 11:27:13 -0400
Subject: [PATCH] Documentation

---
 src/main/java/com/gitblit/wicket/pages/UserPage.java |   37 +++++++++++++++++++++++++++----------
 1 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/UserPage.java b/src/main/java/com/gitblit/wicket/pages/UserPage.java
index 4a955c7..00a3627 100644
--- a/src/main/java/com/gitblit/wicket/pages/UserPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/UserPage.java
@@ -48,6 +48,7 @@
 import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.GitblitRedirectException;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.panels.BooleanOption;
 import com.gitblit.wicket.panels.ChoiceOption;
 import com.gitblit.wicket.panels.ProjectRepositoryPanel;
 import com.gitblit.wicket.panels.SshKeysPanel;
@@ -181,28 +182,36 @@
 				new Language("Português", "pt_BR"),
 				new Language("中文", "zh_CN"));
 
-		String lc = user.getPreferences().locale;
-		if (StringUtils.isEmpty(lc)) {
+		Locale locale = user.getPreferences().getLocale();
+		if (locale == null) {
 			// user has not specified language preference
 			// try server default preference
-			lc = app().settings().getString(Keys.web.forceDefaultLocale, null);
+			String lc = app().settings().getString(Keys.web.forceDefaultLocale, null);
 			if (StringUtils.isEmpty(lc)) {
 				// server default language is not configured
 				// try browser preference
 				Locale sessionLocale = GitBlitWebSession.get().getLocale();
 				if (sessionLocale != null) {
-					lc = sessionLocale.getLanguage() + "_" + sessionLocale.getCountry();
+					locale = sessionLocale;
 				}
+			} else {
+
 			}
 		}
+
 		Language preferredLanguage = null;
-		if (!StringUtils.isEmpty(lc)) {
+		if (locale != null) {
+			String localeCode = locale.getLanguage();
+			if (!StringUtils.isEmpty(locale.getCountry())) {
+				localeCode += "_" + locale.getCountry();
+			}
+
 			for (Language language : languages) {
-				if (language.code.equals(lc)) {
+				if (language.code.equals(localeCode)) {
 					// language_COUNTRY match
 					preferredLanguage = language;
-				} else if (preferredLanguage != null && lc.startsWith(language.code)) {
-					// language match, but not COUNTRY match
+				} else if (preferredLanguage != null && language.code.startsWith(locale.getLanguage())) {
+					// language match
 					preferredLanguage = language;
 				}
 			}
@@ -211,6 +220,7 @@
 		final IModel<String> displayName = Model.of(user.getDisplayName());
 		final IModel<String> emailAddress = Model.of(user.emailAddress == null ? "" : user.emailAddress);
 		final IModel<Language> language = Model.of(preferredLanguage);
+		final IModel<Boolean> emailMeOnMyTicketChanges = Model.of(user.getPreferences().isEmailMeOnMyTicketChanges());
 
 		prefs.add(new TextOption("displayName",
 				getString("gb.displayName"),
@@ -228,6 +238,11 @@
 				language,
 				languages));
 
+		prefs.add(new BooleanOption("emailMeOnMyTicketChanges",
+				getString("gb.emailMeOnMyTicketChanges"),
+				getString("gb.emailMeOnMyTicketChangesDescription"),
+				emailMeOnMyTicketChanges).setVisible(app().notifier().isSendingMail()));
+
 		prefs.add(new AjaxButton("save") {
 
 			private static final long serialVersionUID = 1L;
@@ -242,8 +257,10 @@
 
 				Language lang = language.getObject();
 				if (lang != null) {
-					user.getPreferences().locale = lang.code;
+					user.getPreferences().setLocale(lang.code);
 				}
+
+				user.getPreferences().setEmailMeOnMyTicketChanges(emailMeOnMyTicketChanges.getObject());
 
 				try {
 					app().gitblit().reviseUser(user.username, user);
@@ -266,7 +283,7 @@
 
 	private void addSshKeys(final UserModel user) {
 		Fragment keysTab = new Fragment("sshKeysTab", "sshKeysTabFragment", this);
-		keysTab.add(new SshKeysPanel("sshKeysPanel", user, getClass(), getPageParameters()));
+		keysTab.add(new SshKeysPanel("sshKeysPanel", user));
 
 		// add the SSH keys tab
 		add(new Fragment("sshKeysLink", "sshKeysLinkFragment", this).setRenderBodyOnly(true));

--
Gitblit v1.9.1