From 2c50880dbd5de292e37d2533fccfcb62f6be9f95 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 03 Jun 2014 10:34:51 -0400 Subject: [PATCH] Extract authorization/access selection panel to re-usable class --- src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java | 91 +++++++-------------------------------------- 1 files changed, 14 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java index 7b4ee9f..8630d20 100644 --- a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java @@ -15,9 +15,6 @@ */ package com.gitblit.wicket.panels; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import org.apache.wicket.Component; @@ -26,25 +23,20 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.link.ExternalLink; -import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.panel.Fragment; import com.gitblit.Constants.AccessRestrictionType; -import com.gitblit.GitBlit; import com.gitblit.Keys; -import com.gitblit.SyndicationServlet; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; +import com.gitblit.servlet.SyndicationServlet; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.WicketUtils; -import com.gitblit.wicket.pages.BasePage; -import com.gitblit.wicket.pages.DocsPage; import com.gitblit.wicket.pages.EditRepositoryPage; import com.gitblit.wicket.pages.LogPage; import com.gitblit.wicket.pages.SummaryPage; -import com.gitblit.wicket.pages.TicketsPage; import com.gitblit.wicket.pages.TreePage; public class ProjectRepositoryPanel extends BasePanel { @@ -56,9 +48,8 @@ final Map<AccessRestrictionType, String> accessRestrictions) { super(wicketId); - final boolean showSwatch = GitBlit.getBoolean(Keys.web.repositoryListSwatches, true); - final boolean gitServlet = GitBlit.getBoolean(Keys.git.enableGitServlet, true); - final boolean showSize = GitBlit.getBoolean(Keys.web.showRepositorySizes, true); + final boolean showSwatch = app().settings().getBoolean(Keys.web.repositoryListSwatches, true); + final boolean showSize = app().settings().getBoolean(Keys.web.showRepositorySizes, true); // repository swatch Component swatch; @@ -82,7 +73,7 @@ add(new Label("originRepository").setVisible(false)); } else { Fragment forkFrag = new Fragment("originRepository", "originFragment", this); - forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(entry.originRepository), + forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(entry.originRepository), SummaryPage.class, WicketUtils.newRepositoryParameter(entry.originRepository))); add(forkFrag); } @@ -93,8 +84,11 @@ add(WicketUtils.newClearPixel("sparkleshareIcon").setVisible(false)); } - add(new BookmarkablePageLink<Void>("tickets", TicketsPage.class, pp).setVisible(entry.useTickets)); - add(new BookmarkablePageLink<Void>("docs", DocsPage.class, pp).setVisible(entry.useDocs)); + if (entry.isMirror) { + add(WicketUtils.newImage("mirrorIcon", "mirror_16x16.png", localizer.getString("gb.isMirror", parent))); + } else { + add(WicketUtils.newClearPixel("mirrorIcon").setVisible(false)); + } if (entry.isFrozen) { add(WicketUtils.newImage("frozenIcon", "cold_16x16.png", localizer.getString("gb.isFrozen", parent))); @@ -107,36 +101,17 @@ } else { add(WicketUtils.newClearPixel("federatedIcon").setVisible(false)); } - switch (entry.accessRestriction) { - case NONE: - add(WicketUtils.newBlankImage("accessRestrictionIcon").setVisible(false)); - break; - case PUSH: - add(WicketUtils.newImage("accessRestrictionIcon", "lock_go_16x16.png", - accessRestrictions.get(entry.accessRestriction))); - break; - case CLONE: - add(WicketUtils.newImage("accessRestrictionIcon", "lock_pull_16x16.png", - accessRestrictions.get(entry.accessRestriction))); - break; - case VIEW: - add(WicketUtils.newImage("accessRestrictionIcon", "shield_16x16.png", - accessRestrictions.get(entry.accessRestriction))); - break; - default: - add(WicketUtils.newBlankImage("accessRestrictionIcon")); - } if (ArrayUtils.isEmpty(entry.owners)) { add(new Label("repositoryOwner").setVisible(false)); } else { String owner = ""; for (String username : entry.owners) { - UserModel ownerModel = GitBlit.self().getUserModel(username); - + UserModel ownerModel = app().users().getUserModel(username); + if (ownerModel != null) { owner = ownerModel.getDisplayName(); - } + } } if (entry.owners.size() > 1) { owner += ", ..."; @@ -152,38 +127,10 @@ user = UserModel.ANONYMOUS; } Fragment repositoryLinks; - boolean showOwner = entry.isOwner(user.username); - // owner of personal repository gets admin powers - boolean showAdmin = isAdmin || entry.isUsersPersonalRepository(user.username); - - if (showAdmin || showOwner) { - repositoryLinks = new Fragment("repositoryLinks", showAdmin ? "repositoryAdminLinks" - : "repositoryOwnerLinks", this); + if (user.canAdmin(entry)) { + repositoryLinks = new Fragment("repositoryLinks", "repositoryOwnerLinks", this); repositoryLinks.add(new BookmarkablePageLink<Void>("editRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name))); - if (showAdmin) { - Link<Void> deleteLink = new Link<Void>("deleteRepository") { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - if (GitBlit.self().deleteRepositoryModel(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", parent), entry))); - repositoryLinks.add(deleteLink); - } } else { repositoryLinks = new Fragment("repositoryLinks", "repositoryUserLinks", this); } @@ -215,15 +162,5 @@ } add(new ExternalLink("syndication", SyndicationServlet.asLink("", entry.name, null, 0))); - - List<String> repositoryUrls = new ArrayList<String>(); - if (gitServlet) { - // add the Gitblit repository url - repositoryUrls.add(BasePage.getRepositoryUrl(entry)); - } - repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(entry.name)); - - String primaryUrl = ArrayUtils.isEmpty(repositoryUrls) ? "" : repositoryUrls.remove(0); - add(new RepositoryUrlPanel("repositoryCloneUrl", primaryUrl)); } } -- Gitblit v1.9.1