Index: TestHarness4LAMS2/src/org/lamsfoundation/testharness/learner/MockLearner.java =================================================================== diff -u -rda506197047df06aabd8b50ffd781288b940a417 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- TestHarness4LAMS2/src/org/lamsfoundation/testharness/learner/MockLearner.java (.../MockLearner.java) (revision da506197047df06aabd8b50ffd781288b940a417) +++ TestHarness4LAMS2/src/org/lamsfoundation/testharness/learner/MockLearner.java (.../MockLearner.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -154,7 +154,14 @@ private static final short SCRIBE_SUBMIT_REPORT_ATTEMPTS = 3; private static final String NB_SUBSTRING = "/lams/tool/lanb11/"; - + + private static final String GMAP_SUBSTRING = "map.closeInfoWindow()"; + private static final String GMAP_CONTINUE_BUTTON = "continueButton"; + private static final String GMAP_CONTINUE_METHOD = "openNotebook"; + private static final String GMAP_FINISH_METHOD = "finishActivity"; + private static final String GMAP_DISPATCH = "dispatch"; + + private static int joinLessonUserCount = 0; private static int topJoinLessonUserCount = 0; private boolean finished = false; @@ -396,6 +403,7 @@ boolean isActivityFinished = (asText != null) && (asText.contains(MockLearner.ACTIVITY_FINISHED_FLAG) || asText.contains(MockLearner.LESSON_FINISHED_FLAG) || asText.contains(MockLearner.LOAD_TOOL_ACTIVITY_FLAG)); + return isActivityFinished ? nextResp : handleActivity(nextResp); } @@ -408,7 +416,7 @@ return null; } - private WebResponse handlePageWithForms(WebResponse resp) throws IOException, SAXException { + private WebResponse handlePageWithForms(WebResponse resp) throws IOException, SAXException, InterruptedException { int index = -1; WebForm[] forms = resp.getForms(); WebForm form = null; @@ -464,6 +472,9 @@ return handleToolScribe(resp, form); } else if (asText.contains(NB_SUBSTRING)) { handleToolNb(resp, form); + } else if (asText.contains(GMAP_SUBSTRING)) { + // GMAP has two forms so force it to use the right one + return handleToolGMAP(resp, forms, asText); } } log.debug("Filling form fillFormArbitrarily"); @@ -581,7 +592,7 @@ } } - private WebResponse handleToolForum(WebResponse resp) throws SAXException, IOException { + private WebResponse handleToolForum(WebResponse resp) throws SAXException, IOException, InterruptedException { WebResponse replyResponse = null; String replyURL = MockLearner.findURLInAHREF(resp, MockLearner.FORUM_VIEW_TOPIC_SUBSTRING); @@ -605,7 +616,7 @@ return (WebResponse) new Call(wc, test, "Finish Forum", finishURL).execute(); } - private WebResponse handleToolForumReply(String url) throws SAXException, IOException { + private WebResponse handleToolForumReply(String url) throws SAXException, IOException, InterruptedException { WebResponse resp = (WebResponse) new Call(wc, test, username + " views Forum topic", url).execute(); // store link for later String returnToForumURL = MockLearner.findURLInLocationHref(resp, MockLearner.FORUM_VIEW_FORUM_SUBSTRING); @@ -666,7 +677,7 @@ } @SuppressWarnings("deprecation") - private WebResponse handleToolScratchie(WebResponse resp) throws SAXException, IOException { + private WebResponse handleToolScratchie(WebResponse resp) throws SAXException, IOException, InterruptedException { String asText = resp.getText(); String finishURL = null; // check if scratchie is not finished already @@ -1022,6 +1033,36 @@ // return form; // } + // has more than two forms - need to find the one with continue/next. It should be the last one on the page + private WebResponse handleToolGMAP(WebResponse resp, WebForm[] forms, String asText) + throws IOException, SAXException, InterruptedException { + + WebForm wantedForm = null; + Button continueButton = null; + for ( WebForm form: forms) { + continueButton = form.getSubmitButtonWithID(GMAP_CONTINUE_BUTTON); + if (continueButton != null) { + // log.debug("Found a continue button"); + wantedForm = form; + wantedForm.setAttribute(GMAP_DISPATCH, GMAP_CONTINUE_METHOD); + break; + } + } + + if ( continueButton == null ) { + wantedForm = forms[forms.length-1]; + wantedForm.setAttribute(GMAP_DISPATCH, GMAP_FINISH_METHOD); + } + + // MockLearner.log.debug(GMAP_DISPATCH + wantedForm.getAttribute(GMAP_DISPATCH)); + if ( continueButton != null ) { + // MockLearner.log.debug("handling reflection"); + WebResponse nextResp = (WebResponse) new Call(wc, test, username + " submits gmap form", wantedForm).execute(); + return handleActivity(nextResp); + } + return (WebResponse) new Call(wc, test, username + " submits gmap form", wantedForm).execute(); + } + private WebResponse handleToolPeerReview(WebResponse resp, String asText) throws SAXException, IOException { WebResponse replyResponse = null; Index: lams_tool_gmap/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r9f263d0351485d3583c82692c1e9a481bb4ddb1f -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 9f263d0351485d3583c82692c1e9a481bb4ddb1f) +++ lams_tool_gmap/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -44,7 +44,6 @@ advanced.allowSatellite =Allow satellite map type advanced.allowHybrid =Allow hybrid map type monitor.summary.title.advanced =Advanced -monitor.summary.title.groups =Groups monitor.summary.title.map =Map monitor.summary.th.advancedSettings =Advanced settings label.authoring.authoredMarkers =Markers @@ -107,5 +106,8 @@ label.activity.completion =End of activity label.show.on.map =Show on map - +label.search =Search... +monitoring.user.fullname =Name +monitoring.user.reflection =Notebook entry +monitoring.user.num.markers =Number of Markers #======= End labels: Exported 100 labels for en AU ===== Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/dao/IGmapUserDAO.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/dao/IGmapUserDAO.java (.../IGmapUserDAO.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/dao/IGmapUserDAO.java (.../IGmapUserDAO.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -24,8 +24,12 @@ package org.lamsfoundation.lams.tool.gmap.dao; +import java.util.List; + import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.gmap.model.GmapUser; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; /** * DAO for accessing the GmapUser objects - interface defining @@ -56,4 +60,10 @@ * @return */ GmapUser getByUID(Long uid); + + List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, + String searchString, boolean getNotebookEntries, ICoreNotebookService coreNotebookService, + IUserManagementService userManagementService); + + int getCountUsersBySession(final Long sessionUid, String searchString); } Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/dao/hibernate/GmapUserDAO.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/dao/hibernate/GmapUserDAO.java (.../GmapUserDAO.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/dao/hibernate/GmapUserDAO.java (.../GmapUserDAO.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -26,9 +26,17 @@ import java.util.List; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; +import org.hibernate.SQLQuery; +import org.hibernate.type.IntegerType; +import org.hibernate.type.StringType; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.gmap.dao.IGmapUserDAO; import org.lamsfoundation.lams.tool.gmap.model.GmapUser; +import org.lamsfoundation.lams.tool.gmap.util.GmapConstants; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.springframework.stereotype.Repository; /** @@ -44,7 +52,7 @@ + " as f where login_name=? and f.gmapSession.sessionId=?"; private static final String SQL_QUERY_FIND_BY_UID = "from " + GmapUser.class.getName() + " where uid=?"; - + @Override public GmapUser getByUserIdAndSessionId(Long userId, Long toolSessionId) { List list = doFind(SQL_QUERY_FIND_BY_USER_ID_SESSION_ID, new Object[] { userId, toolSessionId }); @@ -85,4 +93,98 @@ return (GmapUser) list.get(0); } + + @Override + @SuppressWarnings("unchecked") + /** + * Will return List<[SubmitUser, Integer1, Integer2, String], [SubmitUser, Integer1, Integer2, String], ... , + * [SubmitUser, Integer1, Integer2, String]> + * where Integer1 is the number of files uploaded, Integer2 is the number of files marked + * and String is the notebook entry. No notebook entries needed? Will return null in their place. + */ + public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, + String searchString, boolean getNotebookEntries, ICoreNotebookService coreNotebookService, + IUserManagementService userManagementService) { + String sortingOrder; + switch (sorting) { + case GmapConstants.SORT_BY_USERNAME_ASC: + sortingOrder = "user.last_name ASC, user.first_name ASC"; + break; + case GmapConstants.SORT_BY_USERNAME_DESC: + sortingOrder = "user.last_name DESC, user.first_name DESC"; + break; + default: + sortingOrder = "user.last_name, user.first_name"; + } + + // If the session uses notebook, then get the sql to join across to get the entries + String[] notebookEntryStrings = null; + if (getNotebookEntries) { + notebookEntryStrings = coreNotebookService.getNotebookEntrySQLStrings(sessionId.toString(), + GmapConstants.TOOL_SIGNATURE, "user.user_id"); + } + + String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id"); + + // Basic select for the user records + StringBuilder queryText = new StringBuilder(); + queryText.append("SELECT user.user_id, user.first_name, user.last_name ") + .append(portraitStrings[0]) + .append(notebookEntryStrings != null ? notebookEntryStrings[0] : ", NULL notebookEntry") + .append(" FROM tl_lagmap10_user user ") + .append(portraitStrings[1]) + .append(" JOIN tl_lagmap10_session session ON user.gmap_session_uid = session.uid "); + + // If using notebook, add the notebook join + if (notebookEntryStrings != null) { + queryText.append(notebookEntryStrings[1]); + } + + queryText.append(" WHERE session.session_id = :sessionId"); + + // If filtering by name add a name based where clause + buildNameSearch(searchString, queryText); + + // finally group by user for the marker counts + queryText.append(" GROUP BY user.uid"); + + // Now specify the sort based on the switch statement above. + queryText.append(" ORDER BY " + sortingOrder); + + SQLQuery query = getSession().createSQLQuery(queryText.toString()); + query.addScalar("user_id", IntegerType.INSTANCE) + .addScalar("first_name", StringType.INSTANCE) + .addScalar("last_name", StringType.INSTANCE) + .addScalar("portraitId", IntegerType.INSTANCE) + .addScalar("notebookEntry", StringType.INSTANCE) + .setLong("sessionId", sessionId.longValue()).setFirstResult(page * size).setMaxResults(size); + return query.list(); + } + + private void buildNameSearch(String searchString, StringBuilder sqlBuilder) { + if (!StringUtils.isBlank(searchString)) { + String[] tokens = searchString.trim().split("\\s+"); + for (String token : tokens) { + String escToken = StringEscapeUtils.escapeSql(token); + sqlBuilder.append(" AND (user.first_name LIKE '%").append(escToken) + .append("%' OR user.last_name LIKE '%").append(escToken).append("%' OR user.login_name LIKE '%") + .append(escToken).append("%') "); + } + } + } + + @Override + @SuppressWarnings("rawtypes") + public int getCountUsersBySession(final Long sessionUid, String searchString) { + + StringBuilder queryText = new StringBuilder( + "SELECT count(*) FROM tl_lagmap10_user user WHERE user.gmap_session_uid = :sessionUid "); + buildNameSearch(searchString, queryText); + + List list = getSession().createSQLQuery(queryText.toString()).setLong("sessionUid", sessionUid).list(); + if (list == null || list.size() == 0) { + return 0; + } + return ((Number) list.get(0)).intValue(); + } } Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/gmapApplicationContext.xml =================================================================== diff -u -ra6641bf9262a01d07740a517643f8fe187ec5b1f -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/gmapApplicationContext.xml (.../gmapApplicationContext.xml) (revision a6641bf9262a01d07740a517643f8fe187ec5b1f) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/gmapApplicationContext.xml (.../gmapApplicationContext.xml) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -30,6 +30,7 @@ + Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java =================================================================== diff -u -r64ee69765400783a3e284e7856aa91cdd01f4831 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java (.../GmapService.java) (revision 64ee69765400783a3e284e7856aa91cdd01f4831) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java (.../GmapService.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -71,6 +71,7 @@ import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.w3c.dom.Document; @@ -100,6 +101,8 @@ private ILamsToolService toolService; + private IUserManagementService userManagementService; + private IToolContentHandler gmapToolContentHandler = null; private IExportToolContentService exportContentService; @@ -605,6 +608,19 @@ toolService.auditLogStartEditingActivityInMonitor(toolContentID); } + @Override + public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, + String searchString, boolean getNotebookEntries) { + return gmapUserDAO.getUsersForTablesorter(sessionId, page, size, sorting, searchString, getNotebookEntries, + coreNotebookService, userManagementService); + } + + + @Override + public int getCountUsersBySession(Long sessionId, String searchString) { + return gmapUserDAO.getCountUsersBySession(sessionId, searchString); + } + // ========================================================================================= /* ********** Used by Spring to "inject" the linked objects ************* */ @@ -672,6 +688,14 @@ this.coreNotebookService = coreNotebookService; } + public IUserManagementService getUserManagementService() { + return userManagementService; + } + + public void setUserManagementService(IUserManagementService userManagementService) { + this.userManagementService = userManagementService; + } + public IGmapMarkerDAO getGmapMarkerDAO() { return gmapMarkerDAO; } Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/IGmapService.java =================================================================== diff -u -r2abc3485dc2d24ea02044a64271f3ee0d3b8c11b -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/IGmapService.java (.../IGmapService.java) (revision 2abc3485dc2d24ea02044a64271f3ee0d3b8c11b) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/IGmapService.java (.../IGmapService.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -186,4 +186,10 @@ */ void auditLogStartEditingActivityInMonitor(long toolContentID); + /** Get the list of users for a session for the monitoring tablesorter */ + List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, + String searchString, boolean getNotebookEntries); + + /** Get the number of users in a session for the tablesorter */ + int getCountUsersBySession(Long sessionId, String searchString); } Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/util/GmapConstants.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/util/GmapConstants.java (.../GmapConstants.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/util/GmapConstants.java (.../GmapConstants.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -45,6 +45,16 @@ public static final String ATTR_USER_DTO = "gmapUserDTO"; public static final String ATTR_USER = "gmapUser"; + public static final String ATTR_USER_ID = "userId"; + public static final String ATTR_PORTRAIT_ID = "portraitId"; + public static final String ATTR_USER_FULLNAME = "fullName"; + public static final String ATTR_NUM_MARKERS = "numMarkers"; + public static final String ATTR_USER_REFLECTION = "reflection"; + + public static final int SORT_BY_NO = 1; + public static final int SORT_BY_USERNAME_ASC = 2; + public static final int SORT_BY_USERNAME_DESC = 3; + // Parameter names public static final String PARAM_PARENT_PAGE = "parentPage"; Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/web/actions/MonitoringAction.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -24,18 +24,22 @@ package org.lamsfoundation.lams.tool.gmap.web.actions; +import java.io.IOException; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; +import org.apache.tomcat.util.json.JSONArray; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.tool.gmap.dto.GmapDTO; import org.lamsfoundation.lams.tool.gmap.dto.GmapSessionDTO; -import org.lamsfoundation.lams.tool.gmap.dto.GmapUserDTO; import org.lamsfoundation.lams.tool.gmap.model.Gmap; import org.lamsfoundation.lams.tool.gmap.model.GmapConfigItem; import org.lamsfoundation.lams.tool.gmap.model.GmapSession; @@ -89,25 +93,12 @@ GmapDTO gmapDT0 = new GmapDTO(gmap); // Adding the markers lists to a map with tool sessions as the key + if (gmapDT0.getSessionDTOs() != null) { for (GmapSessionDTO sessionDTO : gmapDT0.getSessionDTOs()) { Long toolSessionID = sessionDTO.getSessionID(); sessionDTO.setMarkerDTOs(gmapService.getGmapMarkersBySessionId(toolSessionID)); - - for (GmapUserDTO userDTO : sessionDTO.getUserDTOs()) { - // get the notebook entry. - NotebookEntry notebookEntry = gmapService.getEntry(toolSessionID, - CoreNotebookConstants.NOTEBOOK_TOOL, GmapConstants.TOOL_SIGNATURE, - userDTO.getUserId().intValue()); - if (notebookEntry != null) { - userDTO.setFinishedReflection(true); - //userDTO.setNotebookEntry(notebookEntry.getEntry()); - } else { - userDTO.setFinishedReflection(false); - } - sessionDTO.getUserDTOs().add(userDTO); - } } } @@ -195,32 +186,54 @@ return gmapUser; } - /** - * Opens a user's reflection - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - public ActionForward openNotebook(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { + /** Ajax call to populate the tablesorter */ + public ActionForward getUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws JSONException, IOException { - //MonitoringForm monitorForm = (MonitoringForm) form; - Long toolSessionId = WebUtil.readLongParam(request, "toolSessionID", false); - Long userID = WebUtil.readLongParam(request, "userID", false); + Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - GmapUser gmapUser = gmapService.getUserByUserIdAndSessionId(userID, toolSessionId); + // paging parameters of tablesorter + int size = WebUtil.readIntParam(request, "size"); + int page = WebUtil.readIntParam(request, "page"); + Integer sortByName = WebUtil.readIntParam(request, "column[0]", true); + String searchString = request.getParameter("fcol[0]"); - NotebookEntry notebookEntry = gmapService.getEntry(toolSessionId, CoreNotebookConstants.NOTEBOOK_TOOL, - GmapConstants.TOOL_SIGNATURE, userID.intValue()); + int sorting = GmapConstants.SORT_BY_NO; + if (sortByName != null) { + sorting = sortByName.equals(0) ? GmapConstants.SORT_BY_USERNAME_ASC : GmapConstants.SORT_BY_USERNAME_DESC; + } - GmapUserDTO gmapUserDTO = new GmapUserDTO(gmapUser); - gmapUserDTO.setNotebookEntry(notebookEntry.getEntry()); + // return user list according to the given sessionID + GmapSession session = gmapService.getSessionBySessionId(sessionID); + List users = gmapService.getUsersForTablesorter(sessionID, page, size, sorting, searchString, + session.getGmap().isReflectOnActivity()); - request.setAttribute("gmapUserDTO", gmapUserDTO); + JSONArray rows = new JSONArray(); + JSONObject responsedata = new JSONObject(); + responsedata.put("total_rows", gmapService.getCountUsersBySession(session.getUid(), searchString)); + for (Object[] userAndReflection : users) { - return mapping.findForward("notebook"); + JSONObject responseRow = new JSONObject(); + responseRow.put(GmapConstants.ATTR_USER_ID, userAndReflection[0]); + String fullName = new StringBuilder((String)userAndReflection[1]).append(" ").append((String)userAndReflection[2]).toString(); + responseRow.put(GmapConstants.ATTR_USER_FULLNAME, StringEscapeUtils.escapeHtml(fullName)); + + if (userAndReflection.length > 3) { + responseRow.put(GmapConstants.ATTR_PORTRAIT_ID, (Integer)userAndReflection[3]); + } + + if (userAndReflection.length > 4) { + responseRow.put(GmapConstants.ATTR_USER_REFLECTION, userAndReflection[4]); + } + rows.put(responseRow); + } + + responsedata.put("rows", rows); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().print(new String(responsedata.toString())); + return null; + } + } Index: lams_tool_gmap/web/pages/learning/parts/finishButton.jsp =================================================================== diff -u -r39292444607781f756d7fa0766316087d2f638e8 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/web/pages/learning/parts/finishButton.jsp (.../finishButton.jsp) (revision 39292444607781f756d7fa0766316087d2f638e8) +++ lams_tool_gmap/web/pages/learning/parts/finishButton.jsp (.../finishButton.jsp) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -53,7 +53,7 @@
- + Index: lams_tool_gmap/web/pages/monitoring/headItems.jsp =================================================================== diff -u -r5e2c434ec3a9cb4074542bcf6ad70ce6dc73c392 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/web/pages/monitoring/headItems.jsp (.../headItems.jsp) (revision 5e2c434ec3a9cb4074542bcf6ad70ce6dc73c392) +++ lams_tool_gmap/web/pages/monitoring/headItems.jsp (.../headItems.jsp) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -1,11 +1,23 @@ <%@ include file="/common/taglibs.jsp"%> + + + + + + + + - + + + + + Fisheye: Tag 57840657b3f8bbdc314d25b49371fab852bbe40f refers to a dead (removed) revision in file `lams_tool_gmap/web/pages/monitoring/notebook.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_gmap/web/pages/monitoring/summary.jsp =================================================================== diff -u -r5e2c434ec3a9cb4074542bcf6ad70ce6dc73c392 -r57840657b3f8bbdc314d25b49371fab852bbe40f --- lams_tool_gmap/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 5e2c434ec3a9cb4074542bcf6ad70ce6dc73c392) +++ lams_tool_gmap/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 57840657b3f8bbdc314d25b49371fab852bbe40f) @@ -1,7 +1,76 @@ <%@ include file="/common/taglibs.jsp"%> + + +

@@ -12,118 +81,45 @@

- - + - - + -

- - - - -
- - - javascript:clearMap();addUsersForSession${session.sessionID}();addMarkersForSession${session.sessionID}(); -
- + + javascript:clearMap();addUsersForSession${session.sessionID}();addMarkersForSession${session.sessionID}(); + +
-
- - - - - - - - -
- - - - - - - - - - - - - -
- +
+ + + + + + + + + +
- -
 
+ + ${ !isGroupedActivity || ! status.last ? '
 
' : ''} -
-
+ -
- - - - -
- - - - - - - - - - - - - - -
- - - -
- ${session.sessionName} - - ${session.numberOfLearners} - - -
-
-
- - - - -