Index: lams_tool_preview/conf/hibernate/mappings/org/lamsfoundation/lams/tool/peerreview/model/Peerreview.hbm.xml =================================================================== diff -u -r0a6765ac7eb73c6b99c343a021877c48236241b8 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/conf/hibernate/mappings/org/lamsfoundation/lams/tool/peerreview/model/Peerreview.hbm.xml (.../Peerreview.hbm.xml) (revision 0a6765ac7eb73c6b99c343a021877c48236241b8) +++ lams_tool_preview/conf/hibernate/mappings/org/lamsfoundation/lams/tool/peerreview/model/Peerreview.hbm.xml (.../Peerreview.hbm.xml) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -163,6 +163,14 @@ insert="true" column="notify_users_of_results" /> + + Avg rating {1} out of {2} votes +label.your.rating =Your rating is {0} label.you.gave.rating =You gave a rating of {0} +label.avg.rating = Avg rating {0} out of {1} votes +label.not.rated =You have not rated this user label.rate.limits.reminder =Rate a minimum of {0} and a maximum of {1} users. label.rate.all.users =Rate All Users label.rate.limits.topic.reminder =You have rated {0} users already. @@ -84,7 +86,6 @@ label.rating =Rating label.comment =Comment label.show.ratings.left.for.user =After completion, show feedback left for student -label.ratings.by.others =Ratings by other users label.comment.minimum.number.words =Minimum number of words in a comment{0} label.no.users =There are no users available for rating. Press Refresh to check for new users. label.no.ratings.left =No ratings left @@ -155,4 +156,6 @@ label.total.group.mark=Total team mark label.individual.mark=Individual mark error.edit.not.remove=You may edit but you may not remove a saved comment. -error.unable.save.comments=Unable to save comments \ No newline at end of file +error.unable.save.comments=Unable to save comments +label.show.ratings.left.by.user =After completion, show feedback left by student +label.ratings.by.others =Ratings left for you Index: lams_tool_preview/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r0a6765ac7eb73c6b99c343a021877c48236241b8 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 0a6765ac7eb73c6b99c343a021877c48236241b8) +++ lams_tool_preview/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -32,7 +32,6 @@ monitoring.label.user.name =Name label.monitoring.edit.activity.edit =Edit message.monitoring.edit.activity.not.editable =This Activity is no longer editable -export.title =Export portfolio of Peer Review label.delete =Delete label.edit =Edit label.finished =Next Activity @@ -61,8 +60,12 @@ label.redo =Redo ratings label.rating.criterias =Rating criteria label.add.criteria =Add Criterion -label.your.rating =Your rating is {0}
Avg rating {1} out of {2} votes -label.rate.limits.reminder =Rating limitation: Minimum {0} and Maximum {1}. +label.your.rating =Your rating is {0} +label.you.gave.rating =You gave a rating of {0} +label.avg.rating = Avg rating {0} out of {1} votes +label.not.rated =You have not rated this user +label.rate.limits.reminder =Rate a minimum of {0} and a maximum of {1} users. +label.rate.all.users =Rate All Users label.rate.limits.topic.reminder =You have rated {0} users already. label.rate.limits.reminder.min = You must rate at least {0} users. label.rate.limits.reminder.max = You can only rate up to {0} users. @@ -83,7 +86,6 @@ label.rating =Rating label.comment =Comment label.show.ratings.left.for.user =After completion, show feedback left for student -label.ratings.by.others =Ratings by other users label.comment.minimum.number.words =Minimum number of words in a comment{0} label.no.users =There are no users available for rating. Press Refresh to check for new users. label.no.ratings.left =No ratings left @@ -92,11 +94,12 @@ warning.comment.blank=Comment text is missing. creating.users.message =Please wait while the learners\' details are set up ready for you to review their responses. error.max.ratings.per.user=Unable to save the review - the maximum number of ratings may have been reached. The page will now be refreshed. -export.tool.export.not.supported=This tool does not support export portfolio. -label.rating.rank=Rank +label.review.options=Review Options +label.activity.completion=End of Activity label.rating.style.star=Star Rating label.rating.style.ranking=Ranking label.rating.style.hedging=Hedging +label.rating.style.comment=Comment label.rating.all=ALL label.rating.author.justify=Ask for hedging justification? label.rating.learner.hedge.assign.marks=Assign marks to answers. Max possible mark: 10 @@ -108,7 +111,7 @@ label.assign.marks=Assign up to {0} marks altogether, sharing marks across learners. Current total: {1}. error.assign.marks=The marks must add up to {0}. label.assign.ranks=Fill the boxes with the top {0} entries, by dragging the learners' name onto the box. -error.assign.ranks=You must complete all {0} boxes. +error.assign.ranks=The marks must add up to {0}. label.assign.rankAll=Order the learners in ranking order, from first to last, by dragging learners from the right hand column to the left column. Dragging a name on top of another will put the new name first. All learners must be ranked. error.assign.rankAll=All learners must be ranked. label.ranked=Ranked @@ -137,11 +140,23 @@ event.sent.results.subject=LAMS: {0} results were released event.sent.results.body=

{0}

Your results are:

{1}

This message was send automatically, please do not reply to it.

event.sent.results.criteria.comment=

{0}:

-event.sent.results.criteria.star=

{0} (Star): {1}

+event.sent.results.criteria.star=

{0} (Star): {1}

event.sent.results.criteria.hedge=

{0} (Mark Hedging): {1} out of {2}

event.sent.results.criteria.rank=

{0} (Rank): {1} out of {2}

event.sent.results.criteria.rankAll=

{0} (Rank All): {1}

event.sent.results.no.results=No results msg.results.sent={0} Email(s) Sent button.email.results=Email Results -label.notify.user.of.results=Notify Users of Results \ No newline at end of file +label.notify.user.of.results=Notify Users of Results +label.number.of.team.members=No of team members +label.average=Average +label.for.user=For {0} +label.learner=Student +label.spa.factor=SPA factor +label.total.group.mark=Total team mark +label.individual.mark=Individual mark +error.edit.not.remove=You may edit but you may not remove a saved comment. +error.unable.save.comments=Unable to save comments +label.show.ratings.left.by.user =After completion, show feedback left by student +label.ratings.by.others =Ratings left for you +label.no.ratings.out.of.possible.ratings={0} rating(s) out of {1} possible ratings. \ No newline at end of file Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java =================================================================== diff -u -r1493a89e84185e53ff46dc7fc532850053e8cab2 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision 1493a89e84185e53ff46dc7fc532850053e8cab2) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -174,10 +174,19 @@ sortingOrder = " ORDER BY user.first_name DESC"; break; case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC: - sortingOrder = criteria.isCommentRating() ? " ORDER BY rating.comment ASC" : " ORDER BY rating.average_rating ASC"; + if ( criteria.isCommentRating() ) { + sortingOrder = " ORDER BY rating.comment ASC" ; + } else { + sortingOrder = " ORDER BY rating.average_rating ASC, rating.comment ASC "; + } break; case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC: - sortingOrder = criteria.isCommentRating() ? " ORDER BY rating.comment DESC" : " ORDER BY rating.average_rating DESC"; + if ( criteria.isCommentRating() ) { + sortingOrder = " ORDER BY rating.comment DESC" ; + } else { + sortingOrder = " ORDER BY rating.average_rating DESC, rating.comment ASC "; + } + break; } StringBuilder bldr = new StringBuilder(FIND_USER_RATINGS_COMMENTS1); Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dbupdates/patch20161226.sql =================================================================== diff -u --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dbupdates/patch20161226.sql (revision 0) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dbupdates/patch20161226.sql (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -0,0 +1,15 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +----------------------Put all sql statements below here------------------------- + +-- LDEV-4161: enhancements. Differentiate between showing results left for user and results left by user + +ALTER TABLE tl_laprev11_peerreview ADD COLUMN show_ratings_left_by_user TINYINT(4) DEFAULT '0'; + +----------------------Put all sql statements above here------------------------- + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/model/Peerreview.java =================================================================== diff -u -r0a6765ac7eb73c6b99c343a021877c48236241b8 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/model/Peerreview.java (.../Peerreview.java) (revision 0a6765ac7eb73c6b99c343a021877c48236241b8) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/model/Peerreview.java (.../Peerreview.java) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -75,6 +75,8 @@ private int maximumRatesPerUser; private boolean showRatingsLeftForUser; + + private boolean showRatingsLeftByUser; private boolean reflectOnActivity; @@ -83,7 +85,7 @@ private boolean selfReview; private boolean notifyUsersOfResults; - + // ********************************************************** // Function method for Peerreview // ********************************************************** @@ -402,4 +404,12 @@ public void setNotifyUsersOfResults(boolean notifyUsersOfResults) { this.notifyUsersOfResults = notifyUsersOfResults; } + + public boolean isShowRatingsLeftByUser() { + return showRatingsLeftByUser; + } + + public void setShowRatingsLeftByUser(boolean showRatingsLeftByUser) { + this.showRatingsLeftByUser = showRatingsLeftByUser; + } } Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/peerreviewApplicationContext.xml =================================================================== diff -u -r0a6765ac7eb73c6b99c343a021877c48236241b8 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/peerreviewApplicationContext.xml (.../peerreviewApplicationContext.xml) (revision 0a6765ac7eb73c6b99c343a021877c48236241b8) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/peerreviewApplicationContext.xml (.../peerreviewApplicationContext.xml) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -87,6 +87,7 @@ PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception + PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception PROPAGATION_REQUIRED,-java.lang.Exception Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/IPeerreviewService.java =================================================================== diff -u -r94a97ec342914367da0c2cf3e92f403d473769be -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/IPeerreviewService.java (.../IPeerreviewService.java) (revision 94a97ec342914367da0c2cf3e92f403d473769be) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/IPeerreviewService.java (.../IPeerreviewService.java) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -282,4 +282,7 @@ LinkedHashMap exportTeamReportSpreadsheet(Long toolContentId); int getCountItemsRatedByUserByCriteria(final Long criteriaId, final Integer userId); + + /** For this user, there has be int[0] ratings out of a possible int[1] ratings */ + public int[] getNumberPossibleRatings(Long toolContentId, Long toolSessionId, Long userId); } Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java =================================================================== diff -u -r94a97ec342914367da0c2cf3e92f403d473769be -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java (.../PeerreviewServiceImpl.java) (revision 94a97ec342914367da0c2cf3e92f403d473769be) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java (.../PeerreviewServiceImpl.java) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -86,6 +86,7 @@ import org.lamsfoundation.lams.util.ExcelCell; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.MessageService; +import org.springframework.util.StringUtils; /** * @author Andrey Balan @@ -476,9 +477,9 @@ StringBuilder notificationMessage = new StringBuilder(); for (RatingCriteria criteria : ratingCriterias) { - int sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC; - if (criteria.isRankingStyleRating()) - sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; + int sorting = (criteria.isStarStyleRating() || criteria.isHedgeStyleRating()) + ? PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC + : PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; StyledCriteriaRatingDTO dto = getUsersRatingsCommentsByCriteriaIdDTO(toolContentId, sessionId, criteria, user.getUserId(), false, sorting, null, true, false); generateRatingEntryForEmail(notificationMessage, criteria, dto); @@ -506,9 +507,9 @@ String escaped = StringEscapeUtils.escapeHtml(ratingDto.getComment()); comments.append("
  • ").append(escaped).append("
  • "); } - } - notificationMessage.append(getLocalisedMessage("event.sent.results.criteria.comment", new Object[] { - escapedTitle, comments.toString() })); + }; + notificationMessage.append(getLocalisedMessage("event.sent.results.criteria.comment", + new Object[] { escapedTitle, StringUtils.replace(comments.toString(), "<BR>", "
    ") })); } else { String avgRating = dto.getRatingDtos().get(0).getAverageRating().length() > 0 ? dto.getRatingDtos() .get(0).getAverageRating() : "0"; @@ -562,7 +563,22 @@ } + @Override + public int[] getNumberPossibleRatings(Long toolContentId, Long toolSessionId, Long userId) { + int[] retValue = new int[2]; + ArrayList itemIds = new ArrayList(1); + itemIds.add(userId); + Map numRatingsForUserMap = ratingService.countUsersRatedEachItem(toolContentId, itemIds, -1); + Long numRatingsForUser = numRatingsForUserMap.get(userId); + retValue[0] = numRatingsForUser != null ? numRatingsForUser.intValue() : 0; + + int numUsersInSession = peerreviewUserDao.getCountUsersBySession(toolSessionId); + Peerreview peerreview = peerreviewDao.getByContentId(toolContentId); + retValue[1] = peerreview.isSelfReview() ? numUsersInSession : numUsersInSession - 1; + return retValue; + } + // ***************************************************************************** // private methods // ***************************************************************************** Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/LearningAction.java =================================================================== diff -u -r94a97ec342914367da0c2cf3e92f403d473769be -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/LearningAction.java (.../LearningAction.java) (revision 94a97ec342914367da0c2cf3e92f403d473769be) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/LearningAction.java (.../LearningAction.java) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -370,17 +370,19 @@ // finally, work out which page to go to! if (user.isSessionFinished()) { ActionRedirect redirect; - if ( peerreview.isShowRatingsLeftForUser() || entryText.length() > 0 ) { - redirect = new ActionRedirect(mapping.findForwardConfig("showResults")); + if ( peerreview.isShowRatingsLeftForUser() || peerreview.isShowRatingsLeftByUser() || entryText.length() > 0 ) { + redirect = new ActionRedirect(mapping.findForwardConfig("showResults")); + redirect.addParameter(PeerreviewConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + return redirect; } else if ( peerreview.isReflectOnActivity() ) { // do reflection - redirect = new ActionRedirect(mapping.findForwardConfig("newReflection")); + redirect = new ActionRedirect(mapping.findForwardConfig("newReflection")); + redirect.addParameter(PeerreviewConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + return redirect; } else { // finish - redirect = new ActionRedirect(mapping.findForwardConfig("finish")); + return finish(mapping, form, request, response); } - redirect.addParameter(PeerreviewConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - return redirect; } else { return doEdit(mapping, request, service, sessionMap, sessionId, peerreview, newCriteria); } @@ -411,27 +413,43 @@ sessionMap.put(PeerreviewConstants.ATTR_USER_FINISHED, true); } - // ratings left by the user + // ratings left by and by the user List ratingCriterias = service.getRatingCriterias(peerreview.getContentId()); - List allUsersDtos = new ArrayList(ratingCriterias.size()); - List currentUserDtos = new ArrayList(ratingCriterias.size()); - + List allUsersDtos = peerreview.isShowRatingsLeftByUser() + ? new ArrayList(ratingCriterias.size()) + : null; + List currentUserDtos = peerreview.isShowRatingsLeftForUser() + ? new ArrayList(ratingCriterias.size()) + : null; + for (RatingCriteria criteria : ratingCriterias) { boolean showAllUsers = peerreview.isSelfReview() || criteria.isRankingStyleRating() || criteria.isHedgeStyleRating() || (mode != null && mode.isTeacher()); - int sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC; - if (criteria.isRankingStyleRating()) - sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; - allUsersDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), sessionId, criteria, - user.getUserId(), false, sorting, null, showAllUsers, true)); - currentUserDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), sessionId, criteria, - user.getUserId(), false, sorting, null, showAllUsers, false)); + + int sorting = (criteria.isStarStyleRating() || criteria.isHedgeStyleRating()) + ? PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC + : PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; + + if ( allUsersDtos!=null ) + allUsersDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), sessionId, + criteria, user.getUserId(), false, sorting, null, showAllUsers, true)); + if ( currentUserDtos!=null ) + currentUserDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), + sessionId, criteria, user.getUserId(), false, sorting, null, showAllUsers, false)); + } - request.setAttribute("allCriteriaRatings", allUsersDtos); - request.setAttribute("userRatings", currentUserDtos); + if ( allUsersDtos!=null ) + request.setAttribute("allCriteriaRatings", allUsersDtos); + if ( currentUserDtos!=null ) + request.setAttribute("userRatings", currentUserDtos); + + int[] numPossibleRatings = service.getNumberPossibleRatings(peerreview.getContentId(), sessionId, user.getUserId()); + request.setAttribute("numberRatings", numPossibleRatings[0]); + request.setAttribute("numberPotentialRatings", numPossibleRatings[1]); + // check whether finish lock is enabled sessionMap.put(PeerreviewConstants.ATTR_FINISH_LOCK, peerreview.getLockWhenFinished()); Index: lams_tool_preview/web/WEB-INF/tags/StyledRating.tag =================================================================== diff -u -r3b619df5e7e11dab1dc49859d23399a4b179c16f -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) +++ lams_tool_preview/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -89,10 +89,17 @@ ${criteriaRatings.ratingCriteria.ratingCriteriaId}-${rating.itemId}
    ${rating.userRating} -
    - - ${userRating} + + + + + + ${userRating} + + +
    + ${rating.averageRating} ${rating.numberOfVotes} @@ -120,11 +127,8 @@
    ${criteriaRatings.ratingCriteria.ratingCriteriaId}-${rating.itemId}
    - ${rating.userRating} -
    - - ${userRating} + ${rating.averageRating} ${rating.numberOfVotes} Index: lams_tool_preview/web/pages/authoring/advance.jsp =================================================================== diff -u -r0a6765ac7eb73c6b99c343a021877c48236241b8 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/web/pages/authoring/advance.jsp (.../advance.jsp) (revision 0a6765ac7eb73c6b99c343a021877c48236241b8) +++ lams_tool_preview/web/pages/authoring/advance.jsp (.../advance.jsp) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -25,6 +25,12 @@
    + +
    + +
    Index: lams_tool_preview/web/pages/learning/results.jsp =================================================================== diff -u -r2cad2462df185fce685da61762fb06d98ebee415 -rc1f2aa0761a3d79b04018fb752e069f366ccd15b --- lams_tool_preview/web/pages/learning/results.jsp (.../results.jsp) (revision 2cad2462df185fce685da61762fb06d98ebee415) +++ lams_tool_preview/web/pages/learning/results.jsp (.../results.jsp) (revision c1f2aa0761a3d79b04018fb752e069f366ccd15b) @@ -100,7 +100,7 @@ - + @@ -109,17 +109,25 @@
    - +
    + + +
    + + + ${numberRatings}${numberPotentialRatings} + +