From d0f6f2599eecb06c76739c7fab3c581fa031e75b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 30 May 2013 23:15:13 -0400
Subject: [PATCH] Added locale user preference, still requires ui

---
 src/main/java/com/gitblit/wicket/GitBlitWebSession.java |    8 ++++++++
 src/main/java/com/gitblit/ConfigUserService.java        |    8 ++++++++
 src/main/java/com/gitblit/models/UserPreferences.java   |    2 ++
 3 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gitblit/ConfigUserService.java b/src/main/java/com/gitblit/ConfigUserService.java
index f2bd7b8..8a6c92f 100644
--- a/src/main/java/com/gitblit/ConfigUserService.java
+++ b/src/main/java/com/gitblit/ConfigUserService.java
@@ -92,6 +92,8 @@
 	
 	private static final String STARRED = "starred";
 	
+	private static final String LOCALE = "locale";
+
 	private final File realmFile;
 
 	private final Logger logger = LoggerFactory.getLogger(ConfigUserService.class);
@@ -849,6 +851,11 @@
 			if (!StringUtils.isEmpty(model.countryCode)) {
 				config.setString(USER, model.username, COUNTRYCODE, model.countryCode);
 			}
+			if (model.getPreferences() != null) {
+				if (!StringUtils.isEmpty(model.getPreferences().locale)) {
+					config.setString(USER, model.username, LOCALE, model.getPreferences().locale);
+				}
+			}
 
 			// user roles
 			List<String> roles = new ArrayList<String>();
@@ -1010,6 +1017,7 @@
 					user.stateProvince = config.getString(USER, username, STATEPROVINCE);
 					user.countryCode = config.getString(USER, username, COUNTRYCODE);
 					user.cookie = config.getString(USER, username, COOKIE);
+					user.getPreferences().locale = config.getString(USER, username, LOCALE);	
 					if (StringUtils.isEmpty(user.cookie) && !StringUtils.isEmpty(user.password)) {
 						user.cookie = StringUtils.getSHA1(user.username + user.password);
 					}
diff --git a/src/main/java/com/gitblit/models/UserPreferences.java b/src/main/java/com/gitblit/models/UserPreferences.java
index 10f69cf..e6baa28 100644
--- a/src/main/java/com/gitblit/models/UserPreferences.java
+++ b/src/main/java/com/gitblit/models/UserPreferences.java
@@ -37,6 +37,8 @@
 
 	public final String username;
 
+	public String locale;
+	
 	private final Map<String, UserRepositoryPreferences> repositoryPreferences = new TreeMap<String, UserRepositoryPreferences>();
 
 	public UserPreferences(String username) {
diff --git a/src/main/java/com/gitblit/wicket/GitBlitWebSession.java b/src/main/java/com/gitblit/wicket/GitBlitWebSession.java
index 5195a1f..f25bcf9 100644
--- a/src/main/java/com/gitblit/wicket/GitBlitWebSession.java
+++ b/src/main/java/com/gitblit/wicket/GitBlitWebSession.java
@@ -15,6 +15,7 @@
  */
 package com.gitblit.wicket;
 
+import java.util.Locale;
 import java.util.Map;
 import java.util.TimeZone;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -120,6 +121,13 @@
 
 	public void setUser(UserModel user) {
 		this.user = user;
+		if (user != null) {
+			Locale preferredLocale = user.getPreferences().getLocale();
+			if (preferredLocale != null) {
+				// set the user's preferred locale
+				setLocale(preferredLocale);
+			}
+		}
 	}
 
 	public TimeZone getTimezone() {

--
Gitblit v1.9.1