From 74221eb302e782ef23777d5c3f0a649ceb321c1e Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 05 Jun 2014 10:23:58 -0400
Subject: [PATCH] Add method to INotificationManager to return email service status

---
 src/main/java/com/gitblit/wicket/pages/UserPage.java |   48 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/UserPage.java b/src/main/java/com/gitblit/wicket/pages/UserPage.java
index baad4a0..9404896 100644
--- a/src/main/java/com/gitblit/wicket/pages/UserPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/UserPage.java
@@ -50,6 +50,7 @@
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.panels.ChoiceOption;
 import com.gitblit.wicket.panels.ProjectRepositoryPanel;
+import com.gitblit.wicket.panels.SshKeysPanel;
 import com.gitblit.wicket.panels.TextOption;
 import com.gitblit.wicket.panels.UserTitlePanel;
 
@@ -100,10 +101,22 @@
 
 		if (isMyProfile) {
 			addPreferences(user);
+
+			if (app().gitblit().isServingSSH()) {
+				// show the SSH key management tab
+				addSshKeys(user);
+			} else {
+				// SSH daemon is disabled, hide keys tab
+				add(new Label("sshKeysLink").setVisible(false));
+				add(new Label("sshKeysTab").setVisible(false));
+			}
 		} else {
 			// visiting user
 			add(new Label("preferencesLink").setVisible(false));
 			add(new Label("preferencesTab").setVisible(false));
+
+			add(new Label("sshKeysLink").setVisible(false));
+			add(new Label("sshKeysTab").setVisible(false));
 		}
 
 		List<RepositoryModel> repositories = getRepositories(params);
@@ -168,28 +181,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;
 				}
 			}
@@ -229,7 +250,7 @@
 
 				Language lang = language.getObject();
 				if (lang != null) {
-					user.getPreferences().locale = lang.code;
+					user.getPreferences().setLocale(lang.code);
 				}
 
 				try {
@@ -251,6 +272,15 @@
 		add(fragment.setRenderBodyOnly(true));
 	}
 
+	private void addSshKeys(final UserModel user) {
+		Fragment keysTab = new Fragment("sshKeysTab", "sshKeysTabFragment", this);
+		keysTab.add(new SshKeysPanel("sshKeysPanel", user, getClass(), getPageParameters()));
+
+		// add the SSH keys tab
+		add(new Fragment("sshKeysLink", "sshKeysLinkFragment", this).setRenderBodyOnly(true));
+		add(keysTab.setRenderBodyOnly(true));
+	}
+
 	private class Language implements Serializable {
 
 		private static final long serialVersionUID = 1L;

--
Gitblit v1.9.1