Browse Source

Add clone transport user preference

tags/v1.6.0
James Moger 10 years ago
parent
commit
1b04d7730f

+ 1
- 0
releases.moxie View File

@@ -43,6 +43,7 @@ r24: {
- 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)

+ 9
- 0
src/main/java/com/gitblit/ConfigUserService.java View File

@@ -36,6 +36,7 @@ import org.slf4j.LoggerFactory;
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;
@@ -98,6 +99,8 @@ public class ConfigUserService implements IUserService {
private static final String EMAILONMYTICKETCHANGES = "emailMeOnMyTicketChanges";
private static final String TRANSPORT = "transport";
private static final String ACCOUNTTYPE = "accountType";
private static final String DISABLED = "disabled";
@@ -713,7 +716,12 @@ public class ConfigUserService implements IUserService {
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 @@ public class ConfigUserService implements IUserService {
// 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(

+ 19
- 0
src/main/java/com/gitblit/GitBlit.java View File

@@ -20,6 +20,7 @@ import java.util.ArrayList;
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 @@ public class GitBlit extends GitblitManager {
}
});

// 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;
}


+ 11
- 0
src/main/java/com/gitblit/models/UserPreferences.java View File

@@ -23,6 +23,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;

import com.gitblit.Constants.Transport;
import com.gitblit.utils.StringUtils;

/**
@@ -41,6 +42,8 @@ public class UserPreferences implements Serializable {

private Boolean emailMeOnMyTicketChanges;

private Transport transport;

private final Map<String, UserRepositoryPreferences> repositoryPreferences = new TreeMap<String, UserRepositoryPreferences>();

public UserPreferences(String username) {
@@ -113,4 +116,12 @@ public class UserPreferences implements Serializable {
public void setEmailMeOnMyTicketChanges(boolean value) {
this.emailMeOnMyTicketChanges = value;
}

public Transport getTransport() {
return transport;
}

public void setTransport(Transport transport) {
this.transport = transport;
}
}

+ 3
- 1
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties View File

@@ -739,4 +739,6 @@ gb.key = Key
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

+ 1
- 0
src/main/java/com/gitblit/wicket/pages/UserPage.html View File

@@ -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>

+ 21
- 0
src/main/java/com/gitblit/wicket/pages/UserPage.java View File

@@ -35,6 +35,7 @@ import org.apache.wicket.markup.repeater.data.ListDataProvider;
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 @@ public class UserPage extends RootPage {
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 @@ public class UserPage extends RootPage {
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 @@ public class UserPage extends RootPage {
}
user.getPreferences().setEmailMeOnMyTicketChanges(emailMeOnMyTicketChanges.getObject());
user.getPreferences().setTransport(transport.getObject());
try {
app().gitblit().reviseUser(user.username, user);

Loading…
Cancel
Save