From 11eb4b51accebf8a163e8f46f99b067eda80f7b9 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 23 May 2014 08:29:14 -0400 Subject: [PATCH] Remove GitBlit static singleton reference from localclone.groovy --- src/main/java/com/gitblit/wicket/pages/TicketPage.java | 55 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/TicketPage.java b/src/main/java/com/gitblit/wicket/pages/TicketPage.java index 80b5576..659acad 100644 --- a/src/main/java/com/gitblit/wicket/pages/TicketPage.java +++ b/src/main/java/com/gitblit/wicket/pages/TicketPage.java @@ -54,7 +54,6 @@ import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; -import org.eclipse.jgit.transport.URIish; import com.gitblit.Constants; import com.gitblit.Constants.AccessPermission; @@ -64,6 +63,7 @@ import com.gitblit.models.PathModel.PathChangeModel; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RepositoryModel; +import com.gitblit.models.RepositoryUrl; import com.gitblit.models.SubmoduleModel; import com.gitblit.models.TicketModel; import com.gitblit.models.TicketModel.Change; @@ -79,6 +79,7 @@ import com.gitblit.tickets.TicketLabel; import com.gitblit.tickets.TicketMilestone; import com.gitblit.tickets.TicketResponsible; +import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.JGitUtils.MergeStatus; import com.gitblit.utils.MarkdownUtils; @@ -732,16 +733,17 @@ */ if (currentPatchset == null) { // no patchset available - if (ticket.isOpen() && app().tickets().isAcceptingNewPatchsets(repository)) { + RepositoryUrl repoUrl = getRepositoryUrl(user, repository); + boolean canPropose = repoUrl != null && repoUrl.permission.atLeast(AccessPermission.CLONE) && !UserModel.ANONYMOUS.equals(user); + if (ticket.isOpen() && app().tickets().isAcceptingNewPatchsets(repository) && canPropose) { // ticket & repo will accept a proposal patchset // show the instructions for proposing a patchset - String repoUrl = getRepositoryUrl(user, repository); Fragment changeIdFrag = new Fragment("patchset", "proposeFragment", this); changeIdFrag.add(new Label("proposeInstructions", MarkdownUtils.transformMarkdown(getString("gb.proposeInstructions"))).setEscapeModelStrings(false)); changeIdFrag.add(new Label("ptWorkflow", MessageFormat.format(getString("gb.proposeWith"), "Barnum"))); - changeIdFrag.add(new Label("ptWorkflowSteps", getProposeWorkflow("propose_pt.md", repoUrl, ticket.number)).setEscapeModelStrings(false)); + changeIdFrag.add(new Label("ptWorkflowSteps", getProposeWorkflow("propose_pt.md", repoUrl.url, ticket.number)).setEscapeModelStrings(false)); changeIdFrag.add(new Label("gitWorkflow", MessageFormat.format(getString("gb.proposeWith"), "Git"))); - changeIdFrag.add(new Label("gitWorkflowSteps", getProposeWorkflow("propose_git.md", repoUrl, ticket.number)).setEscapeModelStrings(false)); + changeIdFrag.add(new Label("gitWorkflowSteps", getProposeWorkflow("propose_git.md", repoUrl.url, ticket.number)).setEscapeModelStrings(false)); add(changeIdFrag); } else { // explain why you can't propose a patchset @@ -755,6 +757,12 @@ reason = getString("gb.repositoryIsFrozen"); } else if (!repository.acceptNewPatchsets) { reason = getString("gb.repositoryDoesNotAcceptPatchsets"); + } else if (!canPropose) { + if (UserModel.ANONYMOUS.equals(user)) { + reason = getString("gb.anonymousCanNotPropose"); + } else { + reason = getString("gb.youDoNotHaveClonePermission"); + } } else { reason = getString("gb.serverDoesNotAcceptPatchsets"); } @@ -766,12 +774,19 @@ Fragment patchsetFrag = new Fragment("patchset", "patchsetFragment", this); patchsetFrag.add(new Label("commitsInPatchset", MessageFormat.format(getString("gb.commitsInPatchsetN"), currentPatchset.number))); - // current revision - MarkupContainer panel = createPatchsetPanel("panel", repository, user); - patchsetFrag.add(panel); - addUserAttributions(patchsetFrag, currentRevision, avatarWidth); - addUserAttributions(panel, currentRevision, 0); - addDateAttributions(panel, currentRevision); + patchsetFrag.add(createMergePanel(user, repository)); + + if (ticket.isOpen()) { + // current revision + MarkupContainer panel = createPatchsetPanel("panel", repository, user); + patchsetFrag.add(panel); + addUserAttributions(patchsetFrag, currentRevision, avatarWidth); + addUserAttributions(panel, currentRevision, 0); + addDateAttributions(panel, currentRevision); + } else { + // current revision + patchsetFrag.add(new Label("panel").setVisible(false)); + } // commits List<RevCommit> commits = JGitUtils.getRevLog(getRepository(), currentPatchset.base, currentPatchset.tip); @@ -1133,7 +1148,6 @@ WicketUtils.setChangeTypeCssClass(changeType, entry.changeType); setChangeTypeTooltip(changeType, entry.changeType); item.add(changeType); - item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true)); boolean hasSubmodule = false; String submodulePath = null; @@ -1159,7 +1173,7 @@ String displayPath = entry.path; String path = entry.path; if (entry.isSymlink()) { - RevCommit commit = JGitUtils.getCommit(getRepository(), Constants.R_TICKETS_PATCHSETS + ticket.number); + RevCommit commit = JGitUtils.getCommit(getRepository(), PatchsetCommand.getTicketBranch(ticket.number)); path = JGitUtils.getStringContent(getRepository(), commit.getTree(), path); displayPath = entry.path + " -> " + path; } @@ -1176,6 +1190,7 @@ item.add(new LinkPanel("pathName", "list", displayPath, BlobDiffPage.class, WicketUtils.newPathParameter(repositoryName, currentPatchset.tip, path), true)); } + item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true)); } // quick links @@ -1205,7 +1220,6 @@ addPtCheckoutInstructions(user, repository, panel); addGitCheckoutInstructions(user, repository, panel); - panel.add(createMergePanel(user, repository)); return panel; } @@ -1474,15 +1488,14 @@ * @param repository * @return the primary repository url */ - protected String getRepositoryUrl(UserModel user, RepositoryModel repository) { + protected RepositoryUrl getRepositoryUrl(UserModel user, RepositoryModel repository) { HttpServletRequest req = ((WebRequest) getRequest()).getHttpServletRequest(); - String primaryurl = app().gitblit().getRepositoryUrls(req, user, repository).get(0).url; - String url = primaryurl; - try { - url = new URIish(primaryurl).setUser(null).toString(); - } catch (Exception e) { + List<RepositoryUrl> urls = app().gitblit().getRepositoryUrls(req, user, repository); + if (ArrayUtils.isEmpty(urls)) { + return null; } - return url; + RepositoryUrl primary = urls.get(0); + return primary; } /** -- Gitblit v1.9.1