From c2188a840bc4153ae92112b04b2e06a90d3944aa Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Wed, 27 Apr 2016 18:58:06 -0400 Subject: [PATCH] Ticket Reference handling #1048 --- src/main/java/com/gitblit/wicket/pages/NewMilestonePage.java | 48 ++++++++++++++++++++++++++++++------------------ 1 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/NewMilestonePage.java b/src/main/java/com/gitblit/wicket/pages/NewMilestonePage.java index 4c39378..2250f38 100644 --- a/src/main/java/com/gitblit/wicket/pages/NewMilestonePage.java +++ b/src/main/java/com/gitblit/wicket/pages/NewMilestonePage.java @@ -19,7 +19,9 @@ import org.apache.wicket.PageParameters; import org.apache.wicket.RestartResponseException; -import org.apache.wicket.extensions.markup.html.form.DateTextField; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.form.AjaxButton; +import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; @@ -32,6 +34,7 @@ import com.gitblit.utils.StringUtils; import com.gitblit.utils.TimeUtils; import com.gitblit.wicket.GitBlitWebSession; +import com.gitblit.wicket.Html5DateField; import com.gitblit.wicket.WicketUtils; /** @@ -52,7 +55,7 @@ RepositoryModel model = getRepositoryModel(); if (!app().tickets().isAcceptingTicketUpdates(model)) { // ticket service is read-only - throw new RestartResponseException(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); + throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } UserModel currentUser = GitBlitWebSession.get().getUser(); @@ -62,21 +65,38 @@ if (!currentUser.isAuthenticated || !currentUser.canAdmin(model)) { // administration prohibited - throw new RestartResponseException(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); + throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } setStatelessHint(false); setOutputMarkupId(true); - Form<Void> form = new Form<Void>("editForm") { + Form<Void> form = new Form<Void>("editForm"); + add(form); + + nameModel = Model.of(""); + dueModel = Model.of(new Date(System.currentTimeMillis() + TimeUtils.ONEDAY)); + + form.add(new TextField<String>("name", nameModel)); + form.add(new Html5DateField("due", dueModel, "yyyy-MM-dd")); + form.add(new Label("dueFormat", "yyyy-MM-dd")); + addBottomScriptInline("{var e=document.createElement('input');e.type='date';if(e.type=='date'){$('[name=\"due\"]~.help-inline').hide()}}"); + addBottomScript("scripts/wicketHtml5Patch.js"); + form.add(new AjaxButton("create") { private static final long serialVersionUID = 1L; @Override - protected void onSubmit() { - + protected void onSubmit(AjaxRequestTarget target, Form<?> form) { String name = nameModel.getObject(); if (StringUtils.isEmpty(name)) { + // invalid name + return; + } + + TicketMilestone milestone = app().tickets().getMilestone(getRepositoryModel(), name); + if (milestone != null) { + // milestone already exists return; } @@ -85,31 +105,23 @@ UserModel currentUser = GitBlitWebSession.get().getUser(); String createdBy = currentUser.username; - TicketMilestone milestone = app().tickets().createMilestone(getRepositoryModel(), name, createdBy); + milestone = app().tickets().createMilestone(getRepositoryModel(), name, createdBy); if (milestone != null) { milestone.due = due; app().tickets().updateMilestone(getRepositoryModel(), milestone, createdBy); - throw new RestartResponseException(TicketsPage.class, WicketUtils.newRepositoryParameter(getRepositoryModel().name)); + redirectTo(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } else { // TODO error } } - }; - add(form); + }); - nameModel = Model.of(""); - dueModel = Model.of(new Date(System.currentTimeMillis() + TimeUtils.ONEDAY)); - - form.add(new TextField<String>("name", nameModel)); - form.add(new DateTextField("due", dueModel, "yyyy-MM-dd")); - - form.add(new Button("create")); Button cancel = new Button("cancel") { private static final long serialVersionUID = 1L; @Override public void onSubmit() { - setResponsePage(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)); + setResponsePage(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName)); } }; cancel.setDefaultFormProcessing(false); -- Gitblit v1.9.1