87: Add support for split project confirmation page
This commit is contained in:
parent
f33956068d
commit
739bf1c0bd
view/src/main/java/se/su/dsv/scipro
@ -294,6 +294,7 @@ public class SciProApplication extends LifecycleManagedWebApplication {
|
|||||||
mountPage("admin/maintenance", SystemMaintenancePage.class);
|
mountPage("admin/maintenance", SystemMaintenancePage.class);
|
||||||
mountPage("admin/project", ProjectManagementPage.class);
|
mountPage("admin/project", ProjectManagementPage.class);
|
||||||
mountPage("admin/project/create", AdminCreateProjectPage.class);
|
mountPage("admin/project/create", AdminCreateProjectPage.class);
|
||||||
|
mountPage("admin/project/split", AdminSplitProjectPage.class);
|
||||||
mountPage("admin/project/survey", AdminSurveyPage.class);
|
mountPage("admin/project/survey", AdminSurveyPage.class);
|
||||||
mountPage("admin/project/reviewer", AdminAssignReviewerPage.class);
|
mountPage("admin/project/reviewer", AdminAssignReviewerPage.class);
|
||||||
mountPage("admin/project/reviewer/capacity", AdminReviewerCapacityManagementPage.class);
|
mountPage("admin/project/reviewer/capacity", AdminReviewerCapacityManagementPage.class);
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org" lang="en">
|
||||||
|
<body>
|
||||||
|
<wicket:extend>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5">
|
||||||
|
<h4 wicket:id="projectTitle"></h4>
|
||||||
|
|
||||||
|
<p wicket:id="errorInfo"></p>
|
||||||
|
|
||||||
|
<form class="form-horizontal" wicket:id="splitProjectForm">
|
||||||
|
<p>This project will be split between following authors:</p>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<ul wicket:id="authorList">
|
||||||
|
<li wicket:id="author"></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-success" type="submit">Split Project</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<a class="btn btn-success" wicket:id="cancelLink">Cancel</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</wicket:extend>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,75 @@
|
|||||||
|
package se.su.dsv.scipro.admin.pages;
|
||||||
|
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
import org.apache.wicket.RestartResponseException;
|
||||||
|
import org.apache.wicket.markup.html.form.Form;
|
||||||
|
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||||
|
import org.apache.wicket.markup.html.list.ListItem;
|
||||||
|
import org.apache.wicket.markup.html.list.ListView;
|
||||||
|
import org.apache.wicket.model.IModel;
|
||||||
|
import org.apache.wicket.model.Model;
|
||||||
|
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||||
|
import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightAdminProjectManagement;
|
||||||
|
import se.su.dsv.scipro.data.DetachableServiceModel;
|
||||||
|
import se.su.dsv.scipro.project.Project;
|
||||||
|
import se.su.dsv.scipro.project.ProjectService;
|
||||||
|
import se.su.dsv.scipro.security.auth.Authorization;
|
||||||
|
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||||
|
import se.su.dsv.scipro.system.User;
|
||||||
|
import se.su.dsv.scipro.util.PageParameterKeys;
|
||||||
|
|
||||||
|
import org.apache.wicket.markup.html.basic.Label;
|
||||||
|
import org.apache.wicket.markup.html.link.AbstractLink;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@Authorization(authorizedRoles = { Roles.SYSADMIN })
|
||||||
|
public class AdminSplitProjectPage extends AbstractAdminProjectPage implements MenuHighlightAdminProjectManagement {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ProjectService projectService;
|
||||||
|
|
||||||
|
public AdminSplitProjectPage(PageParameters pp) {
|
||||||
|
final long id = pp.get(PageParameterKeys.MAP.get(Project.class)).toLong(0);
|
||||||
|
final Project project = projectService.findOne(id);
|
||||||
|
if (project == null) {
|
||||||
|
throw new RestartResponseException(AdminCreateProjectPage.class);
|
||||||
|
}
|
||||||
|
DetachableServiceModel<Project> dsModel = new DetachableServiceModel<>(projectService, project);
|
||||||
|
|
||||||
|
add(new Label("projectTitle", dsModel.map(Project::getTitle)));
|
||||||
|
|
||||||
|
add(new Label("errorInfo", Model.of("error Info!!")) {
|
||||||
|
@Override
|
||||||
|
protected void onConfigure() {
|
||||||
|
super.onConfigure();
|
||||||
|
setVisibilityAllowed(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
add(new SplitProjectForm("splitProjectForm", dsModel));
|
||||||
|
|
||||||
|
add(new BookmarkablePageLink<Void>("cancelLink", ProjectManagementPage.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SplitProjectForm extends Form<Project> {
|
||||||
|
public SplitProjectForm(String id, final IModel<Project> model) {
|
||||||
|
super(id, model);
|
||||||
|
|
||||||
|
add(new ListView<>("authorList", model.map(Project::getProjectParticipants).map(ArrayList::new)) {
|
||||||
|
@Override
|
||||||
|
protected void populateItem(ListItem<User> item) {
|
||||||
|
item.add(new Label("author", item.getModel().map(User::getFullName)));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSubmit() {
|
||||||
|
Long projectId = getModel().getObject().getId();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,10 +7,12 @@ import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
|||||||
import org.apache.wicket.markup.html.panel.Panel;
|
import org.apache.wicket.markup.html.panel.Panel;
|
||||||
import org.apache.wicket.model.IModel;
|
import org.apache.wicket.model.IModel;
|
||||||
import org.apache.wicket.model.Model;
|
import org.apache.wicket.model.Model;
|
||||||
|
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||||
import se.su.dsv.scipro.project.Project;
|
import se.su.dsv.scipro.project.Project;
|
||||||
import se.su.dsv.scipro.project.ProjectStatus;
|
import se.su.dsv.scipro.project.ProjectStatus;
|
||||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||||
import se.su.dsv.scipro.session.SciProSession;
|
import se.su.dsv.scipro.session.SciProSession;
|
||||||
|
import se.su.dsv.scipro.util.PageParameterKeys;
|
||||||
|
|
||||||
public class AdminSplitProjectPanel extends Panel {
|
public class AdminSplitProjectPanel extends Panel {
|
||||||
private enum SplittableStatus {
|
private enum SplittableStatus {
|
||||||
@ -23,7 +25,10 @@ public class AdminSplitProjectPanel extends Panel {
|
|||||||
Project project = projectModel.getObject();
|
Project project = projectModel.getObject();
|
||||||
SplittableStatus splittableStatus = getSplitStatus(project);
|
SplittableStatus splittableStatus = getSplitStatus(project);
|
||||||
|
|
||||||
AbstractLink splitProjectLink = new BookmarkablePageLink<Void>("splitProjectLink", AdminCreateProjectPage.class) {
|
final PageParameters pp = new PageParameters();
|
||||||
|
pp.set(PageParameterKeys.MAP.get(Project.class), project.getId());
|
||||||
|
|
||||||
|
AbstractLink splitProjectLink = new BookmarkablePageLink<Void>("splitProjectLink", AdminSplitProjectPage.class, pp) {
|
||||||
@Override
|
@Override
|
||||||
protected void onConfigure() {
|
protected void onConfigure() {
|
||||||
super.onConfigure();
|
super.onConfigure();
|
||||||
@ -37,6 +42,7 @@ public class AdminSplitProjectPanel extends Panel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
add(splitProjectLink);
|
add(splitProjectLink);
|
||||||
|
|
||||||
if (splittableStatus == SplittableStatus.NOT_TWO_PARTICIPANTS) {
|
if (splittableStatus == SplittableStatus.NOT_TWO_PARTICIPANTS) {
|
||||||
|
@ -1 +1 @@
|
|||||||
splitButton = Split ProjectX
|
splitButton = Split Project
|
Loading…
x
Reference in New Issue
Block a user