Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelSaveController.java =================================================================== diff -u -rec30ad2cd8a7b048f296533bcb70fdafd80a3be6 -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelSaveController.java (.../ImportExcelSaveController.java) (revision ec30ad2cd8a7b048f296533bcb70fdafd80a3be6) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ImportExcelSaveController.java (.../ImportExcelSaveController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -68,7 +68,7 @@ // validation if (file == null || file.getSize() <= 0) { - return "redirect:/importexcel.do"; + return "forward:/importexcel.do"; } String sessionId = SessionManager.getSession().getId(); @@ -77,7 +77,7 @@ if (importService.getNumRows(file) < IImportService.THRESHOLD) { List results = importService.parseSpreadsheet(file, sessionId); SessionManager.getSession(sessionId).setAttribute(IImportService.IMPORT_RESULTS, results); - return "redirect:/importuserresult.do"; + return "forward:/importuserresult.do"; } else { Thread t = new Thread(new ImportExcelThread(sessionId)); t.start(); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java =================================================================== diff -u -rec30ad2cd8a7b048f296533bcb70fdafd80a3be6 -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java (.../LoginSaveController.java) (revision ec30ad2cd8a7b048f296533bcb70fdafd80a3be6) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LoginSaveController.java (.../LoginSaveController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -38,7 +38,6 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; /** * Use DispatchAction for future extension convenience, e.g. add preview feature @@ -54,11 +53,6 @@ @RequestMapping("/loginsave") public String save(@ModelAttribute LoginMaintainForm loginMaintainForm, HttpServletRequest request, HttpServletResponse response) throws Exception { - - if (request.getAttribute("CANCEL") != null) { - return "redirect:/sysadminstart.do"; - } - BufferedWriter bWriter = null; try { OutputStreamWriter ow = new OutputStreamWriter( Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrgSaveController.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrgSaveController.java (.../OrgSaveController.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrgSaveController.java (.../OrgSaveController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -139,7 +139,7 @@ return "forward:/orgmanage.do"; } else { request.setAttribute("errorMap", errorMap); - return "redirect:/organisation/edit.do"; + return "forward:/organisation/edit.do"; } } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ServerSaveController.java =================================================================== diff -u -rc9e22b65129fe7561d7e66f5d6338557b0f3236a -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ServerSaveController.java (.../ServerSaveController.java) (revision c9e22b65129fe7561d7e66f5d6338557b0f3236a) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ServerSaveController.java (.../ServerSaveController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -137,7 +137,7 @@ BeanUtils.copyProperties(map, extServerForm); } service.saveExtServer(map); - return "redirect:/serverlist.do"; + return "forward:/serverlist.do"; } else { request.setAttribute("errorMap", errorMap); return "servermaintain"; Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/TimezoneManagementController.java =================================================================== diff -u -rec30ad2cd8a7b048f296533bcb70fdafd80a3be6 -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/TimezoneManagementController.java (.../TimezoneManagementController.java) (revision ec30ad2cd8a7b048f296533bcb70fdafd80a3be6) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/TimezoneManagementController.java (.../TimezoneManagementController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -91,11 +91,6 @@ @RequestMapping(path = "/save", method = RequestMethod.POST) public String save(@ModelAttribute TimezoneForm timezoneForm, HttpServletRequest request, HttpServletResponse response) throws Exception { - - if (request.getAttribute("CANCEL") != null) { - return "redirect:/sysadminstart.do"; - } - String[] selectedTimezoneIds = timezoneForm.getSelected(); List selectedTimezones = new ArrayList<>(); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ToolContentListController.java =================================================================== diff -u -rec30ad2cd8a7b048f296533bcb70fdafd80a3be6 -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ToolContentListController.java (.../ToolContentListController.java) (revision ec30ad2cd8a7b048f296533bcb70fdafd80a3be6) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ToolContentListController.java (.../ToolContentListController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -206,15 +206,15 @@ Long learningLibraryId = WebUtil.readLongParam(request, "libraryID", false); ILearningDesignService ldService = getLearningDesignService(); ldService.setValid(learningLibraryId, false); - return "redirect:/toolcontentlist/start.do"; + return "forward:/toolcontentlist/start.do"; } @RequestMapping("/enable") public String enableLibrary(HttpServletRequest request) { Long learningLibraryId = WebUtil.readLongParam(request, "libraryID", false); ILearningDesignService ldService = getLearningDesignService(); ldService.setValid(learningLibraryId, true); - return "redirect:/toolcontentlist/start.do"; + return "forward:/toolcontentlist/start.do"; } /** @@ -281,7 +281,7 @@ getLearningDesignService().saveLearningLibraryGroups(groups); - return "redirect:/toolcontentlist/start.do"; + return "forward:/toolcontentlist/start.do"; } private ILearningDesignService getLearningDesignService() { Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java (.../UserController.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserController.java (.../UserController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -343,10 +343,10 @@ logEventService.logEvent(LogEvent.TYPE_USER_ORG_ADMIN, sysadmin != null ? sysadmin.getUserID() : null, userId, null, null, message); if ((orgId == null) || (orgId == 0)) { - return "redirect:../usersearch.do"; + return "forward:../usersearch.do"; } else { request.setAttribute("org", orgId); - return "redirect:../usermanage.do"; + return "forward:../usermanage.do"; } } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java =================================================================== diff -u -rec30ad2cd8a7b048f296533bcb70fdafd80a3be6 -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java (.../ExtServerForm.java) (revision ec30ad2cd8a7b048f296533bcb70fdafd80a3be6) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/ExtServerForm.java (.../ExtServerForm.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -48,6 +48,31 @@ private Integer timeToLiveLoginRequest = 80; + private Boolean learnerPresenceAvailable; + + private Boolean learnerImAvailable; + + private Boolean liveEditEnabled; + + private Boolean enableLessonNotifications; + + /** + * Should Learner start the lesson from the beginning each time he enters it. + * Content is not removed, LessonProgress is deleted, not archived. + */ + private Boolean forceLearnerRestart; + + /** + * Should Learners be allowed to restart the lesson after finishing it. + * Content is not removed, LessonProgress is archived and then deleted. + */ + private Boolean allowLearnerRestart; + + /** + * Should learners be displayed activity gradebook on lesson complete. + */ + private Boolean gradebookOnComplete; + public Integer getSid() { return sid; } @@ -144,4 +169,59 @@ this.timeToLiveLoginRequest = timeToLiveLoginRequest; } + public Boolean getLearnerPresenceAvailable() { + return learnerPresenceAvailable; + } + + public void setLearnerPresenceAvailable(Boolean learnerPresenceAvailable) { + this.learnerPresenceAvailable = learnerPresenceAvailable; + } + + public Boolean getLearnerImAvailable() { + return learnerImAvailable; + } + + public void setLearnerImAvailable(Boolean learnerImAvailable) { + this.learnerImAvailable = learnerImAvailable; + } + + public Boolean getLiveEditEnabled() { + return liveEditEnabled; + } + + public void setLiveEditEnabled(Boolean liveEditEnabled) { + this.liveEditEnabled = liveEditEnabled; + } + + public Boolean getEnableLessonNotifications() { + return enableLessonNotifications; + } + + public void setEnableLessonNotifications(Boolean enableLessonNotifications) { + this.enableLessonNotifications = enableLessonNotifications; + } + + public Boolean getForceLearnerRestart() { + return forceLearnerRestart; + } + + public void setForceLearnerRestart(Boolean forceLearnerRestart) { + this.forceLearnerRestart = forceLearnerRestart; + } + + public Boolean getAllowLearnerRestart() { + return allowLearnerRestart; + } + + public void setAllowLearnerRestart(Boolean allowLearnerRestart) { + this.allowLearnerRestart = allowLearnerRestart; + } + + public Boolean getGradebookOnComplete() { + return gradebookOnComplete; + } + + public void setGradebookOnComplete(Boolean gradebookOnComplete) { + this.gradebookOnComplete = gradebookOnComplete; + } } Index: lams_central/src/java/org/lamsfoundation/lams/web/IndexController.java =================================================================== diff -u -r4e1d370d53087af71b8682b99a59e9ee389d5393 -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_central/src/java/org/lamsfoundation/lams/web/IndexController.java (.../IndexController.java) (revision 4e1d370d53087af71b8682b99a59e9ee389d5393) +++ lams_central/src/java/org/lamsfoundation/lams/web/IndexController.java (.../IndexController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -102,40 +102,40 @@ // check if user is flagged as needing to change their password User loggedInUser = userManagementService.getUserByLogin(request.getRemoteUser()); if (loggedInUser.getChangePassword() != null && loggedInUser.getChangePassword()) { - return "redirect:/password.do"; + return "forward:/password.do"; } // check if user needs to get his shared two-factor authorization secret if (loggedInUser.isTwoFactorAuthenticationEnabled() && loggedInUser.getTwoFactorAuthenticationSecret() == null) { - return "redirect:/twoFactorAuthentication.do"; + return "forward:/twoFactorAuthentication.do"; } // check if user needs to get his shared two-factor authorization secret if (policyService.isPolicyConsentRequiredForUser(loggedInUser.getUserId())) { - return "redirect:/policyConsents.do"; + return "forward:/policyConsents.do"; } User user = userManagementService.getUserByLogin(userDTO.getLogin()); request.setAttribute("portraitUuid", user.getPortraitUuid()); - String redirectParam = WebUtil.readStrParam(request, "redirect", true); + String redirectParam = WebUtil.readStrParam(request, "redirect", true); if (StringUtils.equals(redirectParam, "profile")) { - return "redirect:/profile/view.do"; + return "forward:/profile/view.do"; } else if (StringUtils.equals(redirectParam, "editprofile")) { return "forward:/profile/edit.do"; } else if (StringUtils.equals(redirectParam, "password")) { - String passwordUrl = "redirect:/password.do"; + String passwordUrl = "forward:/password.do"; String redirectUrlParam = WebUtil.readStrParam(request, "redirectURL", true); if (StringUtils.isNotBlank(redirectUrlParam)) { passwordUrl = WebUtil.appendParameterToURL(passwordUrl, "redirectURL", URLEncoder.encode(redirectUrlParam, "UTF-8")); } return passwordUrl; } else if (StringUtils.equals(redirectParam, "portrait")) { - return "redirect:/portrait.do"; + return "forward:/portrait.do"; } else if (StringUtils.equals(redirectParam, "lessons")) { - return "redirect:/profile/lessons.do"; + return "forward:/profile/lessons.do"; } // This test also appears in LoginAsAction Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java =================================================================== diff -u -rd11fc4c9bde6900c905c40030cb0f0c0ef659e9a -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java (.../LoginAsController.java) (revision d11fc4c9bde6900c905c40030cb0f0c0ef659e9a) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginAsController.java (.../LoginAsController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -115,7 +115,7 @@ return "errorpages/errorWithMessage"; } - return "redirect:/admin/usersearch.do"; + return "forward:/admin/usersearch.do"; } private boolean isOnlyLearner(IUserManagementService service, Integer userId) { Index: lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveController.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r8d8232ae7142c30068360a2a41bbcccc065e775b --- lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveController.java (.../PortraitSaveController.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveController.java (.../PortraitSaveController.java) (revision 8d8232ae7142c30068360a2a41bbcccc065e775b) @@ -102,17 +102,15 @@ if (!mediaType.equals("image")) { errorMap.add("file", messageService.getMessage("error.portrait.not.image")); request.setAttribute("errorMap", errorMap); - request.setAttribute("redirect", "portrait"); - return "redirect:/index.do"; + return "forward:/index.do?redirect=portrait"; } // check file exists InputStream is = file.getInputStream(); if (is == null) { errorMap.add("file", messageService.getMessage("error.general.1")); request.setAttribute("errorMap", errorMap); - request.setAttribute("redirect", "portrait"); - return "redirect:/index.do"; + return "forward:/index.do?redirect=portrait"; } // write to content repository @@ -167,8 +165,7 @@ user.setPortraitUuid(originalFileNode.getUuid()); service.saveUser(user); - request.setAttribute("redirect", "profile"); - return "redirect:/index.do"; + return "forward:/index.do?redirect=portrait"; } /** Called from sysadmin to delete an inappropriate portrait */