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());