From bfa998a3d04e759be555dd8136aaa9450960a879 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 19:00:04 -0400 Subject: [PATCH] Documentation --- src/main/java/com/gitblit/wicket/pages/EditTicketPage.java | 60 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 44 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java index aad1d6f..00cd47d 100644 --- a/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java +++ b/src/main/java/com/gitblit/wicket/pages/EditTicketPage.java @@ -72,6 +72,8 @@ private IModel<String> mergeToModel; + private IModel<Status> statusModel; + private IModel<TicketResponsible> responsibleModel; private IModel<TicketMilestone> milestoneModel; @@ -86,11 +88,6 @@ currentUser = UserModel.ANONYMOUS; } - if (!currentUser.isAuthenticated || !app().tickets().isAcceptingTicketUpdates(getRepositoryModel())) { - // tickets prohibited - setResponsePage(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); - } - long ticketId = 0L; try { String h = WicketUtils.getObject(params); @@ -100,8 +97,10 @@ } TicketModel ticket = app().tickets().getTicket(getRepositoryModel(), ticketId); - if (ticket == null) { - setResponsePage(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); + if (ticket == null + || !currentUser.canEdit(ticket, getRepositoryModel()) + || !app().tickets().isAcceptingTicketUpdates(getRepositoryModel())) { + setResponsePage(TicketsPage.class, WicketUtils.newObjectParameter(repositoryName, "" + ticketId)); } typeModel = Model.of(ticket.type); @@ -109,7 +108,8 @@ topicModel = Model.of(ticket.topic == null ? "" : ticket.topic); responsibleModel = Model.of(); milestoneModel = Model.of(); - mergeToModel = Model.of(ticket.mergeTo == null ? "" : ticket.mergeTo); + mergeToModel = Model.of(ticket.mergeTo == null ? getRepositoryModel().mergeTo : ticket.mergeTo); + statusModel = Model.of(ticket.status); setStatelessHint(false); setOutputMarkupId(true); @@ -134,15 +134,22 @@ Change change = new Change(createdBy); String title = titleModel.getObject(); - if (!ticket.title.equals(title)) { + if (!StringUtils.isEmpty(title) && !ticket.title.equals(title)) { // title change change.setField(Field.title, title); } String description = descriptionEditor.getText(); - if (!ticket.body.equals(description)) { + if ((StringUtils.isEmpty(ticket.body) && !StringUtils.isEmpty(description)) + || (!StringUtils.isEmpty(ticket.body) && !ticket.body.equals(description))) { // description change change.setField(Field.body, description); + } + + Status status = statusModel.getObject(); + if (!ticket.status.equals(status)) { + // status change + change.setField(Field.status, status); } Type type = typeModel.getObject(); @@ -213,6 +220,7 @@ typeChoices = Arrays.asList(TicketModel.Type.choices()); } form.add(new DropDownChoice<TicketModel.Type>("type", typeModel, typeChoices)); + form.add(new TextField<String>("title", titleModel)); form.add(new TextField<String>("topic", topicModel)); @@ -227,7 +235,22 @@ descriptionEditor.setText(ticket.body); form.add(descriptionEditor); - if (currentUser != null && currentUser.isAuthenticated && currentUser.canPush(getRepositoryModel())) { + // status + List<Status> statusChoices; + if (ticket.isClosed()) { + statusChoices = Arrays.asList(ticket.status, Status.Open); + } else if (ticket.isProposal()) { + statusChoices = Arrays.asList(TicketModel.Status.proposalWorkflow); + } else if (ticket.isBug()) { + statusChoices = Arrays.asList(TicketModel.Status.bugWorkflow); + } else { + statusChoices = Arrays.asList(TicketModel.Status.requestWorkflow); + } + Fragment status = new Fragment("status", "statusFragment", this); + status.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices)); + form.add(status); + + if (currentUser.canAdmin(ticket, getRepositoryModel())) { // responsible Set<String> userlist = new TreeSet<String>(ticket.getParticipants()); @@ -262,6 +285,13 @@ break; } } + if (milestoneModel.getObject() == null && !StringUtils.isEmpty(ticket.milestone)) { + // ensure that this unrecognized milestone is listed + // so that we get the <nil> selection. + TicketMilestone tms = new TicketMilestone(ticket.milestone); + milestones.add(tms); + milestoneModel.setObject(tms); + } if (!milestones.isEmpty()) { milestones.add(new TicketMilestone(NIL)); } @@ -279,20 +309,18 @@ branches.add(Repository.shortenRefName(branch)); } } - branches.remove(Repository.shortenRefName(getRepositoryModel().HEAD)); - branches.add(0, Repository.shortenRefName(getRepositoryModel().HEAD)); + branches.remove(Repository.shortenRefName(getRepositoryModel().mergeTo)); + branches.add(0, Repository.shortenRefName(getRepositoryModel().mergeTo)); 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 can not admin this ticket 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("update")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; -- Gitblit v1.9.1