Index: lams_tool_preview/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -119,4 +119,13 @@ label.step=Step {0} of {1} label.mark=Mark label.rank=Rank -label.authoring.self.review=Allow Self Review \ No newline at end of file +label.authoring.self.review=Allow Self Review +label.monitoring.num.of.comments={0} Comments +label.monitoring.instructions.rank.all.learners=Learners needed to rank ALL the learners. +label.monitoring.instructions.rank.some.learners=Learners needed to rank {0} learners. +label.monitoring.instructions.assign.some.marks=Learners needed to assign {0} marks altogether. +label.learning.your.rankings.shown.in.brackets=(Your rankings shown in brackets after name) +label.learning.your.marks.shown.in.brackets=(Your marks shown in brackets after name) +label.learning.average.rankings=Average Rankings: +label.learning.average.marks=Average Marks: +label.learning.your.justification=Your justification: \ No newline at end of file Index: lams_tool_preview/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -120,4 +120,13 @@ label.step=Step {0} of {1} label.mark=Mark label.rank=Rank -label.authoring.self.review=Allow Self Review \ No newline at end of file +label.authoring.self.review=Allow Self Review +label.monitoring.num.of.comments={0} Comments +label.monitoring.instructions.rank.all.learners=Learners needed to rank ALL the learners. +label.monitoring.instructions.rank.some.learners=Learners needed to rank {0} learners. +label.monitoring.instructions.assign.some.marks=Learners needed to assign {0} marks altogether. +label.learning.your.rankings.shown.in.brackets=(Your rankings shown in brackets after name) +label.learning.your.marks.shown.in.brackets=(Your marks shown in brackets after name) +label.learning.average.rankings=Average Rankings: +label.learning.average.marks=Average Marks: +label.learning.your.justification=Your justification: \ No newline at end of file Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/PeerreviewConstants.java =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/PeerreviewConstants.java (.../PeerreviewConstants.java) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/PeerreviewConstants.java (.../PeerreviewConstants.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -64,7 +64,8 @@ public static final String PARAM_SEARCH_FIELD = "searchField"; public static final String PARAM_SEARCH_OPERATION = "searchOper"; public static final String PARAM_SEARCH_STRING = "searchString"; - public static final String PARAM_ROW_NAME = "userName"; + public static final String PARAM_SORT_NAME = "itemDescription"; + public static final String PARAM_SORT_RATING = "rating"; public static final String PARAM_TIME_TAKEN = "timeTaken"; public static final String PARAM_AVG_TIME_TAKEN = "avgTimeTaken"; public static final String PARAM_AVG_MARK = "avgMark"; @@ -89,6 +90,8 @@ public static final String ATTR_PEERREVIEW = "peerreview"; + public static final String ATTR_CRITERIAS = "criterias"; + public static final String ATTR_NEXT_ACTIVITY_URL = "nextActivityUrl"; public static final String ATTR_SUMMARY_LIST = "summaryList"; Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java (.../PeerreviewUserDAO.java) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/PeerreviewUserDAO.java (.../PeerreviewUserDAO.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -47,9 +47,14 @@ List getUsersForTablesorter(final Long toolSessionId, final Long excludeUserId, int page, int size, int sorting); - List getRatingsComments(Long toolContentId, RatingCriteria criteria, Long userId, Integer page, + List getRatingsComments(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long userId, Integer page, Integer size, int sorting, boolean getByUser, IRatingService coreRatingService); - + + List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, + Integer page, Integer size, int sorting); + + List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, Long itemId ); + int getCountUsersBySession(Long toolSessionId); int createUsersForSession(PeerreviewSession session); Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/dao/hibernate/PeerreviewUserDAOHibernate.java (.../PeerreviewUserDAOHibernate.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -157,32 +157,32 @@ // See PeerreviewServiceImpl.getUsersRatingsCommentsByCriteriaId private static final String FIND_USER_RATINGS_COMMENTS1 = "SELECT user.user_id, rating.*, user.first_name, user.last_name " + " FROM tl_laprev11_peerreview p " - + " JOIN tl_laprev11_session sess ON p.content_id = :toolContentId AND p.uid = sess.peerreview_uid " + + " JOIN tl_laprev11_session sess ON p.content_id = :toolContentId AND p.uid = sess.peerreview_uid AND sess.session_id = :toolSessionId " + " JOIN tl_laprev11_user user ON user.session_uid = sess.uid " + " LEFT JOIN ( "; private static final String FIND_USER_RATINGS_COMMENTS2 = " ) rating ON user.user_id = rating.item_id "; @SuppressWarnings("unchecked") @Override - public List getRatingsComments(Long toolContentId, RatingCriteria criteria, Long userId, Integer page, + public List getRatingsComments(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long userId, Integer page, Integer size, int sorting, boolean getByUser, IRatingService coreRatingService) { String sortingOrder = ""; switch (sorting) { case PeerreviewConstants.SORT_BY_NO: - sortingOrder = "ORDER BY user.user_id"; + sortingOrder = " ORDER BY user.user_id"; break; case PeerreviewConstants.SORT_BY_USERNAME_ASC: - sortingOrder = "ORDER BY user.first_name ASC"; + sortingOrder = " ORDER BY user.first_name ASC"; break; case PeerreviewConstants.SORT_BY_USERNAME_DESC: - sortingOrder = "ORDER BY user.first_name DESC"; + 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"; + sortingOrder = criteria.isCommentRating() ? " ORDER BY rating.comment ASC" : " ORDER BY rating.average_rating ASC"; break; case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC: - sortingOrder = criteria.isCommentRating() ? "ORDER BY rating.comment DESC" : "ORDER BY rating.average_rating DESC"; + sortingOrder = criteria.isCommentRating() ? " ORDER BY rating.comment DESC" : " ORDER BY rating.average_rating DESC"; } StringBuilder bldr = new StringBuilder(FIND_USER_RATINGS_COMMENTS1); @@ -196,6 +196,7 @@ String queryString = bldr.toString(); Query query = getSession().createSQLQuery(queryString) .setLong("toolContentId", toolContentId) + .setLong("toolSessionId", toolSessionId) .setLong("ratingCriteriaId", criteria.getRatingCriteriaId()); if ( queryString.contains(":userId") ) { query.setLong("userId", userId); @@ -206,4 +207,69 @@ return (List) query.list(); } + // Part of this and the next method should be moved out to RatingDAO in common but not sure on usage at present so leave it here for now. The code is + // used in peer review monitoring and probably wouldn't be used by other tools. + // when joining to comments, item_id = :itemId picks up the comments for star and comment styles, while item_id = rating_criteria_id + // picks up the justification comments left for hedging (which is one comment per user for all ratings for this criteria) + private static final String SELECT_ALL_RATINGS_COMMENTS_LEFT_FOR_ITEM = "SELECT user.user_id, rc.comment, r.rating, user.first_name, user.last_name " + + " FROM tl_laprev11_peerreview p " + + " JOIN tl_laprev11_session sess ON p.content_id = :toolContentId AND p.uid = sess.peerreview_uid AND sess.session_id = :toolSessionId " + + " JOIN tl_laprev11_user user ON user.session_uid = sess.uid " + + " LEFT JOIN ( SELECT rating, user_id FROM lams_rating " + + " WHERE rating_criteria_id = :ratingCriteriaId AND item_id = :itemId) r ON r.user_id = user.user_id " + + " LEFT JOIN ( SELECT item_id, comment, user_id FROM lams_rating_comment " + + " WHERE rating_criteria_id = :ratingCriteriaId AND (item_id = :itemId || item_id = rating_criteria_id) ) rc ON rc.user_id = user.user_id " + + " WHERE r.rating IS NOT NULL OR rc.comment IS NOT NULL"; + public List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, Long itemId ) { + Query query = getSession().createSQLQuery(SELECT_ALL_RATINGS_COMMENTS_LEFT_FOR_ITEM) + .setLong("toolContentId", toolContentId) + .setLong("toolSessionId", toolSessionId) + .setLong("ratingCriteriaId", criteriaId) + .setLong("itemId", itemId); + return (List) query.list(); + } + + private static final String COUNT_COMMENTS_FOR_SESSION = "SELECT user.user_id, rating.comment_count, user.first_name, user.last_name " + + " FROM tl_laprev11_peerreview p " + + " JOIN tl_laprev11_session sess ON p.content_id = :toolContentId AND p.uid = sess.peerreview_uid AND sess.session_id = :toolSessionId " + + " JOIN tl_laprev11_user user ON user.session_uid = sess.uid " + + " LEFT JOIN ( " + + " SELECT r.item_id, count(r.comment) comment_count " + + " FROM lams_rating_comment r " + + " WHERE r.rating_criteria_id = :ratingCriteriaId " + + " GROUP BY r.item_id ) rating ON user.user_id = rating.item_id "; + public List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, + Integer page, Integer size, int sorting) { + String sortingOrder = ""; + switch (sorting) { + case PeerreviewConstants.SORT_BY_NO: + sortingOrder = " ORDER BY user.user_id"; + break; + case PeerreviewConstants.SORT_BY_USERNAME_ASC: + sortingOrder = " ORDER BY user.first_name ASC"; + break; + case PeerreviewConstants.SORT_BY_USERNAME_DESC: + sortingOrder = " ORDER BY user.first_name DESC"; + break; + case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC: + sortingOrder = " ORDER BY rating.comment_count ASC"; + break; + case PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC: + sortingOrder = " ORDER BY rating.comment_count DESC"; + } + + StringBuilder bldr = new StringBuilder(COUNT_COMMENTS_FOR_SESSION); + bldr.append(sortingOrder); + + String queryString = bldr.toString(); + Query query = getSession().createSQLQuery(queryString) + .setLong("toolContentId", toolContentId) + .setLong("toolSessionId", toolSessionId) + .setLong("ratingCriteriaId", criteria.getRatingCriteriaId()); + if ( page != null && size != null ) { + query.setFirstResult(page * size).setMaxResults(size); + } + return (List) query.list(); + } + } Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/IPeerreviewService.java =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/IPeerreviewService.java (.../IPeerreviewService.java) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/IPeerreviewService.java (.../IPeerreviewService.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -257,14 +257,25 @@ * If you want the ratings done *for* user XYZ, set getByUser to true and currentUser id to XYZ's user id. * user, set getByUser to false and set currentUserId to the current user id. */ - StyledCriteriaRatingDTO getUsersRatingsCommentsByCriteriaIdDTO(Long toolContentId, RatingCriteria criteria, + StyledCriteriaRatingDTO getUsersRatingsCommentsByCriteriaIdDTO(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long currentUserId, boolean skipRatings, int sorting, boolean getAllUsers, boolean getByUser); /** * Gets all the users in the session and any existing ratings for a given criteria in JSON format. */ - JSONArray getUsersRatingsCommentsByCriteriaIdJSON(Long toolContentId, RatingCriteria criteria, Long currentUserId, + JSONArray getUsersRatingsCommentsByCriteriaIdJSON(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long currentUserId, Integer page, Integer size, int sorting, boolean getAllUsers, boolean getByUser, boolean needRatesPerUser) throws JSONException ; + /** + * Gets all the users in the session and the ratings / comments they have left for a particular learner. Used by monitoring. + */ + List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, Long itemId ); + + /** + * Gets all the users in the session and the number of comments that have been left for them. Used by monitoring. + */ + List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, + Integer page, Integer size, int sorting); + String getLocalisedMessage(String key, Object[] args); } Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java (.../PeerreviewServiceImpl.java) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/service/PeerreviewServiceImpl.java (.../PeerreviewServiceImpl.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -23,13 +23,15 @@ package org.lamsfoundation.lams.tool.peerreview.service; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.SortedMap; import java.util.SortedSet; @@ -367,14 +369,14 @@ } @Override - public StyledCriteriaRatingDTO getUsersRatingsCommentsByCriteriaIdDTO(Long toolContentId, RatingCriteria criteria, + public StyledCriteriaRatingDTO getUsersRatingsCommentsByCriteriaIdDTO(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long currentUserId, boolean skipRatings, int sorting, boolean getAllUsers, boolean getByUser) { if ( skipRatings ) { return ratingService.convertToStyledDTO(criteria, currentUserId, getAllUsers, null); } - List rawData = peerreviewUserDao.getRatingsComments(toolContentId, criteria, + List rawData = peerreviewUserDao.getRatingsComments(toolContentId, toolSessionId, criteria, currentUserId, null, null, sorting, getByUser, ratingService); for ( Object[] raw : rawData ) { @@ -388,10 +390,10 @@ } @Override - public JSONArray getUsersRatingsCommentsByCriteriaIdJSON(Long toolContentId, RatingCriteria criteria, Long currentUserId, + public JSONArray getUsersRatingsCommentsByCriteriaIdJSON(Long toolContentId, Long toolSessionId, RatingCriteria criteria, Long currentUserId, Integer page, Integer size, int sorting, boolean getAllUsers, boolean getByUser, boolean needRatesPerUser) throws JSONException { - List rawData = peerreviewUserDao.getRatingsComments(toolContentId, criteria, + List rawData = peerreviewUserDao.getRatingsComments(toolContentId, toolSessionId, criteria, currentUserId, page, size, sorting, getByUser, ratingService); for ( Object[] raw : rawData ) { @@ -404,7 +406,40 @@ return ratingService.convertToStyledJSON(criteria, currentUserId, !getByUser || getAllUsers, rawData, needRatesPerUser); } + @Override + public List getDetailedRatingsComments(Long toolContentId, Long toolSessionId, Long criteriaId, Long itemId ) { + NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); + numberFormat.setMaximumFractionDigits(1); + + // raw data: user_id, comment, rating, first_name, last_name + List rawData = peerreviewUserDao.getDetailedRatingsComments( toolContentId, toolSessionId, criteriaId, itemId ); + for ( Object[] raw : rawData ) { + raw[2] = ( raw[2] == null ? null : numberFormat.format((Float) raw[2])); // format rating + // format name + StringBuilder description = new StringBuilder((String)raw[3] ).append(" ").append((String)raw[4]); + raw[4] = (Object) StringEscapeUtils.escapeCsv(description.toString()); + + } + return rawData; + } + @Override + public List getCommentsCounts(Long toolContentId, Long toolSessionId, RatingCriteria criteria, + Integer page, Integer size, int sorting) { + + List rawData = peerreviewUserDao.getCommentsCounts(toolContentId, toolSessionId, criteria, + page, size, sorting); + + // raw data: user_id, comment_count, first_name, last_name + for ( Object[] raw : rawData ) { + StringBuilder description = new StringBuilder((String)raw[2] ).append(" ").append((String)raw[3]); + raw[3] = (Object) StringEscapeUtils.escapeCsv(description.toString()); + } + + return rawData; + } + + // ***************************************************************************** // private methods // ***************************************************************************** Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/LearningAction.java =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/LearningAction.java (.../LearningAction.java) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/LearningAction.java (.../LearningAction.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -121,12 +121,7 @@ if (param.equals("submitReflection")) { return submitReflection(mapping, form, request, response); } - - if (param.equals("getUsersMonitoring")) { - return getUsersMonitoring(mapping, form, request, response); - } - return mapping.findForward(PeerreviewConstants.ERROR); } @@ -311,8 +306,7 @@ if (!user.isSessionFinished()) { // mark user as finished if there are not any criterias or we have processed the last one. List criterias = service.getCriteriasByToolContentId(peerreview.getContentId()); - sessionMap.put("numCriteria", criterias.size()); - + if (criterias.size() > 0) { if (currentCriteria == null) { // get the first one @@ -341,12 +335,23 @@ } } - } if (newCriteria == null) { user.setSessionFinished(true); service.createUser(user); + } else { + // work out the step details. + int numCriteria = criterias.size(); + request.setAttribute("numCriteria", numCriteria); + + int stepNum=1; + for (RatingCriteria toCheck : criterias) { + if ( newCriteria.getRatingCriteriaId() == toCheck.getRatingCriteriaId() ) + break; + stepNum++; + } + request.setAttribute("stepNumber", stepNum); } } @@ -411,9 +416,9 @@ int sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC; if (criteria.isRankingStyleRating()) sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; - allUsersDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), criteria, + allUsersDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), sessionId, criteria, user.getUserId(), false, sorting, showAllUsers, true)); - currentUserDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), criteria, + currentUserDtos.add(service.getUsersRatingsCommentsByCriteriaIdDTO(peerreview.getContentId(), sessionId, criteria, user.getUserId(), false, sorting, showAllUsers, false)); } @@ -431,116 +436,7 @@ return mapping.findForward(PeerreviewConstants.SUCCESS); } - /** - * Refreshes user list. TODO remove once monitoring is done. - */ - public ActionForward getUsersMonitoring(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse res) throws IOException, ServletException, JSONException { - IPeerreviewService service = getPeerreviewService(); - // get back SessionMap - String sessionMapID = request.getParameter(PeerreviewConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - Peerreview peerreview = (Peerreview) sessionMap.get(PeerreviewConstants.ATTR_PEERREVIEW); - - Long toolContentId = WebUtil.readLongParam(request, "toolContentId"); - Long toolSessionId = WebUtil.readLongParam(request, "toolSessionId"); - - // in case of monitoring we show all results. in case of learning - don't show results from the current user - boolean isMonitoring = WebUtil.readBooleanParam(request, "isMonitoring", false); - Long userId = isMonitoring ? -1 : WebUtil.readLongParam(request, "userId"); - - // paging parameters of tablesorter - int size = WebUtil.readIntParam(request, "size"); - int page = WebUtil.readIntParam(request, "page"); - Integer isSort1 = WebUtil.readIntParam(request, "column[0]", true); - - int sorting = PeerreviewConstants.SORT_BY_NO; - if (isSort1 != null && isSort1.equals(0)) { - sorting = PeerreviewConstants.SORT_BY_USERNAME_ASC; - } else if (isSort1 != null && isSort1.equals(1)) { - sorting = PeerreviewConstants.SORT_BY_USERNAME_DESC; - } - - List users = service.getUsersForTablesorter(toolSessionId, userId, page, size, sorting); - - JSONObject responcedata = new JSONObject(); - JSONArray rows = new JSONArray(); - - responcedata.put("total_rows", service.getCountUsersBySession(toolSessionId, userId)); - - // handle rating criterias - List itemRatingDtos = null; - if (!users.isEmpty()) { - // create itemIds list - List itemIds = new LinkedList(); - for (PeerreviewUser user : users) { - itemIds.add(user.getUserId()); - } - - // all comments required only for monitoring - boolean isCommentsByOtherUsersRequired = isMonitoring; - boolean isCountUsersRatedEachItem = peerreview.getMaximumRatesPerUser() != 0; - itemRatingDtos = service.getRatingCriteriaDtos(toolContentId, itemIds, isCommentsByOtherUsersRequired, - userId, isCountUsersRatedEachItem); - - // store how many items are rated - int countRatedQuestions = service.getCountItemsRatedByUser(toolContentId, userId.intValue()); - responcedata.put(AttributeNames.ATTR_COUNT_RATED_ITEMS, countRatedQuestions); - } - - for (PeerreviewUser user : users) { - - JSONObject userRow = new JSONObject(); - userRow.put("userId", user.getUserId().toString()); - userRow.put("userName", StringEscapeUtils.escapeCsv(user.getFirstName() + " " + user.getLastName())); - - // find corresponding itemRatingDto - ItemRatingDTO itemRatingDto = null; - for (ItemRatingDTO itemRatingDtoIter : itemRatingDtos) { - if (user.getUserId().equals(itemRatingDtoIter.getItemId())) { - itemRatingDto = itemRatingDtoIter; - break; - } - } - userRow.put("ratesPerUser", itemRatingDto.getCountUsersRatedEachItem()); - - JSONArray criteriasRows = new JSONArray(); - for (ItemRatingCriteriaDTO criteriaDto : itemRatingDto.getCriteriaDtos()) { - JSONObject criteriasRow = new JSONObject(); - criteriasRow.put("ratingCriteriaId", criteriaDto.getRatingCriteria().getRatingCriteriaId()); - criteriasRow.put("title", StringEscapeUtils.escapeHtml(criteriaDto.getRatingCriteria().getTitle())); - criteriasRow.put("averageRating", criteriaDto.getAverageRating()); - criteriasRow.put("numberOfVotes", criteriaDto.getNumberOfVotes()); - criteriasRow.put("userRating", criteriaDto.getUserRating()); - criteriasRow.put("ratingStyle", criteriaDto.getRatingCriteria().getRatingStyle()); - - criteriasRows.put(criteriasRow); - } - userRow.put("criteriaDtos", criteriasRows); - - // handle comments - userRow.put("commentsCriteriaId", itemRatingDto.getCommentsCriteriaId()); - String commentPostedByUser = itemRatingDto.getCommentPostedByUser() == null ? "" - : itemRatingDto.getCommentPostedByUser().getComment(); - userRow.put("commentPostedByUser", StringEscapeUtils.escapeCsv(commentPostedByUser)); - if (itemRatingDto.getCommentDtos() != null) { - JSONArray comments = new JSONArray(); - for (RatingCommentDTO commentDto : itemRatingDto.getCommentDtos()) { - comments.put(StringEscapeUtils.escapeCsv(commentDto.getComment())); - } - userRow.put("comments", comments); - } - - rows.put(userRow); - } - responcedata.put("rows", rows); - - res.setContentType("application/json;charset=utf-8"); - res.getWriter().print(new String(responcedata.toString())); - return null; - } /** * Gets a paged set of data for stars or comments. These are directly saved to the database, not through * LearnerAction like Ranking and Hedging. @@ -559,9 +455,7 @@ Long toolContentId = WebUtil.readLongParam(request, "toolContentId"); Long toolSessionId = WebUtil.readLongParam(request, "toolSessionId"); - // in case of monitoring we show all results. in case of learning - don't show results from the current user - boolean isMonitoring = WebUtil.readBooleanParam(request, "isMonitoring", false); - Long userId = isMonitoring ? -1 : WebUtil.readLongParam(request, "userId"); + Long userId = WebUtil.readLongParam(request, "userId"); // paging parameters of tablesorter int size = WebUtil.readIntParam(request, "size"); @@ -580,10 +474,9 @@ JSONObject responsedata = new JSONObject(); responsedata.put("total_rows", service.getCountUsersBySession(toolSessionId, userId)); - responsedata.put("rows", service.getUsersRatingsCommentsByCriteriaIdJSON(toolContentId, criteria, userId, + responsedata.put("rows", service.getUsersRatingsCommentsByCriteriaIdJSON(toolContentId, toolSessionId, criteria, userId, page, size, sorting, peerreview.isSelfReview(), true, peerreview.getMaximumRatesPerUser() > 0 )); - // store how many items are rated - not correct at present. int countRatedQuestions = service.getCountItemsRatedByUser(toolContentId, userId.intValue()); responsedata.put(AttributeNames.ATTR_COUNT_RATED_ITEMS, countRatedQuestions); @@ -640,7 +533,7 @@ Long userId = ( mode != null && mode.isTeacher() ) ? -1 : user.getUserId(); - StyledCriteriaRatingDTO dto = service.getUsersRatingsCommentsByCriteriaIdDTO(toolContentId, criteria, userId, + StyledCriteriaRatingDTO dto = service.getUsersRatingsCommentsByCriteriaIdDTO(toolContentId, toolSessionId, criteria, userId, (criteria.isCommentRating() || criteria.isStarStyleRating()), PeerreviewConstants.SORT_BY_USERNAME_ASC, peerreview.isSelfReview(), true ); Index: lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/MonitoringAction.java =================================================================== diff -u -r2f725f8ef2aa09a2663b2335bf67213074426d11 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 2f725f8ef2aa09a2663b2335bf67213074426d11) +++ lams_tool_preview/src/java/org/lamsfoundation/lams/tool/peerreview/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -25,8 +25,8 @@ package org.lamsfoundation.lams.tool.peerreview.web.action; import java.io.IOException; +import java.math.BigInteger; import java.util.HashMap; -import java.util.LinkedList; import java.util.List; import javax.servlet.ServletException; @@ -46,6 +46,9 @@ import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; import org.lamsfoundation.lams.rating.dto.RatingCommentDTO; import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.dto.StyledCriteriaRatingDTO; +import org.lamsfoundation.lams.rating.dto.StyledRatingDTO; +import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.peerreview.PeerreviewConstants; import org.lamsfoundation.lams.tool.peerreview.dto.GroupSummary; import org.lamsfoundation.lams.tool.peerreview.dto.ReflectDTO; @@ -71,6 +74,9 @@ if (param.equals("summary")) { return summary(mapping, form, request, response); } + if (param.equals("criteria")) { + return criteria(mapping, form, request, response); + } if (param.equals("getUsers")) { return getUsers(mapping, form, request, response); } @@ -117,9 +123,41 @@ sessionMap.put(PeerreviewConstants.ATTR_PEERREVIEW, peerreview); sessionMap.put(PeerreviewConstants.ATTR_TOOL_CONTENT_ID, contentId); sessionMap.put(PeerreviewConstants.ATTR_IS_GROUPED_ACTIVITY, service.isGroupedActivity(contentId)); + + List criterias = service.getRatingCriterias(contentId); + request.setAttribute(PeerreviewConstants.ATTR_CRITERIAS, criterias); return mapping.findForward(PeerreviewConstants.SUCCESS); } +// private void setupRankHedgeData(HttpServletRequest request, Long contentId, IPeerreviewService service, RatingCriteria criteria) { +// int sorting = criteria.isHedgeStyleRating() ? PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC : (criteria +// .isRankingStyleRating() ? PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC +// : PeerreviewConstants.SORT_BY_USERNAME_ASC); +// StyledCriteriaRatingDTO dto = service.getUsersRatingsCommentsByCriteriaIdDTO(contentId, criteria, -1L, +// false, sorting, true, true); +// request.setAttribute("criteriaRatings", dto); +// } + + private ActionForward criteria(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + String sessionMapID = request.getParameter(PeerreviewConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + request.setAttribute(PeerreviewConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + Long contentId = (Long) sessionMap.get(PeerreviewConstants.ATTR_TOOL_CONTENT_ID); + Long toolSessionId = WebUtil.readLongParam(request, "toolSessionId"); + + IPeerreviewService service = getPeerreviewService(); + Long criteriaId = WebUtil.readLongParam(request, "criteriaId"); + RatingCriteria criteria = service.getCriteriaByCriteriaId(criteriaId); + + request.setAttribute("criteria", criteria); + request.setAttribute("toolSessionId", toolSessionId); + return mapping.findForward(PeerreviewConstants.SUCCESS); + } + /** * Refreshes user list. */ @@ -129,95 +167,106 @@ Long toolContentId = WebUtil.readLongParam(request, "toolContentId"); Long toolSessionId = WebUtil.readLongParam(request, "toolSessionId"); + Long criteriaId = WebUtil.readLongParam(request, "criteriaId"); + RatingCriteria criteria = service.getCriteriaByCriteriaId(criteriaId); + // Getting the params passed in from the jqGrid int page = WebUtil.readIntParam(request, PeerreviewConstants.PARAM_PAGE) - 1; int size = WebUtil.readIntParam(request, PeerreviewConstants.PARAM_ROWS); String sortOrder = WebUtil.readStrParam(request, PeerreviewConstants.PARAM_SORD); String sortBy = WebUtil.readStrParam(request, PeerreviewConstants.PARAM_SIDX, true); - int sorting = PeerreviewConstants.SORT_BY_NO; - if (sortBy != null && sortBy.equals(PeerreviewConstants.PARAM_ROW_NAME)) { + int sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC; + if ( criteria.isRankingStyleRating() ) + sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; + else if ( criteria.isCommentRating() ) + sorting = PeerreviewConstants.SORT_BY_USERNAME_ASC; + + if (sortBy != null && sortBy.equals(PeerreviewConstants.PARAM_SORT_NAME)) { if (sortOrder != null && sortOrder.equals(PeerreviewConstants.SORT_DESC)) { sorting = PeerreviewConstants.SORT_BY_USERNAME_DESC; } else { sorting = PeerreviewConstants.SORT_BY_USERNAME_ASC; } + } else if (sortBy != null && sortBy.equals(PeerreviewConstants.PARAM_SORT_RATING)) { + if (sortOrder != null && sortOrder.equals(PeerreviewConstants.SORT_DESC)) { + sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_DESC; + } else { + sorting = PeerreviewConstants.SORT_BY_AVERAGE_RESULT_ASC; + } } // in case of monitoring we show all results. in case of learning - don't show results from the current user - Long userId = -1L; - List users = service.getUsersForTablesorter(toolSessionId, userId, page, size, sorting); - + Long dummyUserId = -1L; + JSONObject responcedata = new JSONObject(); - JSONArray rows = new JSONArray(); responcedata.put("page", page + 1); - responcedata.put("total", Math.ceil((float) service.getCountUsersBySession(toolSessionId, userId) / size)); - responcedata.put("records", service.getCountUsersBySession(toolSessionId, userId)); + responcedata.put("total", Math.ceil((float) service.getCountUsersBySession(toolSessionId, dummyUserId) / size)); + responcedata.put("records", service.getCountUsersBySession(toolSessionId, dummyUserId)); - // handle rating criterias - List itemRatingDtos = null; - if (!users.isEmpty()) { - // create itemIds list - List itemIds = new LinkedList(); - for (PeerreviewUser user : users) { - itemIds.add(user.getUserId()); - } + JSONArray rows = new JSONArray(); - boolean isCommentsByOtherUsersRequired = false; - itemRatingDtos = service.getRatingCriteriaDtos(toolContentId, itemIds, isCommentsByOtherUsersRequired, - userId); - } + if (criteria.isCommentRating()) { + // special db lookup just for this - gets the user's & how many comments left for them + List rawRows = service.getCommentsCounts(toolContentId, toolSessionId, criteria, page, size, + sorting); - for (PeerreviewUser user : users) { - JSONArray rowData = new JSONArray(); - rowData.put(toolSessionId); - rowData.put(user.getUserId()); - rowData.put(StringEscapeUtils.escapeHtml(user.getFirstName()) + " " - + StringEscapeUtils.escapeHtml(user.getLastName())); + for (int i = 0; i < rawRows.size(); i++) { + Object[] rawRow = rawRows.get(i); + JSONObject cell = new JSONObject(); + cell.put("itemId", rawRow[0]); + cell.put("itemDescription", rawRow[3]); - // find corresponding itemRatingDto - ItemRatingDTO itemRatingDto = null; - for (ItemRatingDTO itemRatingDtoIter : itemRatingDtos) { - if (user.getUserId().equals(itemRatingDtoIter.getItemId())) { - itemRatingDto = itemRatingDtoIter; - break; + Number numCommentsNumber = (Number) rawRow[1]; + int numComments = numCommentsNumber != null ? numCommentsNumber.intValue() : 0; + if (numComments > 0) { + cell.put("rating", service.getLocalisedMessage("label.monitoring.num.of.comments", new Object[] { numComments })); + } else { + cell.put("rating", ""); } + + JSONObject row = new JSONObject(); + row.put("id", "" + rawRow[0]); + row.put("cell", cell); + rows.put(row); } + } else { + // all other styles can use the "normal" routine and munge the JSON to suit jqgrid + JSONArray rawRows = service.getUsersRatingsCommentsByCriteriaIdJSON(toolContentId, toolSessionId, criteria, + dummyUserId, page, size, sorting, true, true, false); - String criteriasString = "
"; - for (ItemRatingCriteriaDTO criteriaDto : itemRatingDto.getCriteriaDtos()) { - Long ratingCriteriaId = criteriaDto.getRatingCriteria().getRatingCriteriaId(); - String title = StringEscapeUtils.escapeHtml(criteriaDto.getRatingCriteria().getTitle()); - String averageRating = criteriaDto.getAverageRating(); - String numberOfVotes = criteriaDto.getNumberOfVotes(); + for (int i = 0; i < rawRows.length(); i++) { - criteriasString += ""; - criteriasString += title; - criteriasString += ""; + JSONObject rawRow = rawRows.getJSONObject(i); - criteriasString += "
"; - criteriasString += "
"; + String averageRating = (String) rawRow.get("averageRating"); + Object numberOfVotes = rawRow.get("numberOfVotes"); - criteriasString += "
"; - String msg = service.getLocalisedMessage("label.average.rating", - new Object[] { averageRating, numberOfVotes }); - criteriasString += msg; - criteriasString += "
"; + if (averageRating == null || averageRating.length() == 0) { + rawRow.put("rating", ""); + } else if (criteria.isStarStyleRating()) { + String starString = "
"; + starString += "
"; + starString += "
"; + starString += "
"; + String msg = service.getLocalisedMessage("label.average.rating", new Object[] { averageRating, + numberOfVotes }); + starString += msg; + starString += "
"; + rawRow.put("rating", starString); + } else { + rawRow.put("rating", averageRating); + } + JSONObject row = new JSONObject(); + row.put("id", "" + rawRow.get("itemId")); + row.put("cell", rawRow); + rows.put(row); } - criteriasString += "
"; - rowData.put(criteriasString); - - JSONObject row = new JSONObject(); - row.put("id", "" + user.getUserId()); - row.put("cell", rowData); - rows.put(row); } - responcedata.put("rows", rows); res.setContentType("application/json;charset=utf-8"); @@ -229,56 +278,60 @@ HttpServletResponse response) throws JSONException, IOException { IPeerreviewService service = getPeerreviewService(); String sessionMapID = request.getParameter(PeerreviewConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); - HashMap userNameMap = (HashMap) sessionMap.get("userNameMap"); - Long userId = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID); - Long contentId = (Long) sessionMap.get(PeerreviewConstants.ATTR_TOOL_CONTENT_ID); + Long itemId = WebUtil.readLongParam(request, "itemId"); + Long toolContentId = WebUtil.readLongParam(request, "toolContentId"); + Long toolSessionId = WebUtil.readLongParam(request, "toolSessionId"); + Long criteriaId = WebUtil.readLongParam(request, "criteriaId"); // ratings left by others for this user - ItemRatingDTO userRatingDto = service.getRatingCriteriaDtoWithActualRatings(contentId, userId); - + List ratings = service.getDetailedRatingsComments(toolContentId, toolSessionId, criteriaId, itemId ); + RatingCriteria criteria = service.getCriteriaByCriteriaId(criteriaId); + String title = StringEscapeUtils.escapeHtml(criteria.getTitle()); + + // processed data from db is userId, comment, rating, first_name, escaped( firstname + last_name) + // if no rating or comment, then the entries will be null and not an empty string JSONArray rows = new JSONArray(); int i = 0; - for (ItemRatingCriteriaDTO criteriaDto : userRatingDto.getCriteriaDtos()) { + + for (Object[] ratingDetails : ratings) { + if ( ratingDetails[2] != null ) { + JSONArray userData = new JSONArray(); + userData.put(i); + userData.put(ratingDetails[4]); + userData.put(ratingDetails[2]); + userData.put(title); - for (RatingDTO ratingDto : criteriaDto.getRatingDtos()) { - JSONArray userData = new JSONArray(); - userData.put(i); - String userName = StringEscapeUtils - .escapeHtml(ratingDto.getLearner().getFirstName() + " " + ratingDto.getLearner().getLastName()); - userData.put(userName); - userData.put(ratingDto.getRating()); - String title = StringEscapeUtils.escapeHtml(criteriaDto.getRatingCriteria().getTitle()); - userData.put(title); - - JSONObject userRow = new JSONObject(); - userRow.put("id", i++); - userRow.put("cell", userData); - - rows.put(userRow); + JSONObject userRow = new JSONObject(); + userRow.put("id", i++); + userRow.put("cell", userData); + + rows.put(userRow); } } - // if comments are enabled display them too - if (userRatingDto.isCommentsEnabled()) { - for (RatingCommentDTO commentDto : userRatingDto.getCommentDtos()) { - JSONArray userData = new JSONArray(); - userData.put(i); - String userName = StringEscapeUtils.escapeHtml(userNameMap.get(commentDto.getUserId())); - userData.put(userName); - userData.put(StringEscapeUtils.escapeHtml(commentDto.getComment())); - userData.put("Comments"); + if ( criteria.isCommentsEnabled() ) { + for (Object[] ratingDetails : ratings) { - JSONObject userRow = new JSONObject(); - userRow.put("id", i++); - userRow.put("cell", userData); + // Show comment if comment has been left by user. Exclude the special case where it is a hedging rating + // and the rating is not null - otherwise we end up putting the justification comment against entries that were not rated. + String comment = (String) ratingDetails[1]; + if ( comment != null && ( ! criteria.isHedgeStyleRating() || ( criteria.isHedgeStyleRating() && ratingDetails[2] != null ) ) ) { + JSONArray userData = new JSONArray(); + userData.put(i); + userData.put(ratingDetails[4]); + userData.put(StringEscapeUtils.escapeHtml(comment)); + userData.put("Comments"); - rows.put(userRow); + JSONObject userRow = new JSONObject(); + userRow.put("id", i++); + userRow.put("cell", userData); + + rows.put(userRow); + } } } - + JSONObject responseJSON = new JSONObject(); responseJSON.put("total", 1); responseJSON.put("page", 1); Index: lams_tool_preview/web/WEB-INF/struts-config.xml =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -166,6 +166,11 @@ parameter="summary" > + + + Index: lams_tool_preview/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag (.../AuthoringRatingAllStyleCriteria.tag) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/web/WEB-INF/tags/AuthoringRatingAllStyleCriteria.tag (.../AuthoringRatingAllStyleCriteria.tag) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -177,7 +177,6 @@ var currentRow = $(this).closest('tr'); currentRow.remove(); reactivateArrows(); - renumberOrderIds(); }); //addCriteria @@ -187,26 +186,10 @@ }) - function renumberOrderIds() { - $('#add-criteria').hide(); - var newOrderId = 1; - $('#criterias-table tr').each(function() { - $this = $(this); // cache $(this) - var currentRow = $(this).closest('tr'); - var currentCriteriaTd = $( ".criteria-info", currentRow); - var currentOrderId = $( "input[name^='criteriaOrderId']", currentCriteriaTd); - currentOrderId.val(newOrderId++); - if ($this.is(':last-child')) { - $('#add-criteria').show(); - maxOrderId=newOrderId-1; - } - }); - } - function addCriteria() { + debugger; var styleDropDown = document.getElementById("ratingStyle"); var style = styleDropDown.options[styleDropDown.selectedIndex].value; - //increase maxOrderId by 1 maxOrderId++; $("#criteria-max-order-id").val(maxOrderId); addRow(maxOrderId, style, '', '', false, 0, 0, 0); Index: lams_tool_preview/web/WEB-INF/tags/StyledRating.tag =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/web/WEB-INF/tags/StyledRating.tag (.../StyledRating.tag) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -148,7 +148,7 @@ - Average Rankings: (Your rankings shown in brackets after name) +  
    @@ -169,7 +169,7 @@ - Average Marks for Hedging: (Your marks shown in brackets after name) +  
      @@ -188,7 +188,7 @@
    - Your justification: +  
    Index: lams_tool_preview/web/pages/learning/learning.jsp =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/web/pages/learning/learning.jsp (.../learning.jsp) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/web/pages/learning/learning.jsp (.../learning.jsp) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -14,7 +14,6 @@ - @@ -99,7 +98,9 @@

    -

    ${criteriaRatings.ratingCriteria.orderId}${numCriteria}

    + +

    ${stepNumber}${numCriteria}

    +
    @@ -147,7 +148,7 @@ - + ${finishButtonLabel} Index: lams_tool_preview/web/pages/learning/rankall.jsp =================================================================== diff -u -rd2f1cafab9126e3848663764c082b76ccf2de0c5 -r3b619df5e7e11dab1dc49859d23399a4b179c16f --- lams_tool_preview/web/pages/learning/rankall.jsp (.../rankall.jsp) (revision d2f1cafab9126e3848663764c082b76ccf2de0c5) +++ lams_tool_preview/web/pages/learning/rankall.jsp (.../rankall.jsp) (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -116,7 +116,6 @@
    - ${criteriaRatings.ratingCriteria.maxRating} Index: lams_tool_preview/web/pages/monitoring/criteria.jsp =================================================================== diff -u --- lams_tool_preview/web/pages/monitoring/criteria.jsp (revision 0) +++ lams_tool_preview/web/pages/monitoring/criteria.jsp (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -0,0 +1,73 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + <fmt:message key="label.learning.title" /> + + <%@ include file="/common/header.jsp"%> + + + + + + + + + + + + + + + + + + + + + + + <%@ include file="criteriapart.jsp" %> + Close + + + + + + + + \ No newline at end of file Index: lams_tool_preview/web/pages/monitoring/criteriaToDelete.jsp =================================================================== diff -u --- lams_tool_preview/web/pages/monitoring/criteriaToDelete.jsp (revision 0) +++ lams_tool_preview/web/pages/monitoring/criteriaToDelete.jsp (revision 3b619df5e7e11dab1dc49859d23399a4b179c16f) @@ -0,0 +1,44 @@ + + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + <fmt:message key="label.learning.title" /> + + <%@ include file="/common/header.jsp"%> + + + + + + + + + + + +${criteriaRatings} + + + + Close + + + + + + + + +