James Moger
2014-06-05 1b04d7730f56a08c935974504b2d849d01870c02
Add clone transport user preference
7 files modified
66 ■■■■■ changed files
releases.moxie 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/ConfigUserService.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/GitBlit.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/models/UserPreferences.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties 4 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/UserPage.html 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/UserPage.java 21 ●●●●● patch | view | raw | blame | history
releases.moxie
@@ -43,6 +43,7 @@
    - Simplified repository creation, offer simple README generation, and insertion of a pre-defined .gitignore file (ticket-76)
    - Added an extension point for monitoring onStartup and onShutdown (ticket-79)
    - Tag server-side merges when incremental push tags are enabled (issue-432, ticket-85)
    - Add a user preference for the clone transport (ticket-90)
    - Add setting to control default thread pool size for miscellaneous background tasks (ticket-92)
    dependencyChanges:
    - Update to javax.mail 1.5.1 (issue-417, ticket-58)
src/main/java/com/gitblit/ConfigUserService.java
@@ -36,6 +36,7 @@
import com.gitblit.Constants.AccessPermission;
import com.gitblit.Constants.AccountType;
import com.gitblit.Constants.Transport;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.models.TeamModel;
import com.gitblit.models.UserModel;
@@ -97,6 +98,8 @@
    private static final String LOCALE = "locale";
    private static final String EMAILONMYTICKETCHANGES = "emailMeOnMyTicketChanges";
    private static final String TRANSPORT = "transport";
    private static final String ACCOUNTTYPE = "accountType";
@@ -713,7 +716,12 @@
                    String val = model.getPreferences().getLocale().getLanguage() + "_" + model.getPreferences().getLocale().getCountry();
                    config.setString(USER, model.username, LOCALE, val);
                }
                config.setBoolean(USER, model.username, EMAILONMYTICKETCHANGES, model.getPreferences().isEmailMeOnMyTicketChanges());
                if (model.getPreferences().getTransport() != null) {
                    config.setString(USER, model.username, TRANSPORT, model.getPreferences().getTransport().name());
                }
            }
            // user roles
@@ -891,6 +899,7 @@
                    // preferences
                    user.getPreferences().setLocale(config.getString(USER, username, LOCALE));
                    user.getPreferences().setEmailMeOnMyTicketChanges(config.getBoolean(USER, username, EMAILONMYTICKETCHANGES, true));
                    user.getPreferences().setTransport(Transport.fromString(config.getString(USER, username, TRANSPORT)));
                    // user roles
                    Set<String> roles = new HashSet<String>(Arrays.asList(config.getStringList(
src/main/java/com/gitblit/GitBlit.java
@@ -20,6 +20,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -264,6 +265,24 @@
            }
        });
        // consider the user's transport preference
        RepositoryUrl preferredUrl = null;
        Transport preferredTransport = user.getPreferences().getTransport();
        if (preferredTransport != null) {
            Iterator<RepositoryUrl> itr = list.iterator();
            while (itr.hasNext()) {
                RepositoryUrl url = itr.next();
                if (url.transport.equals(preferredTransport)) {
                    itr.remove();
                    preferredUrl = url;
                    break;
                }
            }
        }
        if (preferredUrl != null) {
            list.add(0, preferredUrl);
        }
        return list;
    }
src/main/java/com/gitblit/models/UserPreferences.java
@@ -23,6 +23,7 @@
import java.util.Map;
import java.util.TreeMap;
import com.gitblit.Constants.Transport;
import com.gitblit.utils.StringUtils;
/**
@@ -40,6 +41,8 @@
    private String locale;
    private Boolean emailMeOnMyTicketChanges;
    private Transport transport;
    private final Map<String, UserRepositoryPreferences> repositoryPreferences = new TreeMap<String, UserRepositoryPreferences>();
@@ -113,4 +116,12 @@
    public void setEmailMeOnMyTicketChanges(boolean value) {
        this.emailMeOnMyTicketChanges = value;
    }
    public Transport getTransport() {
        return transport;
    }
    public void setTransport(Transport transport) {
        this.transport = transport;
    }
}
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -739,4 +739,6 @@
gb.comment = Comment
gb.sshKeyCommentDescription = Enter an optional comment. If blank, the comment will be extracted from the key data.
gb.permission = Permission
gb.sshKeyPermissionDescription = Specify the access permission for the SSH key
gb.sshKeyPermissionDescription = Specify the access permission for the SSH key
gb.transportPreference = Transport Preference
gb.transportPreferenceDescription = Set the transport that you prefer to use for cloning
src/main/java/com/gitblit/wicket/pages/UserPage.html
@@ -66,6 +66,7 @@
            <div wicket:id="emailAddress"></div>
            <div wicket:id="language"></div>
            <div wicket:id="emailMeOnMyTicketChanges"></div>
            <div wicket:id="transport"></div>
            
            <div class="form-actions"><input class="btn btn-appmenu" type="submit" value="Save" wicket:message="value:gb.save" wicket:id="save" /></div>
        </form>    
src/main/java/com/gitblit/wicket/pages/UserPage.java
@@ -35,6 +35,7 @@
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.gitblit.Constants.Transport;
import com.gitblit.GitBlitException;
import com.gitblit.Keys;
import com.gitblit.models.Menu.ParameterMenuItem;
@@ -221,6 +222,7 @@
        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());
        final IModel<Transport> transport = Model.of(user.getPreferences().getTransport());
        prefs.add(new TextOption("displayName",
                getString("gb.displayName"),
@@ -243,6 +245,24 @@
                getString("gb.emailMeOnMyTicketChangesDescription"),
                emailMeOnMyTicketChanges).setVisible(app().notifier().isSendingMail()));
        List<Transport> availableTransports = new ArrayList<>();
        if (app().gitblit().isServingSSH()) {
            availableTransports.add(Transport.SSH);
        }
        if (app().gitblit().isServingHTTP()) {
            availableTransports.add(Transport.HTTPS);
            availableTransports.add(Transport.HTTP);
        }
        if (app().gitblit().isServingGIT()) {
            availableTransports.add(Transport.GIT);
        }
        prefs.add(new ChoiceOption<Transport>("transport",
                getString("gb.transportPreference"),
                getString("gb.transportPreferenceDescription"),
                transport,
                availableTransports));
        prefs.add(new AjaxButton("save") {
            private static final long serialVersionUID = 1L;
@@ -261,6 +281,7 @@
                }
                user.getPreferences().setEmailMeOnMyTicketChanges(emailMeOnMyTicketChanges.getObject());
                user.getPreferences().setTransport(transport.getObject());
                try {
                    app().gitblit().reviseUser(user.username, user);