From 87163b405e60dba58453105cd8c06181d4f6b13a Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 05 Mar 2015 09:17:34 -0500 Subject: [PATCH] Merged #243 "Allow Forks is not saved on repository edit" --- src/main/java/com/gitblit/wicket/pages/EditTicketPage.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 48 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java index c3294ba..192b48c 100644 --- a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java +++ b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java @@ -37,6 +37,7 @@ import com.gitblit.Constants; import com.gitblit.Constants.AccessPermission; +import com.gitblit.Constants.AuthorizationControl; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.TicketModel; import com.gitblit.models.TicketModel.Change; @@ -51,6 +52,7 @@ import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.MarkdownTextArea; +import com.google.common.base.Optional; /** * Page for editing a ticket. @@ -81,6 +83,10 @@ private IModel<TicketMilestone> milestoneModel; private Label descriptionPreview; + + private IModel<TicketModel.Priority> priorityModel; + + private IModel<TicketModel.Severity> severityModel; public EditTicketPage(PageParameters params) { super(params); @@ -115,6 +121,8 @@ milestoneModel = Model.of(); mergeToModel = Model.of(ticket.mergeTo == null ? getRepositoryModel().mergeTo : ticket.mergeTo); statusModel = Model.of(ticket.status); + priorityModel = Model.of(ticket.priority); + severityModel = Model.of(ticket.severity); setStatelessHint(false); setOutputMarkupId(true); @@ -133,7 +141,7 @@ form.add(new TextField<String>("title", titleModel)); form.add(new TextField<String>("topic", topicModel)); - final IModel<String> markdownPreviewModel = new Model<String>(); + final IModel<String> markdownPreviewModel = Model.of(ticket.body == null ? "" : ticket.body); descriptionPreview = new Label("descriptionPreview", markdownPreviewModel); descriptionPreview.setEscapeModelStrings(false); descriptionPreview.setOutputMarkupId(true); @@ -159,20 +167,30 @@ status.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices)); form.add(status); + List<TicketModel.Severity> severityChoices = Arrays.asList(TicketModel.Severity.choices()); + form.add(new DropDownChoice<TicketModel.Severity>("severity", severityModel, severityChoices)); + if (currentUser.canAdmin(ticket, getRepositoryModel())) { // responsible Set<String> userlist = new TreeSet<String>(ticket.getParticipants()); - for (RegistrantAccessPermission rp : app().repositories().getUserAccessPermissions(getRepositoryModel())) { - if (rp.permission.atLeast(AccessPermission.PUSH) && !rp.isTeam()) { - userlist.add(rp.registrant); + if (UserModel.ANONYMOUS.canPush(getRepositoryModel()) + || AuthorizationControl.AUTHENTICATED == getRepositoryModel().authorizationControl) { + // authorization is ANONYMOUS or AUTHENTICATED (i.e. all users can be set responsible) + userlist.addAll(app().users().getAllUsernames()); + } else { + // authorization is by NAMED users (users with PUSH permission can be set responsible) + for (RegistrantAccessPermission rp : app().repositories().getUserAccessPermissions(getRepositoryModel())) { + if (rp.permission.atLeast(AccessPermission.PUSH)) { + userlist.add(rp.registrant); + } } } List<TicketResponsible> responsibles = new ArrayList<TicketResponsible>(); for (String username : userlist) { UserModel user = app().users().getUserModel(username); - if (user != null) { + if (user != null && !user.disabled) { TicketResponsible responsible = new TicketResponsible(user); responsibles.add(responsible); if (user.username.equals(ticket.responsible)) { @@ -205,10 +223,16 @@ milestones.add(new TicketMilestone(NIL)); } + // milestone Fragment milestone = new Fragment("milestone", "milestoneFragment", this); - milestone.add(new DropDownChoice<TicketMilestone>("milestone", milestoneModel, milestones)); form.add(milestone.setVisible(!milestones.isEmpty())); + + // priority + Fragment priority = new Fragment("priority", "priorityFragment", this); + List<TicketModel.Priority> priorityChoices = Arrays.asList(TicketModel.Priority.choices()); + priority.add(new DropDownChoice<TicketModel.Priority>("priority", priorityModel, priorityChoices)); + form.add(priority); // mergeTo (integration branch) List<String> branches = new ArrayList<String>(); @@ -229,6 +253,7 @@ form.add(new Label("responsible").setVisible(false)); form.add(new Label("milestone").setVisible(false)); form.add(new Label("mergeto").setVisible(false)); + form.add(new Label("priority").setVisible(false)); } form.add(new AjaxButton("update") { @@ -260,7 +285,7 @@ change.setField(Field.title, title); } - String description = descriptionEditor.getText(); + String description = Optional.fromNullable(descriptionEditor.getText()).or(""); if ((StringUtils.isEmpty(ticket.body) && !StringUtils.isEmpty(description)) || (!StringUtils.isEmpty(ticket.body) && !ticket.body.equals(description))) { // description change @@ -279,9 +304,9 @@ change.setField(Field.type, type); } - String topic = topicModel.getObject(); + String topic = Optional.fromNullable(topicModel.getObject()).or(""); if ((StringUtils.isEmpty(ticket.topic) && !StringUtils.isEmpty(topic)) - || (!StringUtils.isEmpty(topic) && !topic.equals(ticket.topic))) { + || (!StringUtils.isEmpty(ticket.topic) && !ticket.topic.equals(topic))) { // topic change change.setField(Field.topic, topic); } @@ -307,6 +332,18 @@ } } + TicketModel.Priority priority = priorityModel.getObject(); + if (!ticket.priority.equals(priority)) + { + change.setField(Field.priority, priority); + } + + TicketModel.Severity severity = severityModel.getObject(); + if (!ticket.severity.equals(severity)) + { + change.setField(Field.severity, severity); + } + String mergeTo = mergeToModel.getObject(); if ((StringUtils.isEmpty(ticket.mergeTo) && !StringUtils.isEmpty(mergeTo)) || (!StringUtils.isEmpty(mergeTo) && !mergeTo.equals(ticket.mergeTo))) { @@ -322,13 +359,13 @@ if (ticket != null) { TicketNotifier notifier = app().tickets().createNotifier(); notifier.sendMailing(ticket); - setResponsePage(TicketsPage.class, WicketUtils.newObjectParameter(getRepositoryModel().name, "" + ticket.number)); + redirectTo(TicketsPage.class, WicketUtils.newObjectParameter(getRepositoryModel().name, "" + ticket.number)); } else { // TODO error } } else { // nothing to change?! - setResponsePage(TicketsPage.class, WicketUtils.newObjectParameter(getRepositoryModel().name, "" + ticket.number)); + redirectTo(TicketsPage.class, WicketUtils.newObjectParameter(getRepositoryModel().name, "" + ticket.number)); } } }); -- Gitblit v1.9.1