Index: lams_tool_doku/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rb6338c5ec82064b16083ee6c6ca28da14a245fd6 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision b6338c5ec82064b16083ee6c6ca28da14a245fd6) +++ lams_tool_doku/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -98,4 +98,8 @@ monitoring.summary.gallery.walk.start = Start Gallery Walk monitoring.summary.gallery.walk.start.confirm = Are you sure you want to finish collaboration phase and start Gallery Walk? monitoring.summary.gallery.walk.finish = Finish Gallery Walk -monitoring.summary.gallery.walk.finish.confirm = Are you sure you want to finish Gallery Walk? \ No newline at end of file +monitoring.summary.gallery.walk.finish.confirm = Are you sure you want to finish Gallery Walk? +label.rating = Rating +label.pad.rating.title = Other groups' rating +label.average.rating = Average rating {0}/{1} votes +label.your.rating = Your rating {0}, average rating {1}/{2} votes \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dokumaranApplicationContext.xml =================================================================== diff -u -re606aaebe2ef85c40a4054ef76abf62c94d224a4 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dokumaranApplicationContext.xml (.../dokumaranApplicationContext.xml) (revision e606aaebe2ef85c40a4054ef76abf62c94d224a4) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dokumaranApplicationContext.xml (.../dokumaranApplicationContext.xml) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -61,6 +61,9 @@ + + + Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java =================================================================== diff -u -rb5c36d2f8fb70869f2402ed3457a9513e2db871c -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java (.../SessionDTO.java) (revision b5c36d2f8fb70869f2402ed3457a9513e2db871c) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/dto/SessionDTO.java (.../SessionDTO.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -22,13 +22,16 @@ package org.lamsfoundation.lams.tool.dokumaran.dto; +import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; + public class SessionDTO { private Long sessionId; private String sessionName; private String padId; private String readOnlyPadId; private boolean sessionFaulty; + private ItemRatingDTO itemRatingDto; public Long getSessionId() { return sessionId; @@ -69,4 +72,12 @@ public void setSessionFaulty(boolean sessionFaulty) { this.sessionFaulty = sessionFaulty; } + + public ItemRatingDTO getItemRatingDto() { + return itemRatingDto; + } + + public void setItemRatingDto(ItemRatingDTO ratingDto) { + this.itemRatingDto = ratingDto; + } } \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java =================================================================== diff -u -rb6338c5ec82064b16083ee6c6ca28da14a245fd6 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision b6338c5ec82064b16083ee6c6ca28da14a245fd6) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -31,6 +31,8 @@ import java.util.Map; import java.util.Set; import java.util.SortedMap; +import java.util.function.Function; +import java.util.stream.Collectors; import javax.servlet.http.Cookie; @@ -47,6 +49,10 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; +import org.lamsfoundation.lams.rating.model.RatingCriteria; +import org.lamsfoundation.lams.rating.model.ToolActivityRatingCriteria; +import org.lamsfoundation.lams.rating.service.IRatingService; import org.lamsfoundation.lams.rest.RestTags; import org.lamsfoundation.lams.rest.ToolRestManager; import org.lamsfoundation.lams.tool.ToolCompletionStatus; @@ -102,6 +108,8 @@ private IUserManagementService userManagementService; + private IRatingService ratingService; + private IExportToolContentService exportContentService; private ICoreNotebookService coreNotebookService; @@ -418,13 +426,48 @@ } @Override - public List getSummary(Long contentId) { - List groupList = new ArrayList<>(); - + public List getSummary(Long contentId, Long ratingUserId) { // get all sessions in a dokumaran and retrieve all dokumaran items under this session // plus initial dokumaran items by author creating (resItemList) List sessionList = dokumaranSessionDao.getByContentId(contentId); + Dokumaran dokumaran = dokumaranDao.getByContentId(contentId); + Map itemRatingDtoMap = null; + if (dokumaran.isGalleryWalkStarted()) { + // Dokumaran currently supports only one place for ratings. + // It is rating other groups' pads on results page. + // Criterion gets automatically created and there must be only one. + List criteria = ratingService.getCriteriasByToolContentId(contentId); + if (criteria.size() >= 2) { + throw new IllegalArgumentException("There can be only one criterion for a Dokumaran activity. " + + "If other criteria are introduced, the criterion for rating other groups' answers needs to become uniquely identifiable."); + } + ToolActivityRatingCriteria criterion = null; + if (criteria.isEmpty()) { + criterion = (ToolActivityRatingCriteria) RatingCriteria + .getRatingCriteriaInstance(RatingCriteria.TOOL_ACTIVITY_CRITERIA_TYPE); + criterion.setTitle(messageService.getMessage("label.pad.rating.title")); + criterion.setOrderId(1); + criterion.setRatingStyle(RatingCriteria.RATING_STYLE_STAR); + criterion.setToolContentId(contentId); + + userManagementService.save(criterion); + } else { + criterion = (ToolActivityRatingCriteria) criteria.get(0); + } + + // Item IDs are DokumaranSession session IDs, i.e. a single Etherpad + Set itemIds = sessionList.stream() + .collect(Collectors.mapping(DokumaranSession::getSessionId, Collectors.toSet())); + + List itemRatingDtos = ratingService.getRatingCriteriaDtos(contentId, null, itemIds, false, + ratingUserId); + // Mapping of Item ID -> DTO + itemRatingDtoMap = itemRatingDtos.stream() + .collect(Collectors.toMap(ItemRatingDTO::getItemId, Function.identity())); + } + + List groupList = new ArrayList<>(); for (DokumaranSession session : sessionList) { // one new group for one session. SessionDTO group = new SessionDTO(); @@ -439,6 +482,10 @@ group.setSessionFaulty(true); } + if (itemRatingDtoMap != null) { + group.setItemRatingDto(itemRatingDtoMap.get(session.getSessionId())); + } + groupList.add(group); } @@ -1009,6 +1056,10 @@ this.userManagementService = userManagementService; } + public void setRatingService(IRatingService ratingService) { + this.ratingService = ratingService; + } + public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { this.coreNotebookService = coreNotebookService; } Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java =================================================================== diff -u -rb6338c5ec82064b16083ee6c6ca28da14a245fd6 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java (.../IDokumaranService.java) (revision b6338c5ec82064b16083ee6c6ca28da14a245fd6) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java (.../IDokumaranService.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -213,11 +213,8 @@ /** * Return monitoring summary list. The return value is list of dokumaran summaries for each groups. - * - * @param contentId - * @return */ - List getSummary(Long contentId); + List getSummary(Long contentId, Long ratingUserId); /** * Create refection entry into notebook tool. Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java =================================================================== diff -u -rb6338c5ec82064b16083ee6c6ca28da14a245fd6 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java (.../LearningController.java) (revision b6338c5ec82064b16083ee6c6ca28da14a245fd6) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/LearningController.java (.../LearningController.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -166,9 +166,22 @@ } request.setAttribute(DokumaranConstants.KEY_ETHERPAD_SERVER_URL, etherpadServerUrl); + // reflection information + String entryText = new String(); + if (user != null) { + NotebookEntry notebookEntry = dokumaranService.getEntry(toolSessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + DokumaranConstants.TOOL_SIGNATURE, user.getUserId().intValue()); + if (notebookEntry != null) { + entryText = notebookEntry.getEntry(); + } + } + sessionMap.put(DokumaranConstants.ATTR_REFLECTION_INSTRUCTION, dokumaran.getReflectInstructions()); + sessionMap.put(DokumaranConstants.ATTR_REFLECTION_ENTRY, entryText); + if (dokumaran.isGalleryWalkStarted()) { - List groupList = dokumaranService.getSummary(dokumaran.getContentId()); + List groupList = dokumaranService.getSummary(dokumaran.getContentId(), user.getUserId()); request.setAttribute(DokumaranConstants.ATTR_SUMMARY_LIST, groupList); + if (currentUserDto == null) { currentUserDto = (UserDTO) ss.getAttribute(AttributeNames.USER); } @@ -189,18 +202,6 @@ sessionMap.put(DokumaranConstants.ATTR_IS_LEADER_RESPONSE_FINALIZED, dokumaranService.isLeaderResponseFinalized(leaders)); - // reflection information - String entryText = new String(); - if (user != null) { - NotebookEntry notebookEntry = dokumaranService.getEntry(toolSessionId, CoreNotebookConstants.NOTEBOOK_TOOL, - DokumaranConstants.TOOL_SIGNATURE, user.getUserId().intValue()); - if (notebookEntry != null) { - entryText = notebookEntry.getEntry(); - } - } - sessionMap.put(DokumaranConstants.ATTR_REFLECTION_INSTRUCTION, dokumaran.getReflectInstructions()); - sessionMap.put(DokumaranConstants.ATTR_REFLECTION_ENTRY, entryText); - // add define later support if (dokumaran.isDefineLater()) { return "pages/learning/definelater"; Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java =================================================================== diff -u -rb6338c5ec82064b16083ee6c6ca28da14a245fd6 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision b6338c5ec82064b16083ee6c6ca28da14a245fd6) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -106,7 +106,7 @@ WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID)); Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); - List groupList = dokumaranService.getSummary(contentId); + List groupList = dokumaranService.getSummary(contentId, null); boolean hasFaultySession = false; for (SessionDTO group : groupList) { hasFaultySession |= group.isSessionFaulty(); @@ -282,7 +282,7 @@ dokumaranService.startGalleryWalk(toolContentId); } - + @RequestMapping("/finishGalleryWalk") private void finishGalleryWalk(HttpServletRequest request) throws IOException { Long toolContentId = WebUtil.readLongParam(request, DokumaranConstants.ATTR_TOOL_CONTENT_ID, false); Index: lams_tool_doku/web/pages/learning/galleryWalk.jsp =================================================================== diff -u -rb6338c5ec82064b16083ee6c6ca28da14a245fd6 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/web/pages/learning/galleryWalk.jsp (.../galleryWalk.jsp) (revision b6338c5ec82064b16083ee6c6ca28da14a245fd6) +++ lams_tool_doku/web/pages/learning/galleryWalk.jsp (.../galleryWalk.jsp) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -11,12 +11,27 @@ <fmt:message key="label.learning.title" /> + <%@ include file="/common/header.jsp"%> + + + + <%@ include file="websocket.jsp"%> @@ -62,12 +79,16 @@ -
- + role="tabpanel" aria-labelledby="heading${groupSummary.sessionId}"> + <%-- Do not show rating to own group before Gallery Walk is finished --%> + + + + + showControls="${not dokumaran.galleryWalkFinished and hasEditRight}" showOnDemand="true" height="600" />
Index: lams_tool_doku/web/pages/monitoring/monitoring.jsp =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r368e60d0fd7df1a3e327670ef9d0f3487803110b --- lams_tool_doku/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_tool_doku/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision 368e60d0fd7df1a3e327670ef9d0f3487803110b) @@ -5,6 +5,8 @@ <%@ include file="/common/tabbedheader.jsp" %> + +