Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/LinkToolsServlet.java =================================================================== diff -u -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 -r37fbc0e992fae0577ca56376b3263a7a50709260 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/LinkToolsServlet.java (.../LinkToolsServlet.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/LinkToolsServlet.java (.../LinkToolsServlet.java) (revision 37fbc0e992fae0577ca56376b3263a7a50709260) @@ -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, null, false); + description, false, false); // update lesson id content.setLinkRef(Long.toString(newLessonId)); Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/OpenLamsPageServlet.java =================================================================== diff -u -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 -r37fbc0e992fae0577ca56376b3263a7a50709260 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/OpenLamsPageServlet.java (.../OpenLamsPageServlet.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/servlet/OpenLamsPageServlet.java (.../OpenLamsPageServlet.java) (revision 37fbc0e992fae0577ca56376b3263a7a50709260) @@ -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, "", null, true); + Long lsId = LamsSecurityUtil.startLesson(user, "Previews", ldId, strTitle, "", false, true); // error checking if (lsId == -1) { response.sendRedirect("lamsServerDown.jsp"); Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/util/BlackboardUtil.java =================================================================== diff -u -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 -r37fbc0e992fae0577ca56376b3263a7a50709260 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/util/BlackboardUtil.java (.../BlackboardUtil.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/util/BlackboardUtil.java (.../BlackboardUtil.java) (revision 37fbc0e992fae0577ca56376b3263a7a50709260) @@ -156,7 +156,7 @@ 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 + boolean enforceAllowLearnerRestart = (strIsAllowLearnerRestart != null && strIsAllowLearnerRestart.equals("true")); // default false // Set Availability Dates SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -214,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, - isAllowLearnerRestart, false); + enforceAllowLearnerRestart, false); // error checking if (lamsLessonIdLong == -1) { response.sendRedirect("lamsServerDown.jsp"); Index: lams_bb_integration/src/org/lamsfoundation/bb/integration/util/LamsSecurityUtil.java =================================================================== diff -u -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 -r37fbc0e992fae0577ca56376b3263a7a50709260 --- lams_bb_integration/src/org/lamsfoundation/bb/integration/util/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) +++ lams_bb_integration/src/org/lamsfoundation/bb/integration/util/LamsSecurityUtil.java (.../LamsSecurityUtil.java) (revision 37fbc0e992fae0577ca56376b3263a7a50709260) @@ -418,16 +418,16 @@ * the title of the lesson * @param desc * 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 enforceAllowLearnerRestart + * whether learners are allowed to restart the lesson. It has a higher priority than LAMS ExtServer's + * according default setting * @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 isAllowLearnerRestart, boolean isPreview) { + boolean enforceAllowLearnerRestart, boolean isPreview) { String serverId = LamsPluginUtil.getServerId(); String serverAddr = LamsPluginUtil.getServerUrl(); @@ -454,7 +454,7 @@ + new Long(ldId).toString() + "&country=" + country + "&lang=" + locale + "&method=" + method + "&title=" + URLEncoder.encode(title, "utf8").trim() + "&desc=" + URLEncoder.encode(desc, "utf8").trim() + "&enableNotifications=true" - + (isAllowLearnerRestart == null ? "" : "&allowLearnerRestart=true"); + + "&allowLearnerRestart=" + enforceAllowLearnerRestart; logger.info("LAMS START LESSON Req: " + serviceURL); Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -rdd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3 -r37fbc0e992fae0577ca56376b3263a7a50709260 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision dd6e1e0906e59b3a0badd40b98ff6028e8b4e1f3) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 37fbc0e992fae0577ca56376b3263a7a50709260) @@ -158,8 +158,9 @@ String allowLearnerRestartString = WebUtil.readStrParam(request, CentralConstants.PARAM_ALLOW_LEARNER_RESTART, true); - Boolean allowLearnerRestart = allowLearnerRestartString == null ? null - : Boolean.valueOf(allowLearnerRestartString); + // whether this lesson was created with this option ON + boolean enforceAllowLearnerRestart = StringUtils.isNotBlank(allowLearnerRestartString) + && Boolean.valueOf(allowLearnerRestartString); Long ldId = null; Long lsId = null; @@ -180,7 +181,7 @@ if (method.equals(CentralConstants.METHOD_START)) { ldId = new Long(ldIdStr); Long lessonId = LessonManagerServlet.startLesson(serverId, datetime, hashValue, username, ldId, - courseId, title, desc, allowLearnerRestart, country, locale, customCSV, presenceEnable, imEnable, + courseId, title, desc, enforceAllowLearnerRestart, country, locale, customCSV, presenceEnable, imEnable, enableNotifications); element = document.createElement(CentralConstants.ELEM_LESSON); @@ -197,7 +198,7 @@ } else if (method.equals(CentralConstants.METHOD_SCHEDULE)) { ldId = new Long(ldIdStr); Long lessonId = scheduleLesson(serverId, datetime, hashValue, username, ldId, courseId, title, desc, - allowLearnerRestart, startDate, country, locale, customCSV, presenceEnable, imEnable, + enforceAllowLearnerRestart, startDate, country, locale, customCSV, presenceEnable, imEnable, enableNotifications); element = document.createElement(CentralConstants.ELEM_LESSON); @@ -380,7 +381,7 @@ } private static Long startLesson(String serverId, String datetime, String hashValue, String username, long ldId, - String courseId, String title, String desc, Boolean allowLearnerRestart, String countryIsoCode, + String courseId, String title, String desc, boolean enforceAllowLearnerRestart, String countryIsoCode, String langIsoCode, String customCSV, Boolean presenceEnable, Boolean imEnable, Boolean enableNotifications) throws RemoteException { try { @@ -399,7 +400,7 @@ imEnable == null ? extServer.getLearnerImAvailable() : imEnable, extServer.getLiveEditEnabled(), enableNotifications == null ? extServer.getEnableLessonNotifications() : enableNotifications, extServer.getForceLearnerRestart(), - allowLearnerRestart == null ? extServer.getAllowLearnerRestart() : allowLearnerRestart, + enforceAllowLearnerRestart ? true : extServer.getAllowLearnerRestart(), extServer.getGradebookOnComplete(), null, null); // 2. create lessonClass for lesson LessonManagerServlet.createLessonClass(lesson, organisation, user); @@ -415,7 +416,7 @@ } private Long scheduleLesson(String serverId, String datetime, String hashValue, String username, long ldId, - String courseId, String title, String desc, Boolean allowLearnerRestart, String startDate, String countryIsoCode, String langIsoCode, + String courseId, String title, String desc, boolean enforceAllowLearnerRestart, String startDate, String countryIsoCode, String langIsoCode, String customCSV, Boolean presenceEnable, Boolean imEnable, Boolean enableNotifications) throws RemoteException { try { @@ -431,7 +432,7 @@ imEnable == null ? extServer.getLearnerImAvailable() : imEnable, extServer.getLiveEditEnabled(), enableNotifications == null ? extServer.getEnableLessonNotifications() : enableNotifications, extServer.getForceLearnerRestart(), - allowLearnerRestart == null ? extServer.getAllowLearnerRestart() : allowLearnerRestart, + enforceAllowLearnerRestart ? true : extServer.getAllowLearnerRestart(), extServer.getGradebookOnComplete(), null, null); // 2. create lessonClass for lesson LessonManagerServlet.createLessonClass(lesson, orgMap.getOrganisation(), userMap.getUser());