Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dokumaranApplicationContext.xml
===================================================================
diff -u -r368e60d0fd7df1a3e327670ef9d0f3487803110b -r2509a4b8ae30079b238c0af1c508466517584e3b
--- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dokumaranApplicationContext.xml (.../dokumaranApplicationContext.xml) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b)
+++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dokumaranApplicationContext.xml (.../dokumaranApplicationContext.xml) (revision 2509a4b8ae30079b238c0af1c508466517584e3b)
@@ -61,6 +61,9 @@
+
+
+
Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java
===================================================================
diff -u -re0cdeed1959c06ed434e7a4abec0aa5722128c8b -r2509a4b8ae30079b238c0af1c508466517584e3b
--- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision e0cdeed1959c06ed434e7a4abec0aa5722128c8b)
+++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 2509a4b8ae30079b238c0af1c508466517584e3b)
@@ -43,6 +43,7 @@
import org.lamsfoundation.lams.etherpad.EtherpadException;
import org.lamsfoundation.lams.etherpad.service.IEtherpadService;
import org.lamsfoundation.lams.etherpad.util.EtherpadUtil;
+import org.lamsfoundation.lams.learning.service.ILearnerService;
import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException;
import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService;
import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException;
@@ -71,7 +72,6 @@
import org.lamsfoundation.lams.tool.dokumaran.model.Dokumaran;
import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranSession;
import org.lamsfoundation.lams.tool.dokumaran.model.DokumaranUser;
-import org.lamsfoundation.lams.tool.dokumaran.web.controller.LearningWebsocketServer;
import org.lamsfoundation.lams.tool.exception.DataMissingException;
import org.lamsfoundation.lams.tool.exception.ToolException;
import org.lamsfoundation.lams.tool.service.ILamsToolService;
@@ -81,6 +81,7 @@
import org.lamsfoundation.lams.util.JsonUtil;
import org.lamsfoundation.lams.util.MessageService;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.ObjectNode;
import net.gjerull.etherpad.client.EPLiteClient;
@@ -108,6 +109,8 @@
private IUserManagementService userManagementService;
+ private ILearnerService learnerService;
+
private IRatingService ratingService;
private IExportToolContentService exportContentService;
@@ -561,7 +564,7 @@
dokumaran.setGalleryWalkStarted(true);
dokumaranDao.saveObject(dokumaran);
- LearningWebsocketServer.sendPageRefreshRequest(toolContentId);
+ sendGalleryWalkRefreshRequest(dokumaran);
}
@Override
@@ -575,9 +578,20 @@
dokumaran.setGalleryWalkFinished(true);
dokumaranDao.saveObject(dokumaran);
- LearningWebsocketServer.sendPageRefreshRequest(toolContentId);
+ sendGalleryWalkRefreshRequest(dokumaran);
}
+ private void sendGalleryWalkRefreshRequest(Dokumaran dokumaran) {
+ ObjectNode jsonCommand = JsonNodeFactory.instance.objectNode();
+ jsonCommand.put("hookTrigger", "gallery-walk-refresh-" + dokumaran.getContentId());
+ // get all learners in this doku
+ Set userIds = dokumaranSessionDao.getByContentId(dokumaran.getContentId()).stream()
+ .flatMap(session -> dokumaranUserDao.getBySessionID(session.getSessionId()).stream())
+ .collect(Collectors.mapping(user -> user.getUserId().intValue(), Collectors.toSet()));
+
+ learnerService.createCommandForLearners(dokumaran.getContentId(), userIds, jsonCommand.toString());
+ }
+
// *****************************************************************************
// private methods
// *****************************************************************************
@@ -1057,6 +1071,10 @@
this.userManagementService = userManagementService;
}
+ public void setLearnerService(ILearnerService learnerService) {
+ this.learnerService = learnerService;
+ }
+
public void setRatingService(IRatingService ratingService) {
this.ratingService = ratingService;
}
Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningWebsocketServer.java
===================================================================
diff -u -re606aaebe2ef85c40a4054ef76abf62c94d224a4 -r2509a4b8ae30079b238c0af1c508466517584e3b
--- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision e606aaebe2ef85c40a4054ef76abf62c94d224a4)
+++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision 2509a4b8ae30079b238c0af1c508466517584e3b)
@@ -184,7 +184,7 @@
* Monitor has launched time limit. All learners will need to refresh the page in order to stop showing them
* waitForTimeLimitLaunch page.
*/
- public static void sendPageRefreshRequest(Long toolContentId) throws IOException {
+ private static void sendPageRefreshRequest(Long toolContentId) throws IOException {
Set toolContentWebsockets = websockets.get(toolContentId);
if (toolContentWebsockets == null) {
return;
Index: lams_tool_doku/web/pages/learning/websocket.jsp
===================================================================
diff -u -r1ad946fb218ec5d1bfe16900aa8cf2cdc1a63da7 -r2509a4b8ae30079b238c0af1c508466517584e3b
--- lams_tool_doku/web/pages/learning/websocket.jsp (.../websocket.jsp) (revision 1ad946fb218ec5d1bfe16900aa8cf2cdc1a63da7)
+++ lams_tool_doku/web/pages/learning/websocket.jsp (.../websocket.jsp) (revision 2509a4b8ae30079b238c0af1c508466517584e3b)
@@ -59,4 +59,15 @@
return;
}
};
+
+
+ $(document).ready(function(){
+ // command websocket stuff for refreshing
+ // trigger is an unique ID of page and action that command websocket code in Page.tag recognises
+ commandWebsocketHookTrigger = 'gallery-walk-refresh-${sessionMap.toolContentID}';
+ // if the trigger is recognised, the following action occurs
+ commandWebsocketHook = function() {
+ location.reload();
+ };
+ });
\ No newline at end of file