Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/CompleteActivityController.java
===================================================================
diff -u -r3a817bfe8c85ab09ac85d7f7c8594aaf66a8bae8 -r598df4e0799935ff45fbd855b6b388d7e0443248
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/CompleteActivityController.java (.../CompleteActivityController.java) (revision 3a817bfe8c85ab09ac85d7f7c8594aaf66a8bae8)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/CompleteActivityController.java (.../CompleteActivityController.java) (revision 598df4e0799935ff45fbd855b6b388d7e0443248)
@@ -97,7 +97,7 @@
String lessonFinishCallbackUrl = null;
if (progress.isComplete() || activity.isToolActivity()) {
lessonFinishCallbackUrl = integrationService.getLessonFinishCallbackUrl(progress.getUser(),
- progress.getLesson(), progress.isComplete() ? null : activityId);
+ progress.getLesson(), activityId);
if (lessonFinishCallbackUrl != null) {
// if user has already completed the lesson - we need to let non-LTI integrations server know to come and pick up
// updated marks (as it won't happen at lessoncomplete.jsp page)
@@ -111,6 +111,10 @@
// loadToolActivity.jsp will make an Ajax call to LTI Advantage servlet
forward = WebUtil.appendParameterToURL(forward, "activityFinishUrl",
URLEncoder.encode(lessonFinishCallbackUrl, "UTF8"));
+ if (progress.isComplete()) {
+ // so we can update the last activity score even on lesson finish
+ forward = WebUtil.appendParameterToURL(forward, "finishedActivityId", String.valueOf(activityId));
+ }
}
return forward;
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LessonCompleteActivityController.java
===================================================================
diff -u -r3a817bfe8c85ab09ac85d7f7c8594aaf66a8bae8 -r598df4e0799935ff45fbd855b6b388d7e0443248
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LessonCompleteActivityController.java (.../LessonCompleteActivityController.java) (revision 3a817bfe8c85ab09ac85d7f7c8594aaf66a8bae8)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LessonCompleteActivityController.java (.../LessonCompleteActivityController.java) (revision 598df4e0799935ff45fbd855b6b388d7e0443248)
@@ -34,6 +34,7 @@
import org.lamsfoundation.lams.lesson.LearnerProgress;
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.lesson.service.ILessonService;
+import org.lamsfoundation.lams.util.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -75,9 +76,11 @@
request.setAttribute(RELEASED_LESSONS_REQUEST_ATTRIBUTE, releasedLessonNames.toString());
}
+ // so LTI 1.3 can update last finished activity
+ Long finishedActivityId = WebUtil.readLongParam(request, "finishedActivityId", true);
//let non-LTI integrations server know to come and pick up updated marks (it will happen at lessoncomplete.jsp page)
String lessonFinishCallbackUrl = integrationService.getLessonFinishCallbackUrl(learnerProgress.getUser(),
- lesson, null);
+ lesson, finishedActivityId);
if (lessonFinishCallbackUrl != null) {
request.setAttribute("lessonFinishUrl", lessonFinishCallbackUrl);
}
Index: lams_learning/web/requestURL.jsp
===================================================================
diff -u -r9cbba0026b9584b2e4bcba57f0d5a8510bdb5846 -r598df4e0799935ff45fbd855b6b388d7e0443248
--- lams_learning/web/requestURL.jsp (.../requestURL.jsp) (revision 9cbba0026b9584b2e4bcba57f0d5a8510bdb5846)
+++ lams_learning/web/requestURL.jsp (.../requestURL.jsp) (revision 598df4e0799935ff45fbd855b6b388d7e0443248)
@@ -32,6 +32,9 @@
function doRedirect() {
var myParent = parent;
var url = decodeURIComponent("");
+
+ url += '&finishedActivityId=${param.finishedActivityId}';
+
if ( myParent )
myParent.location.href = url;
else