Index: lams_bb_integration/RELEASE_NOTES.TXT =================================================================== diff -u -rad68e50114d15d3781bf4b34cd60324492f72579 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/RELEASE_NOTES.TXT (.../RELEASE_NOTES.TXT) (revision ad68e50114d15d3781bf4b34cd60324492f72579) +++ lams_bb_integration/RELEASE_NOTES.TXT (.../RELEASE_NOTES.TXT) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -169,4 +169,8 @@ 1.2.27 Release Fixes ==================== -* LDEV-4494: Avoid cloning and importing the lessons created by old NTU plugin \ No newline at end of file +* LDEV-4494: Avoid cloning and importing the lessons created by old NTU plugin + +1.2.28 Release Fixes +==================== +* LDEV-4653: Parameter to add "Learners can restart the lesson" via integrations Index: lams_bb_integration/WEB-INF/bb-manifest.xml =================================================================== diff -u -rad68e50114d15d3781bf4b34cd60324492f72579 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision ad68e50114d15d3781bf4b34cd60324492f72579) +++ lams_bb_integration/WEB-INF/bb-manifest.xml (.../bb-manifest.xml) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -5,7 +5,7 @@ - + Index: lams_bb_integration/build.xml =================================================================== diff -u -rad68e50114d15d3781bf4b34cd60324492f72579 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/build.xml (.../build.xml) (revision ad68e50114d15d3781bf4b34cd60324492f72579) +++ lams_bb_integration/build.xml (.../build.xml) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -2,7 +2,7 @@ - + Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/LinkToolsServlet.java =================================================================== diff -u -rad68e50114d15d3781bf4b34cd60324492f72579 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/LinkToolsServlet.java (.../LinkToolsServlet.java) (revision ad68e50114d15d3781bf4b34cd60324492f72579) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/LinkToolsServlet.java (.../LinkToolsServlet.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -471,7 +471,7 @@ FormattedText descriptionFormatted = content.getBody(); String description = URLEncoder.encode(descriptionFormatted.getText(), "UTF-8"); final long newLessonId = LamsSecurityUtil.startLesson(teacher, courseIdStr, newLdId, title, - description, false); + description, null, false); // update lesson id content.setLinkRef(Long.toString(newLessonId)); Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/OpenLamsPageServlet.java =================================================================== diff -u -r54843a5ae3288a977cdfa75fd43afc9c67831624 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/OpenLamsPageServlet.java (.../OpenLamsPageServlet.java) (revision 54843a5ae3288a977cdfa75fd43afc9c67831624) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/OpenLamsPageServlet.java (.../OpenLamsPageServlet.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -138,7 +138,7 @@ // start lesson-preview in LAMS and get back the lesson ID User user = ctx.getUser(); - Long lsId = LamsSecurityUtil.startLesson(user, "Previews", ldId, strTitle, "", true); + Long lsId = LamsSecurityUtil.startLesson(user, "Previews", ldId, strTitle, "", null, true); // error checking if (lsId == -1) { response.sendRedirect("lamsServerDown.jsp"); Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/util/BlackboardUtil.java =================================================================== diff -u -rad68e50114d15d3781bf4b34cd60324492f72579 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/util/BlackboardUtil.java (.../BlackboardUtil.java) (revision ad68e50114d15d3781bf4b34cd60324492f72579) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/util/BlackboardUtil.java (.../BlackboardUtil.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -143,6 +143,7 @@ String strIsAvailable = request.getParameter("isAvailable"); String strIsGradecenter = request.getParameter("isGradecenter"); String strIsTracked = request.getParameter("isTracked"); + String strIsAllowLearnerRestart = request.getParameter("isAllowLearnerRestart"); String isDisplayDesignImage = request.getParameter("isDisplayDesignImage"); // Internal Blackboard IDs for the course and parent content item @@ -155,7 +156,8 @@ boolean isAvailable = (strIsAvailable == null || strIsAvailable.equals("true")) ? true : false; // default true boolean isGradecenter = (strIsGradecenter != null && strIsGradecenter.equals("true")) ? true : false; // default false boolean isTracked = (strIsTracked != null && strIsTracked.equals("true")) ? true : false; // default false - + Boolean isAllowLearnerRestart = (strIsAllowLearnerRestart != null && strIsAllowLearnerRestart.equals("true")) ? true : null; // default false + // Set Availability Dates SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -190,6 +192,7 @@ bbContent.setIsAvailable(isAvailable); bbContent.setIsDescribed(isGradecenter);// isDescribed field is used for storing isGradecenter parameter bbContent.setIsTracked(isTracked); + //bbContent.setIsFromCartridge(isAllowLearnerRestart);// isFromCartridge field is used for storing isAllowLearnerRestart parameter bbContent.setAllowGuests(false); bbContent.setContentHandler(LamsPluginUtil.CONTENT_HANDLE); @@ -211,7 +214,7 @@ // Start the Lesson in LAMS (via Webservices) and capture the lesson ID final long lamsLessonIdLong = LamsSecurityUtil.startLesson(user, courseIdStr, ldId, strTitle, strDescription, - false); + isAllowLearnerRestart, false); // error checking if (lamsLessonIdLong == -1) { response.sendRedirect("lamsServerDown.jsp"); Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/util/LamsSecurityUtil.java =================================================================== diff -u -ree84f34847defe313ee0570b67a75c41a22091c2 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/util/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision ee84f34847defe313ee0570b67a75c41a22091c2) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/util/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -409,19 +409,25 @@ * @param ctx * the blackboard contect, contains session data * @param usernameFromParam - * current user's username + * current user's username * @param courseIdStr - * courseId + * courseId * @param ldId * the learning design id for which you wish to start a lesson * @param title * the title of the lesson * @param desc - * the description of the lesson - * + * the description of the lesson + * @param isAllowLearnerRestart + * whether learners are allowed to restart the lesson. This parameter will be passed to LAMS only in case + * it's true, otherwise LAMS will use according ExtServer's default value + * @param isPreview + * whether LAMS should start it as a preview or not + * * @return the learning session id */ - public static Long startLesson(User user, String courseId, long ldId, String title, String desc, boolean isPreview) { + public static Long startLesson(User user, String courseId, long ldId, String title, String desc, + Boolean isAllowLearnerRestart, boolean isPreview) { String serverId = LamsPluginUtil.getServerId(); String serverAddr = LamsPluginUtil.getServerUrl(); @@ -447,7 +453,8 @@ + URLEncoder.encode(username, "utf8") + "&hashValue=" + hash + course + "&ldId=" + new Long(ldId).toString() + "&country=" + country + "&lang=" + locale + "&method=" + method + "&title=" + URLEncoder.encode(title, "utf8").trim() + "&desc=" - + URLEncoder.encode(desc, "utf8").trim() + "&enableNotifications=true"; + + URLEncoder.encode(desc, "utf8").trim() + "&enableNotifications=true" + + (isAllowLearnerRestart == null ? "" : "&allowLearnerRestart=true"); logger.info("LAMS START LESSON Req: " + serviceURL); Index: lams_bb_integration/web/modules/create.jsp =================================================================== diff -u -r9688217999ccc25dc02a207ed4ea715563e59e63 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_bb_integration/web/modules/create.jsp (.../create.jsp) (revision 9688217999ccc25dc02a207ed4ea715563e59e63) +++ lams_bb_integration/web/modules/create.jsp (.../create.jsp) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -176,9 +176,15 @@ - Yes - No + Yes + No + + + Yes + No + + Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== diff -u -r5caa0c70153ab564c5d8e347c4af4baf53b01fd0 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 5caa0c70153ab564c5d8e347c4af4baf53b01fd0) +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -176,4 +176,6 @@ public static final String PARAM_LEARNER_IM_ENABLE = "learnerInstantMessaging"; public static final String PARAM_ENABLE_NOTIFICATIONS = "enableNotifications"; + + public static final String PARAM_ALLOW_LEARNER_RESTART = "allowLearnerRestart"; } \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -r7e7ebcac9617605be0b38b6b43e5a3488732d8b0 -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 7e7ebcac9617605be0b38b6b43e5a3488732d8b0) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) @@ -156,6 +156,11 @@ Boolean enableNotifications = enableNotificationString == null ? null : Boolean.valueOf(enableNotificationString); + String allowLearnerRestartString = WebUtil.readStrParam(request, CentralConstants.PARAM_ALLOW_LEARNER_RESTART, + true); + Boolean allowLearnerRestart = allowLearnerRestartString == null ? null + : Boolean.valueOf(allowLearnerRestartString); + Long ldId = null; Long lsId = null; ServletOutputStream outputStream = null; @@ -175,7 +180,7 @@ if (method.equals(CentralConstants.METHOD_START)) { ldId = new Long(ldIdStr); Long lessonId = LessonManagerServlet.startLesson(serverId, datetime, hashValue, username, ldId, - courseId, title, desc, country, locale, customCSV, presenceEnable, imEnable, + courseId, title, desc, allowLearnerRestart, country, locale, customCSV, presenceEnable, imEnable, enableNotifications); element = document.createElement(CentralConstants.ELEM_LESSON); @@ -192,7 +197,8 @@ } else if (method.equals(CentralConstants.METHOD_SCHEDULE)) { ldId = new Long(ldIdStr); Long lessonId = scheduleLesson(serverId, datetime, hashValue, username, ldId, courseId, title, desc, - startDate, country, locale, customCSV, presenceEnable, imEnable, enableNotifications); + allowLearnerRestart, startDate, country, locale, customCSV, presenceEnable, imEnable, + enableNotifications); element = document.createElement(CentralConstants.ELEM_LESSON); element.setAttribute(CentralConstants.ATTR_LESSON_ID, lessonId.toString()); @@ -374,8 +380,9 @@ } private static Long startLesson(String serverId, String datetime, String hashValue, String username, long ldId, - String courseId, String title, String desc, String countryIsoCode, String langIsoCode, String customCSV, - Boolean presenceEnable, Boolean imEnable, Boolean enableNotifications) throws RemoteException { + String courseId, String title, String desc, Boolean allowLearnerRestart, String countryIsoCode, + String langIsoCode, String customCSV, Boolean presenceEnable, Boolean imEnable, Boolean enableNotifications) + throws RemoteException { try { ExtServer extServer = integrationService.getExtServer(serverId); Authenticator.authenticate(extServer, datetime, username, hashValue); @@ -391,7 +398,8 @@ presenceEnable == null ? extServer.getLearnerPresenceAvailable() : presenceEnable, imEnable == null ? extServer.getLearnerImAvailable() : imEnable, extServer.getLiveEditEnabled(), enableNotifications == null ? extServer.getEnableLessonNotifications() : enableNotifications, - extServer.getForceLearnerRestart(), extServer.getAllowLearnerRestart(), + extServer.getForceLearnerRestart(), + allowLearnerRestart == null ? extServer.getAllowLearnerRestart() : allowLearnerRestart, extServer.getGradebookOnComplete(), null, null); // 2. create lessonClass for lesson LessonManagerServlet.createLessonClass(lesson, organisation, user); @@ -407,7 +415,7 @@ } private Long scheduleLesson(String serverId, String datetime, String hashValue, String username, long ldId, - String courseId, String title, String desc, String startDate, String countryIsoCode, String langIsoCode, + String courseId, String title, String desc, Boolean allowLearnerRestart, String startDate, String countryIsoCode, String langIsoCode, String customCSV, Boolean presenceEnable, Boolean imEnable, Boolean enableNotifications) throws RemoteException { try { @@ -422,7 +430,8 @@ false, presenceEnable == null ? extServer.getLearnerPresenceAvailable() : presenceEnable, imEnable == null ? extServer.getLearnerImAvailable() : imEnable, extServer.getLiveEditEnabled(), enableNotifications == null ? extServer.getEnableLessonNotifications() : enableNotifications, - extServer.getForceLearnerRestart(), extServer.getAllowLearnerRestart(), + extServer.getForceLearnerRestart(), + allowLearnerRestart == null ? extServer.getAllowLearnerRestart() : allowLearnerRestart, extServer.getGradebookOnComplete(), null, null); // 2. create lessonClass for lesson LessonManagerServlet.createLessonClass(lesson, orgMap.getOrganisation(), userMap.getUser());