From 2ea85bfe371215ef21fcd528bc40fa57c48ee698 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 31 Oct 2012 16:38:03 -0400
Subject: [PATCH] Personal repositories must always be owned by the account the repo is stored in
---
src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java | 38 +++++++++++++++++++++++++++-----------
1 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
index f7deaf1..50f0d52 100644
--- a/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
+++ b/src/com/gitblit/wicket/panels/ProjectRepositoryPanel.java
@@ -51,7 +51,7 @@
private static final long serialVersionUID = 1L;
- public ProjectRepositoryPanel(String wicketId, Localizer localizer, Component owner,
+ public ProjectRepositoryPanel(String wicketId, Localizer localizer, Component parent,
final boolean isAdmin, final RepositoryModel entry,
final Map<AccessRestrictionType, String> accessRestrictions) {
super(wicketId);
@@ -66,7 +66,7 @@
swatch = new Label("repositorySwatch", " ").setEscapeModelStrings(false);
} else {
swatch = new Label("repositorySwatch", "!");
- WicketUtils.setHtmlTooltip(swatch, localizer.getString("gb.workingCopyWarning", owner));
+ WicketUtils.setHtmlTooltip(swatch, localizer.getString("gb.workingCopyWarning", parent));
}
WicketUtils.setCssBackground(swatch, entry.toString());
add(swatch);
@@ -91,13 +91,13 @@
add(new BookmarkablePageLink<Void>("docs", DocsPage.class, pp).setVisible(entry.useDocs));
if (entry.isFrozen) {
- add(WicketUtils.newImage("frozenIcon", "cold_16x16.png", localizer.getString("gb.isFrozen", owner)));
+ add(WicketUtils.newImage("frozenIcon", "cold_16x16.png", localizer.getString("gb.isFrozen", parent)));
} else {
add(WicketUtils.newClearPixel("frozenIcon").setVisible(false));
}
if (entry.isFederated) {
- add(WicketUtils.newImage("federatedIcon", "federated_16x16.png", localizer.getString("gb.isFederated", owner)));
+ add(WicketUtils.newImage("federatedIcon", "federated_16x16.png", localizer.getString("gb.isFederated", parent)));
} else {
add(WicketUtils.newClearPixel("federatedIcon").setVisible(false));
}
@@ -121,12 +121,24 @@
add(WicketUtils.newBlankImage("accessRestrictionIcon"));
}
- add(new Label("repositoryOwner", StringUtils.isEmpty(entry.owner) ? "" : (entry.owner + " ("
- + localizer.getString("gb.owner", owner) + ")")));
+ if (StringUtils.isEmpty(entry.owner)) {
+ add(new Label("repositoryOwner").setVisible(false));
+ } else {
+ UserModel ownerModel = GitBlit.self().getUserModel(entry.owner);
+ String owner = entry.owner;
+ if (ownerModel != null) {
+ owner = ownerModel.getDisplayName();
+ }
+ add(new Label("repositoryOwner", owner + " (" +
+ localizer.getString("gb.owner", parent) + ")"));
+ }
UserModel user = GitBlitWebSession.get().getUser();
+ if (user == null) {
+ user = UserModel.ANONYMOUS;
+ }
Fragment repositoryLinks;
- boolean showOwner = user != null && user.username.equalsIgnoreCase(entry.owner);
+ boolean showOwner = entry.isOwner(user.username);
// owner of personal repository gets admin powers
boolean showAdmin = isAdmin || entry.isUsersPersonalRepository(user.username);
@@ -143,15 +155,19 @@
@Override
public void onClick() {
if (GitBlit.self().deleteRepositoryModel(entry)) {
- info(MessageFormat.format(getString("gb.repositoryDeleted"), entry));
- // TODO dp.remove(entry);
+ // redirect to the owning page
+ if (entry.isPersonalRepository()) {
+ setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(entry.projectPath.substring(1)));
+ } else {
+ setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(entry.projectPath));
+ }
} else {
error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), entry));
}
}
};
deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
- localizer.getString("gb.deleteRepository", owner), entry)));
+ localizer.getString("gb.deleteRepository", parent), entry)));
repositoryLinks.add(deleteLink);
}
} else {
@@ -181,7 +197,7 @@
add(new Label("repositorySize", entry.size).setVisible(showSize));
} else {
// New repository
- add(new Label("repositorySize", localizer.getString("gb.empty", owner)).setEscapeModelStrings(false));
+ add(new Label("repositorySize", localizer.getString("gb.empty", parent)).setEscapeModelStrings(false));
}
add(new ExternalLink("syndication", SyndicationServlet.asLink("", entry.name, null, 0)));
--
Gitblit v1.9.1