Package com.gitblit.wicket.pages

Source Code of com.gitblit.wicket.pages.NewMilestonePage

/*
* Copyright 2014 gitblit.com.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.wicket.pages;

import java.util.Date;

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.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
import com.gitblit.tickets.TicketMilestone;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
import com.gitblit.wicket.GitBlitWebSession;
import com.gitblit.wicket.WicketUtils;

/**
* Page for creating a new milestone.
*
* @author James Moger
*
*/
public class NewMilestonePage extends RepositoryPage {

  private IModel<String> nameModel;

  private IModel<Date> dueModel;

  public NewMilestonePage(PageParameters params) {
    super(params);

    RepositoryModel model = getRepositoryModel();
    if (!app().tickets().isAcceptingTicketUpdates(model)) {
      // ticket service is read-only
      throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName));
    }

    UserModel currentUser = GitBlitWebSession.get().getUser();
    if (currentUser == null) {
      currentUser = UserModel.ANONYMOUS;
    }

    if (!currentUser.isAuthenticated || !currentUser.canAdmin(model)) {
      // administration prohibited
      throw new RestartResponseException(TicketsPage.class, WicketUtils.newOpenTicketsParameter(repositoryName));
    }

    setStatelessHint(false);
    setOutputMarkupId(true);

    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 DateTextField("due", dueModel, "yyyy-MM-dd"));
    form.add(new Label("dueFormat", "yyyy-MM-dd"));

    form.add(new AjaxButton("create") {

      private static final long serialVersionUID = 1L;

      @Override
      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;
        }

        Date due = dueModel.getObject();

        UserModel currentUser = GitBlitWebSession.get().getUser();
        String createdBy = currentUser.username;

        milestone = app().tickets().createMilestone(getRepositoryModel(), name, createdBy);
        if (milestone != null) {
          milestone.due = due;
          app().tickets().updateMilestone(getRepositoryModel(), milestone, createdBy);
          redirectTo(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.newOpenTicketsParameter(repositoryName));
      }
    };
    cancel.setDefaultFormProcessing(false);
    form.add(cancel);

  }

  @Override
  protected String getPageName() {
    return getString("gb.newMilestone");
  }

  @Override
  protected Class<? extends BasePage> getRepoNavPageClass() {
    return TicketsPage.class;
  }
}
TOP

Related Classes of com.gitblit.wicket.pages.NewMilestonePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.