From cc1c3ffa7d261d2e8bcdc600253528e8d09e1d06 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sat, 08 Mar 2014 11:53:01 -0500 Subject: [PATCH] Allow selection of integration branch in new ticket page --- src/main/java/com/gitblit/wicket/pages/NewTicketPage.java | 31 +++++++++++++++++++++++++++++-- 1 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/NewTicketPage.java b/src/main/java/com/gitblit/wicket/pages/NewTicketPage.java index 17ad1d1..25fe48f 100644 --- a/src/main/java/com/gitblit/wicket/pages/NewTicketPage.java +++ b/src/main/java/com/gitblit/wicket/pages/NewTicketPage.java @@ -29,7 +29,9 @@ import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; +import org.eclipse.jgit.lib.Repository; +import com.gitblit.Constants; import com.gitblit.Constants.AccessPermission; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.TicketModel; @@ -61,6 +63,8 @@ private IModel<String> topicModel; + private IModel<String> mergeToModel; + private IModel<TicketResponsible> responsibleModel; private IModel<TicketMilestone> milestoneModel; @@ -83,6 +87,7 @@ typeModel = Model.of(TicketModel.Type.defaultType); titleModel = Model.of(); topicModel = Model.of(); + mergeToModel = Model.of(Repository.shortenRefName(getRepositoryModel().HEAD)); responsibleModel = Model.of(); milestoneModel = Model.of(); @@ -123,6 +128,12 @@ change.setField(Field.milestone, milestone.name); } + // integration branch + String mergeTo = mergeToModel.getObject(); + if (!StringUtils.isEmpty(mergeTo)) { + change.setField(Field.mergeTo, mergeTo); + } + TicketModel ticket = app().tickets().createTicket(getRepositoryModel(), 0L, change); if (ticket != null) { TicketNotifier notifier = app().tickets().createNotifier(); @@ -149,7 +160,7 @@ descriptionEditor.setRepository(repositoryName); form.add(descriptionEditor); - if (currentUser != null && currentUser.isAuthenticated && currentUser.canPush(getRepositoryModel())) { + if (currentUser.canAdmin(null, getRepositoryModel())) { // responsible List<TicketResponsible> responsibles = new ArrayList<TicketResponsible>(); for (RegistrantAccessPermission rp : app().repositories().getUserAccessPermissions(getRepositoryModel())) { @@ -170,10 +181,26 @@ Fragment milestone = new Fragment("milestone", "milestoneFragment", this); milestone.add(new DropDownChoice<TicketMilestone>("milestone", milestoneModel, milestones)); form.add(milestone.setVisible(!milestones.isEmpty())); + + // integration branch + List<String> branches = new ArrayList<String>(); + for (String branch : getRepositoryModel().getLocalBranches()) { + // exclude ticket branches + if (!branch.startsWith(Constants.R_TICKET)) { + branches.add(Repository.shortenRefName(branch)); + } + } + branches.remove(Repository.shortenRefName(getRepositoryModel().HEAD)); + branches.add(0, Repository.shortenRefName(getRepositoryModel().HEAD)); + + Fragment mergeto = new Fragment("mergeto", "mergeToFragment", this); + mergeto.add(new DropDownChoice<String>("mergeto", mergeToModel, branches)); + form.add(mergeto.setVisible(!branches.isEmpty())); } else { - // user does not have permission to assign milestone or responsible + // user does not have permission to assign milestone, responsible, or mergeto form.add(new Label("responsible").setVisible(false)); form.add(new Label("milestone").setVisible(false)); + form.add(new Label("mergeto").setVisible(false)); } form.add(new Button("create")); -- Gitblit v1.9.1