diff options
author | James Moger <james.moger@gitblit.com> | 2012-10-05 17:44:53 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-10-05 17:44:53 -0400 |
commit | 6662e38a4e252b6ed455ca8f11729d0f1440a3b0 (patch) | |
tree | a16c60eebaac88d07248431dd96bda835314d04a /src | |
parent | dd79f46d8e39b041fcdc349d18f76dfbc038667e (diff) | |
download | gitblit-6662e38a4e252b6ed455ca8f11729d0f1440a3b0.tar.gz gitblit-6662e38a4e252b6ed455ca8f11729d0f1440a3b0.zip |
Implemented New Repository for personal repositories
Diffstat (limited to 'src')
-rw-r--r-- | src/com/gitblit/ConfigUserService.java | 4 | ||||
-rw-r--r-- | src/com/gitblit/Constants.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/FileUserService.java | 5 | ||||
-rw-r--r-- | src/com/gitblit/client/EditUserDialog.java | 7 | ||||
-rw-r--r-- | src/com/gitblit/models/UserModel.java | 18 | ||||
-rw-r--r-- | src/com/gitblit/wicket/GitBlitWebApp.properties | 5 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/EditRepositoryPage.java | 51 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/EditUserPage.html | 3 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/EditUserPage.java | 1 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/RepositoriesPage.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/ReviewProposalPage.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/SendProposalPage.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/UserPage.html | 6 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/UserPage.java | 9 | ||||
-rw-r--r-- | src/com/gitblit/wicket/panels/RepositoriesPanel.html | 12 | ||||
-rw-r--r-- | src/com/gitblit/wicket/panels/RepositoriesPanel.java | 38 |
16 files changed, 141 insertions, 26 deletions
diff --git a/src/com/gitblit/ConfigUserService.java b/src/com/gitblit/ConfigUserService.java index f526835d..831ede9b 100644 --- a/src/com/gitblit/ConfigUserService.java +++ b/src/com/gitblit/ConfigUserService.java @@ -753,6 +753,9 @@ public class ConfigUserService implements IUserService { if (model.canFork) {
roles.add(Constants.FORK_ROLE);
}
+ if (model.canCreate) {
+ roles.add(Constants.CREATE_ROLE);
+ }
if (model.excludeFromFederation) {
roles.add(Constants.NOT_FEDERATED_ROLE);
}
@@ -862,6 +865,7 @@ public class ConfigUserService implements IUserService { USER, username, ROLE)));
user.canAdmin = roles.contains(Constants.ADMIN_ROLE);
user.canFork = roles.contains(Constants.FORK_ROLE);
+ user.canCreate = roles.contains(Constants.CREATE_ROLE);
user.excludeFromFederation = roles.contains(Constants.NOT_FEDERATED_ROLE);
// repository memberships
diff --git a/src/com/gitblit/Constants.java b/src/com/gitblit/Constants.java index c53119b2..c831c42d 100644 --- a/src/com/gitblit/Constants.java +++ b/src/com/gitblit/Constants.java @@ -43,6 +43,8 @@ public class Constants { public static final String ADMIN_ROLE = "#admin";
public static final String FORK_ROLE = "#fork";
+
+ public static final String CREATE_ROLE = "#create";
public static final String NOT_FEDERATED_ROLE = "#notfederated";
diff --git a/src/com/gitblit/FileUserService.java b/src/com/gitblit/FileUserService.java index 40bc3f60..f4394696 100644 --- a/src/com/gitblit/FileUserService.java +++ b/src/com/gitblit/FileUserService.java @@ -236,6 +236,8 @@ public class FileUserService extends FileSettings implements IUserService { model.canAdmin = true;
} else if (role.equalsIgnoreCase(Constants.FORK_ROLE)) {
model.canFork = true;
+ } else if (role.equalsIgnoreCase(Constants.CREATE_ROLE)) {
+ model.canCreate = true;
} else if (role.equalsIgnoreCase(Constants.NOT_FEDERATED_ROLE)) {
model.excludeFromFederation = true;
}
@@ -288,6 +290,9 @@ public class FileUserService extends FileSettings implements IUserService { if (model.canFork) {
roles.add(Constants.FORK_ROLE);
}
+ if (model.canCreate) {
+ roles.add(Constants.CREATE_ROLE);
+ }
if (model.excludeFromFederation) {
roles.add(Constants.NOT_FEDERATED_ROLE);
}
diff --git a/src/com/gitblit/client/EditUserDialog.java b/src/com/gitblit/client/EditUserDialog.java index 88612b79..4ef036e8 100644 --- a/src/com/gitblit/client/EditUserDialog.java +++ b/src/com/gitblit/client/EditUserDialog.java @@ -80,6 +80,8 @@ public class EditUserDialog extends JDialog { private JCheckBox canAdminCheckbox;
private JCheckBox canForkCheckbox;
+
+ private JCheckBox canCreateCheckbox;
private JCheckBox notFederatedCheckbox;
@@ -128,7 +130,8 @@ public class EditUserDialog extends JDialog { displayNameField = new JTextField(anUser.displayName == null ? "" : anUser.displayName, 25);
emailAddressField = new JTextField(anUser.emailAddress == null ? "" : anUser.emailAddress, 25);
canAdminCheckbox = new JCheckBox(Translation.get("gb.canAdminDescription"), anUser.canAdmin);
- canForkCheckbox = new JCheckBox(Translation.get("gb.canForkDescription"), anUser.canFork);
+ canForkCheckbox = new JCheckBox(Translation.get("gb.canForkDescription"), anUser.canFork);
+ canCreateCheckbox = new JCheckBox(Translation.get("gb.canCreateDescription"), anUser.canCreate);
notFederatedCheckbox = new JCheckBox(
Translation.get("gb.excludeFromFederationDescription"),
anUser.excludeFromFederation);
@@ -149,6 +152,7 @@ public class EditUserDialog extends JDialog { fieldsPanel.add(newFieldPanel(Translation.get("gb.emailAddress"), emailAddressField));
fieldsPanel.add(newFieldPanel(Translation.get("gb.canAdmin"), canAdminCheckbox));
fieldsPanel.add(newFieldPanel(Translation.get("gb.canFork"), canForkCheckbox));
+ fieldsPanel.add(newFieldPanel(Translation.get("gb.canCreate"), canCreateCheckbox));
fieldsPanel.add(newFieldPanel(Translation.get("gb.excludeFromFederation"),
notFederatedCheckbox));
@@ -311,6 +315,7 @@ public class EditUserDialog extends JDialog { user.canAdmin = canAdminCheckbox.isSelected();
user.canFork = canForkCheckbox.isSelected();
+ user.canCreate = canCreateCheckbox.isSelected();
user.excludeFromFederation = notFederatedCheckbox.isSelected();
user.repositories.clear();
diff --git a/src/com/gitblit/models/UserModel.java b/src/com/gitblit/models/UserModel.java index dd41df08..94bd055d 100644 --- a/src/com/gitblit/models/UserModel.java +++ b/src/com/gitblit/models/UserModel.java @@ -46,6 +46,7 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> public String emailAddress;
public boolean canAdmin;
public boolean canFork;
+ public boolean canCreate;
public boolean excludeFromFederation;
public final Set<String> repositories = new HashSet<String>();
public final Set<TeamModel> teams = new HashSet<TeamModel>();
@@ -174,6 +175,23 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> }
return displayName;
}
+
+ public String getPersonalPath() {
+ return "~" + username;
+ }
+
+ @Override
+ public int hashCode() {
+ return username.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof UserModel) {
+ return username.equals(((UserModel) o).username);
+ }
+ return false;
+ }
@Override
public String toString() {
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.properties b/src/com/gitblit/wicket/GitBlitWebApp.properties index 16606427..97faf761 100644 --- a/src/com/gitblit/wicket/GitBlitWebApp.properties +++ b/src/com/gitblit/wicket/GitBlitWebApp.properties @@ -337,4 +337,7 @@ gb.noForks = {0} has no forks gb.forkNotAuthorized = sorry, you are not authorized to fork {0}
gb.forkInProgress = fork in progress
gb.preparingFork = preparing your fork...
-gb.isFork = is fork
\ No newline at end of file +gb.isFork = is fork
+gb.canCreate = can create
+gb.canCreateDescription = can create personal repositories
+gb.illegalPersonalRepositoryLocation = your personal repository must be located at \"{0}\"
\ No newline at end of file diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index 214d0f0d..f7427eb5 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -80,6 +80,19 @@ public class EditRepositoryPage extends RootSubPage { model.accessRestriction = AccessRestrictionType.fromName(restriction);
String authorization = GitBlit.getString(Keys.git.defaultAuthorizationControl, null);
model.authorizationControl = AuthorizationControl.fromName(authorization);
+
+ GitBlitWebSession session = GitBlitWebSession.get();
+ UserModel user = session.getUser();
+ if (user != null && user.canCreate && !user.canAdmin) {
+ // personal create permissions, inject personal repository path
+ model.name = user.getPersonalPath() + "/";
+ model.projectPath = user.getPersonalPath();
+ model.owner = user.username;
+ // personal repositories are private by default
+ model.accessRestriction = AccessRestrictionType.VIEW;
+ model.authorizationControl = AuthorizationControl.NAMED;
+ }
+
setupPage(model);
}
@@ -103,8 +116,15 @@ public class EditRepositoryPage extends RootSubPage { List<String> preReceiveScripts = new ArrayList<String>();
List<String> postReceiveScripts = new ArrayList<String>();
+ GitBlitWebSession session = GitBlitWebSession.get();
+ final UserModel user = session.getUser() == null ? UserModel.ANONYMOUS : session.getUser();
+
if (isCreate) {
- super.setupPage(getString("gb.newRepository"), "");
+ if (user.canAdmin) {
+ super.setupPage(getString("gb.newRepository"), "");
+ } else {
+ super.setupPage(getString("gb.newRepository"), user.getDisplayName());
+ }
} else {
super.setupPage(getString("gb.edit"), repositoryModel.name);
if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) {
@@ -195,11 +215,14 @@ public class EditRepositoryPage extends RootSubPage { protected void onSubmit() {
try {
// confirm a repository name was entered
- if (StringUtils.isEmpty(repositoryModel.name)) {
+ if (repositoryModel.name == null && StringUtils.isEmpty(repositoryModel.name)) {
error(getString("gb.pleaseSetRepositoryName"));
return;
}
-
+
+ // ensure name is trimmed
+ repositoryModel.name = repositoryModel.name.trim();
+
// automatically convert backslashes to forward slashes
repositoryModel.name = repositoryModel.name.replace('\\', '/');
// Automatically replace // with /
@@ -229,6 +252,22 @@ public class EditRepositoryPage extends RootSubPage { c));
return;
}
+
+ if (user.canCreate && !user.canAdmin) {
+ // ensure repository name begins with the user's path
+ if (!repositoryModel.name.startsWith(user.getPersonalPath())) {
+ error(MessageFormat.format(getString("gb.illegalPersonalRepositoryLocation"),
+ user.getPersonalPath()));
+ return;
+ }
+
+ if (repositoryModel.name.equals(user.getPersonalPath())) {
+ // reset path prefix and show error
+ repositoryModel.name = user.getPersonalPath() + "/";
+ error(getString("gb.pleaseSetRepositoryName"));
+ return;
+ }
+ }
// confirm access restriction selection
if (repositoryModel.accessRestriction == null) {
@@ -339,7 +378,7 @@ public class EditRepositoryPage extends RootSubPage { form.add(new SimpleAttributeModifier("autocomplete", "off"));
// field names reflective match RepositoryModel fields
- form.add(new TextField<String>("name").setEnabled(isCreate || isAdmin));
+ form.add(new TextField<String>("name").setEnabled(isCreate || isAdmin || repositoryModel.isUsersPersonalRepository(user.username)));
form.add(new TextField<String>("description"));
form.add(new DropDownChoice<String>("owner", GitBlit.self().getAllUsernames())
.setEnabled(GitBlitWebSession.get().canAdmin()));
@@ -435,8 +474,8 @@ public class EditRepositoryPage extends RootSubPage { }
if (isCreate) {
// Create Repository
- if (!user.canAdmin) {
- // Only Administrators May Create
+ if (!user.canCreate && !user.canAdmin) {
+ // Only administrators or permitted users may create
error(getString("gb.errorOnlyAdminMayCreateRepository"), true);
}
} else {
diff --git a/src/com/gitblit/wicket/pages/EditUserPage.html b/src/com/gitblit/wicket/pages/EditUserPage.html index 685eb64f..77932079 100644 --- a/src/com/gitblit/wicket/pages/EditUserPage.html +++ b/src/com/gitblit/wicket/pages/EditUserPage.html @@ -18,7 +18,8 @@ <tr><th><wicket:message key="gb.emailAddress"></wicket:message></th><td class="edit"><input type="text" wicket:id="emailAddress" size="30" tabindex="5" /></td></tr>
<tr><th><wicket:message key="gb.canAdmin"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canAdmin" tabindex="6" /> <span class="help-inline"><wicket:message key="gb.canAdminDescription"></wicket:message></span></label></td></tr>
<tr><th><wicket:message key="gb.canFork"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canFork" tabindex="7" /> <span class="help-inline"><wicket:message key="gb.canForkDescription"></wicket:message></span></label></td></tr>
- <tr><th><wicket:message key="gb.excludeFromFederation"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="excludeFromFederation" tabindex="8" /> <span class="help-inline"><wicket:message key="gb.excludeFromFederationDescription"></wicket:message></span></label></td></tr>
+ <tr><th><wicket:message key="gb.canCreate"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="canCreate" tabindex="8" /> <span class="help-inline"><wicket:message key="gb.canCreateDescription"></wicket:message></span></label></td></tr>
+ <tr><th><wicket:message key="gb.excludeFromFederation"></wicket:message></th><td class="edit"><label class="checkbox"><input type="checkbox" wicket:id="excludeFromFederation" tabindex="9" /> <span class="help-inline"><wicket:message key="gb.excludeFromFederationDescription"></wicket:message></span></label></td></tr>
<tr><td colspan="2" style="padding-top:15px;"><h3><wicket:message key="gb.accessPermissions"></wicket:message> <small><wicket:message key="gb.accessPermissionsForUserDescription"></wicket:message></small></h3></td></tr>
<tr><th style="vertical-align: top;"><wicket:message key="gb.teamMemberships"></wicket:message></th><td style="padding:2px;"><span wicket:id="teams"></span></td></tr>
<tr><td colspan="2"><hr></hr></td></tr>
diff --git a/src/com/gitblit/wicket/pages/EditUserPage.java b/src/com/gitblit/wicket/pages/EditUserPage.java index 31f91c1c..49515fb9 100644 --- a/src/com/gitblit/wicket/pages/EditUserPage.java +++ b/src/com/gitblit/wicket/pages/EditUserPage.java @@ -232,6 +232,7 @@ public class EditUserPage extends RootSubPage { form.add(new TextField<String>("emailAddress").setEnabled(editEmailAddress));
form.add(new CheckBox("canAdmin"));
form.add(new CheckBox("canFork"));
+ form.add(new CheckBox("canCreate"));
form.add(new CheckBox("excludeFromFederation"));
form.add(repositories);
form.add(teams.setEnabled(editTeams));
diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.java b/src/com/gitblit/wicket/pages/RepositoriesPage.java index 98dade67..36f2c6d5 100644 --- a/src/com/gitblit/wicket/pages/RepositoriesPage.java +++ b/src/com/gitblit/wicket/pages/RepositoriesPage.java @@ -82,7 +82,7 @@ public class RepositoriesPage extends RootPage { List<RepositoryModel> repositories = getRepositories(params);
RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", showAdmin,
- repositories, true, getAccessRestrictions());
+ true, repositories, true, getAccessRestrictions());
// push the panel down if we are hiding the admin controls and the
// welcome message
if (!showAdmin && !repositoriesMessage.isVisible()) {
diff --git a/src/com/gitblit/wicket/pages/ReviewProposalPage.java b/src/com/gitblit/wicket/pages/ReviewProposalPage.java index df7b1bc1..e1813861 100644 --- a/src/com/gitblit/wicket/pages/ReviewProposalPage.java +++ b/src/com/gitblit/wicket/pages/ReviewProposalPage.java @@ -92,7 +92,7 @@ public class ReviewProposalPage extends RootSubPage { List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(
proposal.repositories.values());
RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", false,
- repositories, false, getAccessRestrictions());
+ false, repositories, false, getAccessRestrictions());
add(repositoriesPanel);
}
diff --git a/src/com/gitblit/wicket/pages/SendProposalPage.java b/src/com/gitblit/wicket/pages/SendProposalPage.java index aa9c03a1..fc5f95b5 100644 --- a/src/com/gitblit/wicket/pages/SendProposalPage.java +++ b/src/com/gitblit/wicket/pages/SendProposalPage.java @@ -146,7 +146,7 @@ public class SendProposalPage extends RootSubPage { List<RepositoryModel> repositories = new ArrayList<RepositoryModel>(
proposal.repositories.values());
RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", false,
- repositories, false, getAccessRestrictions());
+ false, repositories, false, getAccessRestrictions());
add(repositoriesPanel);
}
}
diff --git a/src/com/gitblit/wicket/pages/UserPage.html b/src/com/gitblit/wicket/pages/UserPage.html index 5886a3a2..c7131c09 100644 --- a/src/com/gitblit/wicket/pages/UserPage.html +++ b/src/com/gitblit/wicket/pages/UserPage.html @@ -18,6 +18,12 @@ </div>
<div class="span8">
+ <div class="pull-right">
+ <a class="btn-small" wicket:id="newRepository" style="padding-right:0px;">
+ <i class="icon icon-plus-sign"></i>
+ <wicket:message key="gb.newRepository"></wicket:message>
+ </a>
+ </div>
<div class="tabbable">
<!-- tab titles -->
<ul class="nav nav-tabs">
diff --git a/src/com/gitblit/wicket/pages/UserPage.java b/src/com/gitblit/wicket/pages/UserPage.java index 28450e94..e699d03f 100644 --- a/src/com/gitblit/wicket/pages/UserPage.java +++ b/src/com/gitblit/wicket/pages/UserPage.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
@@ -99,6 +100,14 @@ public class UserPage extends RootPage { PersonIdent person = new PersonIdent(user.getDisplayName(), user.emailAddress);
add(new GravatarImage("gravatar", person, 210));
+ UserModel sessionUser = GitBlitWebSession.get().getUser();
+ if (sessionUser != null && user.canCreate && sessionUser.equals(user)) {
+ // user can create personal repositories
+ add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
+ } else {
+ add(new Label("newRepository").setVisible(false));
+ }
+
List<RepositoryModel> repositories = getRepositories(params);
Collections.sort(repositories, new Comparator<RepositoryModel>() {
diff --git a/src/com/gitblit/wicket/panels/RepositoriesPanel.html b/src/com/gitblit/wicket/panels/RepositoriesPanel.html index ddf1656e..42f9f1f2 100644 --- a/src/com/gitblit/wicket/panels/RepositoriesPanel.html +++ b/src/com/gitblit/wicket/panels/RepositoriesPanel.html @@ -7,7 +7,7 @@ <body>
<wicket:panel>
- <div wicket:id="adminPanel">[admin links]</div>
+ <div wicket:id="managementPanel">[management links]</div>
<table class="repositories">
<span wicket:id="headerContent"></span>
@@ -32,6 +32,16 @@ </div>
</wicket:fragment>
+ <wicket:fragment wicket:id="personalLinks">
+ <!-- page nav links -->
+ <div class="admin_nav">
+ <a class="btn-small" wicket:id="newRepository" style="padding-right:0px;">
+ <i class="icon icon-plus-sign"></i>
+ <wicket:message key="gb.newRepository"></wicket:message>
+ </a>
+ </div>
+ </wicket:fragment>
+
<wicket:fragment wicket:id="repositoryAdminLinks">
<span class="link"><a wicket:id="editRepository"><wicket:message key="gb.edit">[edit]</wicket:message></a> | <a wicket:id="deleteRepository"><wicket:message key="gb.delete">[delete]</wicket:message></a></span>
</wicket:fragment>
diff --git a/src/com/gitblit/wicket/panels/RepositoriesPanel.java b/src/com/gitblit/wicket/panels/RepositoriesPanel.java index 02ebf4f4..137fae6b 100644 --- a/src/com/gitblit/wicket/panels/RepositoriesPanel.java +++ b/src/com/gitblit/wicket/panels/RepositoriesPanel.java @@ -64,7 +64,7 @@ public class RepositoriesPanel extends BasePanel { private static final long serialVersionUID = 1L;
- public RepositoriesPanel(String wicketId, final boolean showAdmin,
+ public RepositoriesPanel(String wicketId, final boolean showAdmin, final boolean showManagement,
List<RepositoryModel> models, boolean enableLinks,
final Map<AccessRestrictionType, String> accessRestrictionTranslations) {
super(wicketId);
@@ -76,19 +76,31 @@ public class RepositoriesPanel extends BasePanel { final IDataProvider<RepositoryModel> dp;
- Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this);
- adminLinks.add(new Link<Void>("clearCache") {
+ Fragment managementLinks;
+ if (showAdmin) {
+ // user is admin
+ managementLinks = new Fragment("managementPanel", "adminLinks", this);
+ managementLinks.add(new Link<Void>("clearCache") {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
- @Override
- public void onClick() {
- GitBlit.self().resetRepositoryListCache();
- setResponsePage(RepositoriesPage.class);
- }
- }.setVisible(GitBlit.getBoolean(Keys.git.cacheRepositoryList, true)));
- adminLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
- add(adminLinks.setVisible(showAdmin));
+ @Override
+ public void onClick() {
+ GitBlit.self().resetRepositoryListCache();
+ setResponsePage(RepositoriesPage.class);
+ }
+ }.setVisible(GitBlit.getBoolean(Keys.git.cacheRepositoryList, true)));
+ managementLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
+ add(managementLinks);
+ } else if (showManagement && user != null && user.canCreate) {
+ // user can create personal repositories
+ managementLinks = new Fragment("managementPanel", "personalLinks", this);
+ managementLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
+ add(managementLinks);
+ } else {
+ // user has no management permissions
+ add (new Label("managementPanel").setVisible(false));
+ }
if (GitBlit.getString(Keys.web.repositoryListType, "flat").equalsIgnoreCase("grouped")) {
List<RepositoryModel> rootRepositories = new ArrayList<RepositoryModel>();
@@ -297,7 +309,7 @@ public class RepositoriesPanel extends BasePanel { row.add(lastChangeLabel);
WicketUtils.setCssClass(lastChangeLabel, getTimeUtils().timeAgoCss(entry.lastChange));
- boolean showOwner = user != null && user.username.equalsIgnoreCase(entry.owner);
+ boolean showOwner = user != null && entry.isOwner(user.username);
boolean myPersonalRepository = showOwner && entry.isUsersPersonalRepository(user.username);
if (showAdmin || myPersonalRepository) {
Fragment repositoryLinks = new Fragment("repositoryLinks",
|