1.1 --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Fri Oct 23 12:38:20 2020 +0200 1.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Fri Oct 23 13:29:33 2020 +0200 1.3 @@ -422,16 +422,39 @@ 1.4 1.5 private void configureIssueEditor(IssueEditView viewModel, Issue issue, DataAccessObjects dao) throws SQLException { 1.6 final var project = viewModel.getProjectInfo().getProject(); 1.7 - issue.setProject(project); 1.8 + issue.setProject(project); // automatically set current project for new issues 1.9 viewModel.setIssue(issue); 1.10 viewModel.configureVersionSelectors(viewModel.getProjectInfo().getVersions()); 1.11 viewModel.setUsers(dao.getUserDao().list()); 1.12 viewModel.setComponents(dao.getComponentDao().list(project)); 1.13 - if (issue.getId() >= 0) { 1.14 - viewModel.setComments(dao.getIssueDao().listComments(issue)); 1.15 - } 1.16 } 1.17 1.18 + @RequestMapping(requestPath = "$project/issues/$issue/view", method = HttpMethod.GET) 1.19 + public ResponseType viewIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException { 1.20 + final var viewModel = new IssueDetailView(); 1.21 + populate(viewModel, pathParameters, dao); 1.22 + 1.23 + final var projectInfo = viewModel.getProjectInfo(); 1.24 + if (projectInfo == null) { 1.25 + resp.sendError(HttpServletResponse.SC_NOT_FOUND); 1.26 + return ResponseType.NONE; 1.27 + } 1.28 + 1.29 + final var issueDao = dao.getIssueDao(); 1.30 + final var issue = issueDao.find(Functions.parseIntOrZero(pathParameters.get("issue"))); 1.31 + if (issue == null) { 1.32 + resp.sendError(HttpServletResponse.SC_NOT_FOUND); 1.33 + return ResponseType.NONE; 1.34 + } 1.35 + 1.36 + issueDao.joinVersionInformation(issue); 1.37 + viewModel.setIssue(issue); 1.38 + viewModel.setComments(issueDao.listComments(issue)); 1.39 + 1.40 + return forwardView(req, viewModel, "issue-view"); 1.41 + } 1.42 + 1.43 + // TODO: why should the issue editor be child of $project? 1.44 @RequestMapping(requestPath = "$project/issues/$issue/edit", method = HttpMethod.GET) 1.45 public ResponseType editIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException { 1.46 final var viewModel = new IssueEditView(); 1.47 @@ -522,8 +545,8 @@ 1.48 1.49 dao.getIssueDao().saveOrUpdate(issue, issue.getProject()); 1.50 1.51 - // TODO: fix issue #14 1.52 - setRedirectLocation(req, "./projects/" + issue.getProject().getNode() + "/all-components/all-versions/issues/"); 1.53 + // TODO: fix redirect location 1.54 + setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view"); 1.55 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); 1.56 1.57 return ResponseType.HTML; 1.58 @@ -561,8 +584,8 @@ 1.59 1.60 dao.getIssueDao().saveComment(issueComment); 1.61 1.62 - // TODO: fix redirect location (e.g. after fixing #24) 1.63 - setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/edit"); 1.64 + // TODO: fix redirect location 1.65 + setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view"); 1.66 setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL); 1.67 1.68 return ResponseType.HTML;