Index: tool_adapters/moodle/lams_tool_mdlforum/src/java/org/lamsfoundation/lams/tool/mdfrum/web/actions/LearningAction.java =================================================================== diff -u -r7183d9542e1ed9d943ea00c26e85c87a121c03da -rac87560700bfd19a5d51e4c1a196fe5c005ab217 --- tool_adapters/moodle/lams_tool_mdlforum/src/java/org/lamsfoundation/lams/tool/mdfrum/web/actions/LearningAction.java (.../LearningAction.java) (revision 7183d9542e1ed9d943ea00c26e85c87a121c03da) +++ tool_adapters/moodle/lams_tool_mdlforum/src/java/org/lamsfoundation/lams/tool/mdfrum/web/actions/LearningAction.java (.../LearningAction.java) (revision ac87560700bfd19a5d51e4c1a196fe5c005ab217) @@ -67,143 +67,158 @@ */ public class LearningAction extends LamsDispatchAction { - private static Logger log = Logger.getLogger(LearningAction.class); + private static Logger log = Logger.getLogger(LearningAction.class); - private static final boolean MODE_OPTIONAL = false; + private static final boolean MODE_OPTIONAL = false; - private static final String TOOL_APP_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" - + MdlForumConstants.TOOL_SIGNATURE + "/"; + private static final String TOOL_APP_URL = Configuration + .get(ConfigurationKeys.SERVER_URL) + + "/tool/" + MdlForumConstants.TOOL_SIGNATURE + "/"; - //public static final String RELATIVE_LEARNER_URL = "mod/Forum/view.php?"; - - public static final String RELATIVE_LEARNER_URL = "course/lamsframes.php?"; - public static final String MOODLE_VIEW_URL = "mod/Forum/view.php"; - public static final String RELATIVE_TEACHER_URL = "mod/Forum/view.php?"; + // public static final String RELATIVE_LEARNER_URL = "mod/Forum/view.php?"; - private IMdlForumService mdlForumService; + public static final String RELATIVE_LEARNER_URL = "course/lamsframes.php?"; + public static final String MOODLE_VIEW_URL = "mod/Forum/view.php"; + public static final String RELATIVE_TEACHER_URL = "mod/Forum/view.php?"; - public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws Exception { + private IMdlForumService mdlForumService; - Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + public ActionForward unspecified(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) + throws Exception { - // set up mdlForumService - if (mdlForumService == null) { - mdlForumService = MdlForumServiceProxy.getMdlForumService(this.getServlet().getServletContext()); - } + Long toolSessionID = WebUtil.readLongParam(request, + AttributeNames.PARAM_TOOL_SESSION_ID); - // Retrieve the session and content. - ToolAccessMode mode = WebUtil.readToolAccessModeParam(request,AttributeNames.PARAM_MODE, false); - MdlForumSession mdlForumSession = mdlForumService.getSessionBySessionId(toolSessionID); - if (mdlForumSession == null) { - throw new MdlForumException("Cannot retreive session with toolSessionID: " + toolSessionID); - } + // set up mdlForumService + if (mdlForumService == null) { + mdlForumService = MdlForumServiceProxy.getMdlForumService(this + .getServlet().getServletContext()); + } - MdlForum mdlForum = mdlForumSession.getMdlForum(); + // Retrieve the session and content. + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, + AttributeNames.PARAM_MODE, false); + MdlForumSession mdlForumSession = mdlForumService + .getSessionBySessionId(toolSessionID); + if (mdlForumSession == null) { + throw new MdlForumException( + "Cannot retreive session with toolSessionID: " + + toolSessionID); + } - // check defineLater - if (mdlForum.isDefineLater()) { - return mapping.findForward("defineLater"); - } + MdlForum mdlForum = mdlForumSession.getMdlForum(); + MdlForumUser mdlForumUser = getCurrentUser(toolSessionID); + + // check defineLater + if (mdlForum.isDefineLater()) { + return mapping.findForward("defineLater"); + } - MdlForumDTO mdlForumDTO = new MdlForumDTO(); - request.setAttribute("mdlForumDTO", mdlForumDTO); + MdlForumDTO mdlForumDTO = new MdlForumDTO(); + request.setAttribute("mdlForumDTO", mdlForumDTO); - // Set the content in use flag. - if (!mdlForum.isContentInUse()) { - mdlForum.setContentInUse(new Boolean(true)); - mdlForumService.saveOrUpdateMdlForum(mdlForum); - } + // Set the content in use flag. + if (!mdlForum.isContentInUse()) { + mdlForum.setContentInUse(new Boolean(true)); + mdlForumService.saveOrUpdateMdlForum(mdlForum); + } - // check runOffline - if (mdlForum.isRunOffline()) { - return mapping.findForward("runOffline"); - } + // check runOffline + if (mdlForum.isRunOffline()) { + return mapping.findForward("runOffline"); + } - if (mdlForum.getExtToolContentId() != null) { - try { - String responseUrl = mdlForumService.getConfigItem(MdlForumConfigItem.KEY_EXTERNAL_SERVER_URL) - .getConfigValue(); - - if(mode.equals(ToolAccessMode.TEACHER)) - { - responseUrl += RELATIVE_TEACHER_URL; - } - else if (mode.equals(ToolAccessMode.LEARNER)) - { - responseUrl += RELATIVE_LEARNER_URL; - } + if (mdlForum.getExtToolContentId() != null) { + try { + String responseUrl = mdlForumService.getConfigItem( + MdlForumConfigItem.KEY_EXTERNAL_SERVER_URL) + .getConfigValue(); - String returnUrl = TOOL_APP_URL + "learning.do?" + AttributeNames.PARAM_TOOL_SESSION_ID + "=" - + toolSessionID.toString() + "&dispatch=finishActivity"; - - - - String encodedMoodleRelativePath = URLEncoder.encode(MOODLE_VIEW_URL, "UTF8"); + if (mode.equals(ToolAccessMode.TEACHER)) { + responseUrl += RELATIVE_TEACHER_URL; + + } else if (mode.equals(ToolAccessMode.LEARNER)|| mode.equals(ToolAccessMode.AUTHOR)) + { + responseUrl += RELATIVE_LEARNER_URL; + } - returnUrl = URLEncoder.encode(returnUrl, "UTF8"); - + String returnUrl = TOOL_APP_URL + "learning.do?" + + AttributeNames.PARAM_TOOL_SESSION_ID + "=" + + toolSessionID.toString() + "&dispatch=finishActivity"; - responseUrl += "&id=" + mdlForumSession.getExtSessionId() + "&returnUrl=" + returnUrl - + "&dest=" + encodedMoodleRelativePath + "&is_learner=1"; - + String encodedMoodleRelativePath = URLEncoder.encode( + MOODLE_VIEW_URL, "UTF8"); - log.debug("Redirecting for mdl Forum learner: " + responseUrl); - response.sendRedirect(responseUrl); - } catch (Exception e) { - log.error("Could not redirect to mdl Forum authoring", e); - } - } else { - throw new MdlForumException("External content id null for learner"); + returnUrl = URLEncoder.encode(returnUrl, "UTF8"); + + responseUrl += "&id=" + mdlForumSession.getExtSessionId() + + "&returnUrl=" + returnUrl + "&dest=" + + encodedMoodleRelativePath + "&is_learner=1" + + "&isFinished=" + mdlForumUser.isFinishedActivity(); + + log.debug("Redirecting for mdl Forum learner: " + responseUrl); + response.sendRedirect(responseUrl); + } catch (Exception e) { + log.error("Could not redirect to mdl Forum authoring", e); + } + } else { + throw new MdlForumException("External content id null for learner"); + } + return null; } - return null; - } - private MdlForumUser getCurrentUser(Long toolSessionId) { - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + private MdlForumUser getCurrentUser(Long toolSessionId) { + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute( + AttributeNames.USER); - // attempt to retrieve user using userId and toolSessionId - MdlForumUser mdlForumUser = mdlForumService.getUserByUserIdAndSessionId(new Long(user.getUserID().intValue()), - toolSessionId); + // attempt to retrieve user using userId and toolSessionId + MdlForumUser mdlForumUser = mdlForumService + .getUserByUserIdAndSessionId(new Long(user.getUserID() + .intValue()), toolSessionId); - if (mdlForumUser == null) { - MdlForumSession mdlForumSession = mdlForumService.getSessionBySessionId(toolSessionId); - mdlForumUser = mdlForumService.createMdlForumUser(user, mdlForumSession); + if (mdlForumUser == null) { + MdlForumSession mdlForumSession = mdlForumService + .getSessionBySessionId(toolSessionId); + mdlForumUser = mdlForumService.createMdlForumUser(user, + mdlForumSession); + } + + return mdlForumUser; } - return mdlForumUser; - } + public ActionForward finishActivity(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) { - public ActionForward finishActivity(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { + Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); - Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); + MdlForumUser mdlForumUser = getCurrentUser(toolSessionID); - MdlForumUser mdlForumUser = getCurrentUser(toolSessionID); + if (mdlForumUser != null) { + mdlForumUser.setFinishedActivity(true); + mdlForumService.saveOrUpdateMdlForumUser(mdlForumUser); + } else { + log.error("finishActivity(): couldn't find MdlForumUser with id: " + + mdlForumUser.getUserId() + "and toolSessionID: " + + toolSessionID); + } - if (mdlForumUser != null) { - mdlForumUser.setFinishedActivity(true); - mdlForumService.saveOrUpdateMdlForumUser(mdlForumUser); - } else { - log.error("finishActivity(): couldn't find MdlForumUser with id: " + mdlForumUser.getUserId() - + "and toolSessionID: " + toolSessionID); - } + ToolSessionManager sessionMgrService = MdlForumServiceProxy + .getMdlForumSessionManager(getServlet().getServletContext()); - ToolSessionManager sessionMgrService = MdlForumServiceProxy.getMdlForumSessionManager(getServlet() - .getServletContext()); + String nextActivityUrl; + try { + nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, + mdlForumUser.getUserId()); + response.sendRedirect(nextActivityUrl); + } catch (DataMissingException e) { + throw new MdlForumException(e); + } catch (ToolException e) { + throw new MdlForumException(e); + } catch (IOException e) { + throw new MdlForumException(e); + } - String nextActivityUrl; - try { - nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, mdlForumUser.getUserId()); - response.sendRedirect(nextActivityUrl); - } catch (DataMissingException e) { - throw new MdlForumException(e); - } catch (ToolException e) { - throw new MdlForumException(e); - } catch (IOException e) { - throw new MdlForumException(e); + return null; // TODO need to return proper page. } - - return null; // TODO need to return proper page. - } }