James Moger
2014-06-05 74221eb302e782ef23777d5c3f0a649ceb321c1e
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;