From 2e6e992a678d2504e1f00e6c6dabf3e7c090d2e3 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 22 May 2014 19:38:52 -0400
Subject: [PATCH] Documentation

---
 src/main/java/com/gitblit/wicket/pages/EditMilestonePage.java |  132 +++++++++++++++++++++++++++-----------------
 1 files changed, 81 insertions(+), 51 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/pages/EditMilestonePage.java b/src/main/java/com/gitblit/wicket/pages/EditMilestonePage.java
index 4407788..4ed77d8 100644
--- a/src/main/java/com/gitblit/wicket/pages/EditMilestonePage.java
+++ b/src/main/java/com/gitblit/wicket/pages/EditMilestonePage.java
@@ -15,28 +15,35 @@
  */
 package com.gitblit.wicket.pages;
 
+import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.extensions.markup.html.form.DateTextField;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.parboiled.common.StringUtils;
 
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.TicketModel;
 import com.gitblit.models.TicketModel.Status;
 import com.gitblit.models.UserModel;
 import com.gitblit.tickets.TicketMilestone;
+import com.gitblit.utils.StringUtils;
 import com.gitblit.wicket.GitBlitWebSession;
 import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.panels.BasePanel.JavascriptEventConfirmation;
 
 /**
  * Page for creating a new milestone.
@@ -47,13 +54,13 @@
 public class EditMilestonePage extends RepositoryPage {
 
 	private final String oldName;
-	
+
 	private IModel<String> nameModel;
 
 	private IModel<Date> dueModel;
-	
+
 	private IModel<Status> statusModel;
-	
+
 	private IModel<Boolean> notificationModel;
 
 	public EditMilestonePage(PageParameters params) {
@@ -62,9 +69,9 @@
 		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();
 		if (currentUser == null) {
 			currentUser = UserModel.ANONYMOUS;
@@ -72,86 +79,109 @@
 
 		if (!currentUser.isAuthenticated || !currentUser.canAdmin(model)) {
 			// administration prohibited
-			throw new RestartResponseException(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName));
+			throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName));
 		}
-		
+
 		oldName = WicketUtils.getObject(params);
 		if (StringUtils.isEmpty(oldName)) {
 			// milestone not specified
-			throw new RestartResponseException(TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName));
+			throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName));
 		}
-		
+
 		TicketMilestone tm = app().tickets().getMilestone(getRepositoryModel(), oldName);
 		if (tm == null) {
 			// milestone does not exist
-			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") {
-
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected void onSubmit() {
-				
-				String name = nameModel.getObject();
-				if (StringUtils.isEmpty(name)) {
-					return;
-				}
-				
-				Date due = dueModel.getObject();
-				Status status = statusModel.getObject();
-				boolean rename = !name.equals(oldName);
-				boolean notify = notificationModel.getObject();
-				
-				UserModel currentUser = GitBlitWebSession.get().getUser();
-				String createdBy = currentUser.username;
-				
-				TicketMilestone tm = app().tickets().getMilestone(getRepositoryModel(), oldName);
-				tm.setName(name);
-				tm.setDue(due);
-				tm.status = status;
-				
-				boolean success = true;
-				if (rename) {
-					success = app().tickets().renameMilestone(getRepositoryModel(), oldName, name, createdBy, notify);
-				}
-				
-				if (success && app().tickets().updateMilestone(getRepositoryModel(), tm, createdBy)) {
-					setResponsePage(TicketsPage.class, WicketUtils.newRepositoryParameter(getRepositoryModel().name));
-				} else {
-					// TODO error
-				}
-			}
-		};
+		Form<Void> form = new Form<Void>("editForm");
 		add(form);
 
 		nameModel = Model.of(tm.name);
 		dueModel = Model.of(tm.due);
 		statusModel = Model.of(tm.status);
 		notificationModel = Model.of(true);
-		
+
 		form.add(new TextField<String>("name", nameModel));
 		form.add(new DateTextField("due", dueModel, "yyyy-MM-dd"));
+		form.add(new Label("dueFormat", "yyyy-MM-dd"));
+		form.add(new CheckBox("notify", notificationModel));
 
 		List<Status> statusChoices = Arrays.asList(Status.Open, Status.Closed);
 		form.add(new DropDownChoice<TicketModel.Status>("status", statusModel, statusChoices));
 
-		form.add(new Button("save"));
+		form.add(new AjaxButton("save") {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				String name = nameModel.getObject();
+				if (StringUtils.isEmpty(name)) {
+					return;
+				}
+
+				Date due = dueModel.getObject();
+				Status status = statusModel.getObject();
+				boolean rename = !name.equals(oldName);
+				boolean notify = notificationModel.getObject();
+
+				UserModel currentUser = GitBlitWebSession.get().getUser();
+				String createdBy = currentUser.username;
+
+				TicketMilestone tm = app().tickets().getMilestone(getRepositoryModel(), oldName);
+				tm.setName(name);
+				tm.setDue(due);
+				tm.status = status;
+
+				boolean success = true;
+				if (rename) {
+					success = app().tickets().renameMilestone(getRepositoryModel(), oldName, name, createdBy, notify);
+				}
+
+				if (success && app().tickets().updateMilestone(getRepositoryModel(), tm, createdBy)) {
+					setResponsePage(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName));
+				} else {
+					// TODO error
+				}
+			}
+		});
 		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);
 		form.add(cancel);
 
+		Link<Void> delete = new Link<Void>("delete") {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClick() {
+				UserModel currentUser = GitBlitWebSession.get().getUser();
+				String createdBy = currentUser.username;
+				boolean notify = notificationModel.getObject();
+
+				if (app().tickets().deleteMilestone(getRepositoryModel(), oldName, createdBy, notify)) {
+					setResponsePage(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName));
+				} else {
+					error(MessageFormat.format(getString("gb.milestoneDeleteFailed"), oldName));
+				}
+			}
+		};
+
+		delete.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
+			getString("gb.deleteMilestone"), oldName)));
+
+		form.add(delete);
 	}
 
 	@Override

--
Gitblit v1.9.1