diff --git a/view/src/main/java/se/su/dsv/scipro/SciProApplication.java b/view/src/main/java/se/su/dsv/scipro/SciProApplication.java index 37f93c29e7..35b9c3b3e0 100755 --- a/view/src/main/java/se/su/dsv/scipro/SciProApplication.java +++ b/view/src/main/java/se/su/dsv/scipro/SciProApplication.java @@ -294,6 +294,7 @@ public class SciProApplication extends LifecycleManagedWebApplication { mountPage("admin/maintenance", SystemMaintenancePage.class); mountPage("admin/project", ProjectManagementPage.class); mountPage("admin/project/create", AdminCreateProjectPage.class); + mountPage("admin/project/split", AdminSplitProjectPage.class); mountPage("admin/project/survey", AdminSurveyPage.class); mountPage("admin/project/reviewer", AdminAssignReviewerPage.class); mountPage("admin/project/reviewer/capacity", AdminReviewerCapacityManagementPage.class); diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPage.html b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPage.html new file mode 100644 index 0000000000..f49fc10ae1 --- /dev/null +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPage.html @@ -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> \ No newline at end of file diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPage.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPage.java new file mode 100644 index 0000000000..bf7aac2f5a --- /dev/null +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPage.java @@ -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(); + + + } + } +} diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java index b8bcaf413b..77811428df 100644 --- a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java @@ -7,10 +7,12 @@ import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.panel.Panel; 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.project.Project; import se.su.dsv.scipro.project.ProjectStatus; import se.su.dsv.scipro.security.auth.roles.Roles; import se.su.dsv.scipro.session.SciProSession; +import se.su.dsv.scipro.util.PageParameterKeys; public class AdminSplitProjectPanel extends Panel { private enum SplittableStatus { @@ -23,7 +25,10 @@ public class AdminSplitProjectPanel extends Panel { Project project = projectModel.getObject(); 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 protected void onConfigure() { super.onConfigure(); @@ -37,6 +42,7 @@ public class AdminSplitProjectPanel extends Panel { } } }; + add(splitProjectLink); if (splittableStatus == SplittableStatus.NOT_TWO_PARTICIPANTS) { diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties index dbea6689ec..2683bf299a 100644 --- a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties @@ -1 +1 @@ -splitButton = Split ProjectX \ No newline at end of file +splitButton = Split Project \ No newline at end of file