From: ajermakovics Date: Wed, 19 Sep 2012 21:10:29 +0000 (+0100) Subject: Added a link to delete a branch X-Git-Tag: v1.2.0~220^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F39%2Fhead;p=gitblit.git Added a link to delete a branch delete link appears on the branches page if an admin user is logged in. --- diff --git a/src/com/gitblit/wicket/pages/BranchesPage.java b/src/com/gitblit/wicket/pages/BranchesPage.java index 2b7d5187..b38a80a2 100644 --- a/src/com/gitblit/wicket/pages/BranchesPage.java +++ b/src/com/gitblit/wicket/pages/BranchesPage.java @@ -24,7 +24,7 @@ public class BranchesPage extends RepositoryPage { public BranchesPage(PageParameters params) { super(params); - add(new BranchesPanel("branchesPanel", getRepositoryModel(), getRepository(), -1)); + add(new BranchesPanel("branchesPanel", getRepositoryModel(), getRepository(), -1, isShowAdmin())); } @Override diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java index 7e21911b..69719464 100644 --- a/src/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/com/gitblit/wicket/pages/RepositoryPage.java @@ -75,6 +75,7 @@ public abstract class RepositoryPage extends BasePage { private Map submodules; private final Map registeredPages; + private boolean showAdmin; public RepositoryPage(PageParameters params) { super(params); @@ -148,7 +149,7 @@ public abstract class RepositoryPage extends BasePage { } // Conditionally add edit link - final boolean showAdmin; + this.showAdmin = false; if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) { boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false); showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin(); @@ -412,6 +413,11 @@ public abstract class RepositoryPage extends BasePage { return WicketUtils.newObjectParameter(repositoryName, commitId); } + public boolean isShowAdmin() + { + return this.showAdmin; + } + private class SearchForm extends SessionlessForm implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java index 2a624c26..0b531786 100644 --- a/src/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/com/gitblit/wicket/pages/SummaryPage.java @@ -132,7 +132,7 @@ public class SummaryPage extends RepositoryPage { add(new LogPanel("commitsPanel", repositoryName, getRepositoryModel().HEAD, r, numberCommits, 0)); add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs).hideIfEmpty()); - add(new BranchesPanel("branchesPanel", getRepositoryModel(), r, numberRefs).hideIfEmpty()); + add(new BranchesPanel("branchesPanel", getRepositoryModel(), r, numberRefs, isShowAdmin()).hideIfEmpty()); if (getRepositoryModel().showReadme) { String htmlText = null; diff --git a/src/com/gitblit/wicket/panels/BranchesPanel.html b/src/com/gitblit/wicket/panels/BranchesPanel.html index 1322eefd..d2d88d38 100644 --- a/src/com/gitblit/wicket/panels/BranchesPanel.html +++ b/src/com/gitblit/wicket/panels/BranchesPanel.html @@ -29,7 +29,7 @@ - | | | + | | | | diff --git a/src/com/gitblit/wicket/panels/BranchesPanel.java b/src/com/gitblit/wicket/panels/BranchesPanel.java index 8bbab9a0..25126531 100644 --- a/src/com/gitblit/wicket/panels/BranchesPanel.java +++ b/src/com/gitblit/wicket/panels/BranchesPanel.java @@ -15,6 +15,7 @@ */ package com.gitblit.wicket.panels; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -22,6 +23,7 @@ import java.util.List; 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 org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; @@ -38,9 +40,9 @@ import com.gitblit.utils.StringUtils; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.pages.BranchesPage; import com.gitblit.wicket.pages.CommitPage; +import com.gitblit.wicket.pages.GitSearchPage; import com.gitblit.wicket.pages.LogPage; import com.gitblit.wicket.pages.MetricsPage; -import com.gitblit.wicket.pages.GitSearchPage; import com.gitblit.wicket.pages.TreePage; public class BranchesPanel extends BasePanel { @@ -49,8 +51,8 @@ public class BranchesPanel extends BasePanel { private final boolean hasBranches; - public BranchesPanel(String wicketId, final RepositoryModel model, Repository r, - final int maxCount) { + public BranchesPanel(String wicketId, final RepositoryModel model, final Repository r, + final int maxCount, final boolean showAdmin) { super(wicketId); // branches @@ -106,7 +108,7 @@ public class BranchesPanel extends BasePanel { WicketUtils.setHtmlTooltip(shortlog, shortMessage); } item.add(shortlog); - + if (maxCount <= 0) { Fragment fragment = new Fragment("branchLinks", "branchPageLinks", this); fragment.add(new BookmarkablePageLink("log", LogPage.class, WicketUtils @@ -118,6 +120,9 @@ public class BranchesPanel extends BasePanel { fragment.add(new ExternalLink("syndication", SyndicationServlet.asLink( getRequest().getRelativePathPrefixToContextRoot(), model.name, entry.getName(), 0))); + + fragment.add(createDeleteBranchLink(r, entry, showAdmin)); + item.add(fragment); } else { Fragment fragment = new Fragment("branchLinks", "branchPanelLinks", this); @@ -148,4 +153,28 @@ public class BranchesPanel extends BasePanel { setVisible(hasBranches); return this; } + + private Link createDeleteBranchLink(final Repository r, final RefModel entry, final boolean showAdmin) + { + Link deleteLink = new Link("deleteBranch") { + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + if( showAdmin && JGitUtils.deleteBranchRef(r, entry.getName()) ) { + info(MessageFormat.format("Branch \"{0}\" deleted", entry.displayName)); + } + else { + error(MessageFormat.format("Failed to delete branch \"{0}\"", entry.displayName)); + } + } + }; + + deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format( + "Delete branch \"{0}\"?", entry.displayName ))); + + deleteLink.setVisible(showAdmin); + + return deleteLink; + } }