Index: lams_build/lib/lams/lams.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams.jar,v diff -u -r1.441 -r1.442 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java,v diff -u -r1.1 -r1.2 --- lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java 26 Mar 2015 21:17:46 -0000 1.1 +++ lams_central/src/java/org/lamsfoundation/lams/web/RatingServlet.java 18 Apr 2015 01:24:19 -0000 1.2 @@ -34,6 +34,7 @@ import org.apache.tomcat.util.json.JSONException; import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; import org.lamsfoundation.lams.rating.service.RatingService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.WebUtil; @@ -61,25 +62,33 @@ float rating = Float.parseFloat((String) request.getParameter("rate")); String objectId = WebUtil.readStrParam(request, "idBox"); + boolean isCountRatedItemsRequested = WebUtil.readBooleanParam(request, "isCountRatedItemsRequested", false); Long ratingCriteriaId = Long.parseLong(objectId.split("-")[0]); Long itemId = Long.parseLong(objectId.split("-")[1]); UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); Integer userId = user.getUserID(); RatingDTO averageRatingDTO = ratingService.rateItem(ratingCriteriaId, userId, itemId, rating); - // refresh numOfRatings - // int numOfRatings = ratingService.getNumOfRatingsByUserAndForum(userUid, forumUid); - JSONObject JSONObject = new JSONObject(); try { JSONObject.put("averageRating", averageRatingDTO.getAverageRating()); JSONObject.put("numberOfVotes", averageRatingDTO.getNumberOfVotes()); + // refresh countRatedItems in case there is max rates limit + if (isCountRatedItemsRequested) { + //as long as this can be requested only for LEARNER_ITEM_CRITERIA_TYPE type, cast Criteria + LearnerItemRatingCriteria criteria = (LearnerItemRatingCriteria) ratingService.getCriteriaByCriteriaId(ratingCriteriaId, LearnerItemRatingCriteria.class); + Long toolContentId = criteria.getToolContentId(); + + int countRatedItems = ratingService.getCountItemsRatedByActivityAndUser(toolContentId, userId); + JSONObject.put("countRatedItems", countRatedItems); + } + } catch (JSONException e) { throw new ServletException(e); } - // JSONObject.put("numOfRatings", numOfRatings); + response.setContentType("application/json;charset=utf-8"); response.getWriter().print(JSONObject); } Index: lams_central/web/css/defaultHTML.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/defaultHTML.css,v diff -u -r1.63 -r1.64 --- lams_central/web/css/defaultHTML.css 9 Apr 2015 11:37:28 -0000 1.63 +++ lams_central/web/css/defaultHTML.css 18 Apr 2015 01:24:19 -0000 1.64 @@ -1692,11 +1692,14 @@ .rating-criteria-tag { width: 60%; - padding-bottom: 25px; + padding-left: 20px; } .rating-criteria-tag input[type="text"] { width: 100%; } +#criterias-table { + margin-left: 0; +} #criterias-table td { vertical-align:middle; } Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java 26 Mar 2015 21:17:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingCriteriaDAO.java 18 Apr 2015 01:24:33 -0000 1.2 @@ -35,6 +35,8 @@ List getByToolContentId(Long toolContentId); - RatingCriteria getByUid(Long ratingCriteriaId); + RatingCriteria getByRatingCriteriaId(Long ratingCriteriaId); + + RatingCriteria getByRatingCriteriaId(Long ratingCriteriaId, Class clasz); } Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java 26 Mar 2015 21:17:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/IRatingDAO.java 18 Apr 2015 01:24:33 -0000 1.2 @@ -47,5 +47,14 @@ RatingDTO getRatingAverageDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId); Rating get(Long uid); + + /** + * Returns number of images rated by specified user in a current activity. Applicable only for RatingCriterias of LEARNER_ITEM_CRITERIA_TYPE type. + * + * @param toolContentId + * @param userId + * @return + */ + int getCountItemsRatedByActivityAndUser(Long toolContentId, Integer userId); } Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java 26 Mar 2015 21:17:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingCriteriaDAO.java 18 Apr 2015 01:24:33 -0000 1.2 @@ -26,11 +26,31 @@ import java.util.List; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ChosenBranchingActivity; +import org.lamsfoundation.lams.learningdesign.ConditionGateActivity; +import org.lamsfoundation.lams.learningdesign.FloatingActivity; +import org.lamsfoundation.lams.learningdesign.GroupBranchingActivity; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; +import org.lamsfoundation.lams.learningdesign.OptionsActivity; +import org.lamsfoundation.lams.learningdesign.OptionsWithSequencesActivity; +import org.lamsfoundation.lams.learningdesign.ParallelActivity; +import org.lamsfoundation.lams.learningdesign.PermissionGateActivity; +import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; +import org.lamsfoundation.lams.learningdesign.SynchGateActivity; +import org.lamsfoundation.lams.learningdesign.SystemGateActivity; +import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.ToolBranchingActivity; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.rating.dao.IRatingCriteriaDAO; +import org.lamsfoundation.lams.rating.model.AuthoredItemRatingCriteria; +import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; +import org.lamsfoundation.lams.rating.model.LessonRatingCriteria; import org.lamsfoundation.lams.rating.model.Rating; import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.rating.model.ToolActivityRatingCriteria; +import org.springframework.dao.DataRetrievalFailureException; public class RatingCriteriaDAO extends BaseDAO implements IRatingCriteriaDAO { @@ -53,13 +73,44 @@ return (List) (getHibernateTemplate().find(FIND_BY_TOOL_CONTENT_ID, new Object[] { toolContentId })); } - - public RatingCriteria getByUid(Long ratingCriteriaId) { - if (ratingCriteriaId != null) { - Object o = getHibernateTemplate().get(RatingCriteria.class, ratingCriteriaId); - return (RatingCriteria) o; - } else { + + @Override + public RatingCriteria getByRatingCriteriaId(Long ratingCriteriaId) { + if (ratingCriteriaId == null) { return null; } + + RatingCriteria criteria = (RatingCriteria) getHibernateTemplate().get(RatingCriteria.class, ratingCriteriaId); + + /** + * we must return the real activity, not a Hibernate proxy. So relook it up. This should be quick as it should + * be in the cache. + */ + if (criteria != null) { + Integer criteriaType = criteria.getRatingCriteriaTypeId(); + if (criteriaType != null) { + switch (criteriaType.intValue()) { + case RatingCriteria.TOOL_ACTIVITY_CRITERIA_TYPE: + return getByRatingCriteriaId(ratingCriteriaId, ToolActivityRatingCriteria.class); + case RatingCriteria.AUTHORED_ITEM_CRITERIA_TYPE: + return getByRatingCriteriaId(ratingCriteriaId, AuthoredItemRatingCriteria.class); + case RatingCriteria.LEARNER_ITEM_CRITERIA_TYPE: + return getByRatingCriteriaId(ratingCriteriaId, LearnerItemRatingCriteria.class); + case RatingCriteria.LESSON_CRITERIA_TYPE: + return getByRatingCriteriaId(ratingCriteriaId, LessonRatingCriteria.class); + default: + break; + } + } + throw new DataRetrievalFailureException( + "Unable to get RatingCriteria as the RatingCriteria type is unknown or missing. RatingCriteria type is " + + criteriaType); + } + return null; } + + @Override + public RatingCriteria getByRatingCriteriaId(Long ratingCriteriaId, Class clasz) { + return (RatingCriteria) super.find(clasz, ratingCriteriaId); + } } Index: lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java 26 Mar 2015 21:17:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/rating/dao/hibernate/RatingDAO.java 18 Apr 2015 01:24:33 -0000 1.2 @@ -33,18 +33,29 @@ import org.lamsfoundation.lams.rating.dao.IRatingDAO; import org.lamsfoundation.lams.rating.dto.RatingDTO; import org.lamsfoundation.lams.rating.model.Rating; +import org.lamsfoundation.lams.rating.model.ToolActivityRatingCriteria; public class RatingDAO extends BaseDAO implements IRatingDAO { private static final String FIND_RATING_BY_CRITERIA_AND_USER_AND_ITEM = "FROM " + Rating.class.getName() + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.learner.userId=? AND r.itemId=?"; + private static final String FIND_RATING_VALUE = "SELECT r.rating FROM " + Rating.class.getName() + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.learner.userId=? AND r.itemId=?"; + private static final String FIND_RATING_BY_CRITERIA_AND_USER = "FROM " + Rating.class.getName() + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.learner.userId=?"; + private static final String FIND_RATING_AVERAGE_BY_ITEM = "SELECT AVG(r.rating), COUNT(*) FROM " + Rating.class.getName() + " AS r where r.ratingCriteria.ratingCriteriaId=? AND r.itemId=?"; + private static final String COUNT_ITEMS_RATED_BY_ACTIVITY_AND_USER = "SELECT COUNT(DISTINCT r.itemId) FROM " + + Rating.class.getName() + + " AS r, " + + ToolActivityRatingCriteria.class.getName() + + " AS cr " + + " WHERE r.ratingCriteria.ratingCriteriaId = cr.ratingCriteriaId AND cr.toolContentId = ? AND r.learner.userId =?"; + @Override public void saveOrUpdate(Rating rating) { this.getHibernateTemplate().saveOrUpdate(rating); @@ -72,38 +83,39 @@ return null; } } - + @Override public RatingDTO getRatingAverageDTOByItem(Long ratingCriteriaId, Long itemId) { - List list = getHibernateTemplate().find(FIND_RATING_AVERAGE_BY_ITEM, new Object[] { ratingCriteriaId, itemId }); + List list = getHibernateTemplate().find(FIND_RATING_AVERAGE_BY_ITEM, + new Object[] { ratingCriteriaId, itemId }); Object[] results = list.get(0); - + Object averageRatingObj = (results[0] == null) ? 0 : results[0]; NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); numberFormat.setMaximumFractionDigits(1); String averageRating = numberFormat.format(averageRatingObj); - + String numberOfVotes = (results[1] == null) ? "0" : String.valueOf(results[1]); return new RatingDTO(averageRating, numberOfVotes); } - + @Override public RatingDTO getRatingAverageDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId) { - + RatingDTO ratingDTO = getRatingAverageDTOByItem(ratingCriteriaId, itemId); - + Float userRating = 0F; - List list = getHibernateTemplate().find(FIND_RATING_VALUE, - new Object[] { ratingCriteriaId, userId, itemId }); + List list = getHibernateTemplate().find(FIND_RATING_VALUE, new Object[] { ratingCriteriaId, userId, itemId }); if (list.size() > 0) { userRating = (Float) list.get(0); } ratingDTO.setUserRating(userRating.toString()); ratingDTO.setItemId(itemId); - + return ratingDTO; } + @Override public Rating get(Long uid) { if (uid != null) { Object o = getHibernateTemplate().get(Rating.class, uid); @@ -112,4 +124,16 @@ return null; } } + + @Override + public int getCountItemsRatedByActivityAndUser(Long toolContentId, Integer userId) { + + List list = getHibernateTemplate().find(COUNT_ITEMS_RATED_BY_ACTIVITY_AND_USER, + new Object[] { toolContentId, userId }); + if (list == null || list.size() == 0) { + return 0; + } else { + return ((Number) list.get(0)).intValue(); + } + } } Index: lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java 26 Mar 2015 21:17:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/rating/service/IRatingService.java 18 Apr 2015 01:24:33 -0000 1.2 @@ -30,7 +30,6 @@ import org.lamsfoundation.lams.rating.dto.RatingDTO; import org.lamsfoundation.lams.rating.model.Rating; import org.lamsfoundation.lams.rating.model.RatingCriteria; -import org.lamsfoundation.lams.rating.model.ToolActivityRatingCriteria; public interface IRatingService { @@ -49,12 +48,6 @@ // List getEntry(Integer userID, Integer idType); // // List getEntry(Integer userID, Long lessonID); -// -// Rating getEntry(Long uid); -// -// void updateEntry(Long uid, String title, String entry); -// -// void updateEntry(Rating rating); void saveOrUpdateRating(Rating rating); @@ -64,6 +57,8 @@ List getCriteriasByToolContentId(Long toolContentId); + RatingCriteria getCriteriaByCriteriaId(Long ratingCriteriaId, Class clasz); + /** * Return Rating by the given itemId and userId. * @@ -84,8 +79,14 @@ RatingDTO rateItem(Long ratingCriteriaId, Integer userId, Long itemId, float ratingFloat); RatingDTO getRatingDTOByUser(Long ratingCriteriaId, Long itemId, Integer userId); + + /** + * Returns number of images rated by specified user in a current activity. Applicable only for RatingCriterias of LEARNER_ITEM_CRITERIA_TYPE type. + * + * @param toolContentId + * @param userId + * @return + */ + int getCountItemsRatedByActivityAndUser(Long toolContentId, Integer userId); -// IUserManagementService getUserManagementService(); -// -// MessageService getMessageService(); } Index: lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java 26 Mar 2015 21:17:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/rating/service/RatingService.java 18 Apr 2015 01:24:33 -0000 1.2 @@ -128,6 +128,11 @@ } @Override + public int getCountItemsRatedByActivityAndUser(Long toolContentId, Integer userId) { + return ratingDAO.getCountItemsRatedByActivityAndUser(toolContentId, userId); + } + + @Override public void saveOrUpdateRating(Rating rating) { ratingDAO.saveOrUpdate(rating); } @@ -166,6 +171,11 @@ } @Override + public RatingCriteria getCriteriaByCriteriaId(Long ratingCriteriaId, Class clasz) { + return ratingCriteriaDAO.getByRatingCriteriaId(ratingCriteriaId, clasz); + } + + @Override public void saveOrUpdateRatingCriteria(RatingCriteria criteria) { ratingCriteriaDAO.saveOrUpdate(criteria); } Index: lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml,v diff -u -r1.1 -r1.2 --- lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml 26 Mar 2015 21:21:21 -0000 1.1 +++ lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml 18 Apr 2015 01:24:29 -0000 1.2 @@ -196,8 +196,24 @@ /> + + + + ratingCriterias; // general infomation @@ -430,6 +434,28 @@ } /** + * @return + */ + public int getMaximumRates() { + return maximumRates; + } + + public void setMaximumRates(int maximumRate) { + this.maximumRates = maximumRate; + } + + /** + * @return + */ + public int getMinimumRates() { + return minimumRates; + } + + public void setMinimumRates(int minimumRates) { + this.minimumRates = minimumRates; + } + + /** * * @return */ Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java,v diff -u -r1.21 -r1.22 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java 26 Mar 2015 21:21:21 -0000 1.21 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java 18 Apr 2015 01:24:29 -0000 1.22 @@ -156,6 +156,15 @@ void deleteRatingCriteria(Long ratingCriteriaId); List getRatingDtos(ImageGallery imageGallery, Long imageUid, Long userId); + + /** + * Returns number of images rated by specified user in a current activity. + * + * @param toolContentId + * @param userId + * @return + */ + int getCountImagesRatedByActivityAndUser(Long toolContentId, Integer userId); /** * Save/update ImageVote. Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java,v diff -u -r1.1 -r1.2 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java 17 Jan 2014 21:44:57 -0000 1.1 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java 18 Apr 2015 01:24:29 -0000 1.2 @@ -40,4 +40,12 @@ this.removeField(ImageGallery.class, "offlineInstructions"); this.removeField(ImageGallery.class, "attachments"); } + + /** + * Import 20150217 version content to 20150416 version tool server. + */ + public void up20150217To20150416() { + this.addField(ImageGallery.class, "minimumRates", 0); + this.addField(ImageGallery.class, "maximumRates", 0); + } } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java,v diff -u -r1.34 -r1.35 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java 26 Mar 2015 21:21:21 -0000 1.34 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java 18 Apr 2015 01:24:29 -0000 1.35 @@ -104,9 +104,7 @@ import org.lamsfoundation.lams.util.audit.IAuditService; /** - * - * @author Dapeng.Ni - * + * @author Andrey Balan */ public class ImageGalleryServiceImpl implements IImageGalleryService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager { @@ -1184,6 +1182,11 @@ return ratingDtos; } + + @Override + public int getCountImagesRatedByActivityAndUser(Long toolContentId, Integer userId) { + return ratingService.getCountItemsRatedByActivityAndUser(toolContentId, userId); + } // ***************************************************************************** // private methods Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java,v diff -u -r1.11 -r1.12 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java 26 Mar 2015 21:21:21 -0000 1.11 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java 18 Apr 2015 01:24:29 -0000 1.12 @@ -341,6 +341,10 @@ // ************************* Handle imageGallery allowRank item ******************* imageGalleryPO.setAllowRank(imageGalleryForm.isAllowRatingsOrVote() && !imageGalleryPO.isAllowVote()); + if (!imageGalleryPO.isAllowRank()) { + imageGalleryPO.setMaximumRates(0); + imageGalleryPO.setMinimumRates(0); + } // ************************* Handle imageGallery items ******************* // Handle imageGallery items @@ -375,6 +379,7 @@ } // ************************* Handle rating criterias ******************* + Set updatedCriterias = new LinkedHashSet(); List ratingCriterias = (List) sessionMap.get(AttributeNames.ATTR_RATING_CRITERIAS); Map mapOrderIdToRatingCriteria = new HashMap(); for (RatingCriteria ratingCriteriaIter : ratingCriterias) { @@ -401,13 +406,15 @@ ratingCriteria.setOrderId(newCriteriaOrderId); ratingCriteria.setTitle(criteriaTitle); service.saveOrUpdateRatingCriteria(ratingCriteria); + //!!updatedCriterias.add(ratingCriteria); //delete } else if (ratingCriteria != null) { service.deleteRatingCriteria(ratingCriteria.getRatingCriteriaId()); } } + //!!imageGalleryPO.setRatingCriterias(new LinkedHashSet (updatedCriterias)); // ********************************************** // finally persist imageGalleryPO again Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java,v diff -u -r1.31 -r1.32 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java 26 Mar 2015 21:21:21 -0000 1.31 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java 18 Apr 2015 01:24:29 -0000 1.32 @@ -148,7 +148,7 @@ HttpServletResponse response) { // initial Session Map - SessionMap sessionMap = new SessionMap(); + SessionMap sessionMap = new SessionMap(); request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); Long sessionId = new Long(request.getParameter(ImageGalleryConstants.PARAM_TOOL_SESSION_ID)); ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, true); @@ -170,33 +170,30 @@ } else { imageGalleryUser = getCurrentUser(service, sessionId); } + Integer userId = imageGalleryUser.getUserId().intValue(); // Get contentFolderID and save to form. // String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); // sessionMap.put(ImageGalleryConstants.ATTR_CONTENT_FOLDER_ID, contentFolderID); // check whehter finish lock is on/off - boolean lock = imageGallery.getLockWhenFinished() && imageGalleryUser != null - && imageGalleryUser.isSessionFinished(); + boolean lock = imageGallery.getLockWhenFinished() && imageGalleryUser.isSessionFinished(); // get notebook entry String entryText = new String(); - if (imageGalleryUser != null) { - NotebookEntry notebookEntry = service.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, - ImageGalleryConstants.TOOL_SIGNATURE, imageGalleryUser.getUserId().intValue()); - if (notebookEntry != null) { - entryText = notebookEntry.getEntry(); - } + NotebookEntry notebookEntry = service.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + ImageGalleryConstants.TOOL_SIGNATURE, userId); + if (notebookEntry != null) { + entryText = notebookEntry.getEntry(); } // basic information sessionMap.put(ImageGalleryConstants.ATTR_TITLE, imageGallery.getTitle()); sessionMap.put(ImageGalleryConstants.ATTR_INSTRUCTIONS, imageGallery.getInstructions()); sessionMap.put(ImageGalleryConstants.ATTR_FINISH_LOCK, lock); sessionMap.put(ImageGalleryConstants.ATTR_LOCK_ON_FINISH, imageGallery.getLockWhenFinished()); - sessionMap.put(ImageGalleryConstants.ATTR_USER_FINISHED, - imageGalleryUser != null && imageGalleryUser.isSessionFinished()); - sessionMap.put(AttributeNames.PARAM_USER_ID, imageGalleryUser.getUserId()); + sessionMap.put(ImageGalleryConstants.ATTR_USER_FINISHED, imageGalleryUser.isSessionFinished()); + sessionMap.put(AttributeNames.PARAM_USER_ID, userId); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); sessionMap.put(AttributeNames.ATTR_MODE, mode); @@ -224,6 +221,12 @@ imageGallery.setDefineLater(false); service.saveOrUpdateImageGallery(imageGallery); + // store how many items are rated + if (imageGallery.isAllowRank()) { + int countRatedImages = service.getCountImagesRatedByActivityAndUser(imageGallery.getContentId(), userId); + sessionMap.put(ImageGalleryConstants.ATTR_COUNT_RATED_IMAGES, countRatedImages); + } + ActivityPositionDTO activityPosition = LearningWebUtil.putActivityPositionInRequestByToolSessionId(sessionId, request, getServlet().getServletContext()); sessionMap.put(AttributeNames.ATTR_ACTIVITY_POSITION, activityPosition); @@ -233,21 +236,21 @@ if (mode.isLearner()) { Set groupImages = service.getImagesForGroup(imageGallery, sessionId); for (ImageGalleryItem image : groupImages) { - + // initialize login name to avoid session close error in proxy object if (image.getCreateBy() != null) { image.getCreateBy().getLoginName(); } - + // remove hidden items if (!image.isHide()) { images.add(image); - } + } } } else { images.addAll(imageGallery.getImageGalleryItems()); } - + // escape characters for (ImageGalleryItem image : images) { String titleEscaped = StringEscapeUtils.escapeJavaScript(image.getTitle()); @@ -457,11 +460,11 @@ HttpServletResponse response) { // get back sessionMAP String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); IImageGalleryService service = getImageGalleryService(); ImageGallery imageGallery = service.getImageGalleryBySessionId(sessionId); - Long userId = (Long) sessionMap.get(AttributeNames.PARAM_USER_ID); + Long userId = ((Integer) sessionMap.get(AttributeNames.PARAM_USER_ID)).longValue(); Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); ImageGalleryItem image = service.getImageGalleryItemByUid(imageUid); @@ -474,8 +477,8 @@ ImageGalleryUser createdBy = image.getCreateBy(); if (createdBy != null) { image.getCreateBy().getLoginName(); - } - + } + ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); boolean isTeacher = mode != null && mode.isTeacher(); boolean isAuthor = !isTeacher && !image.isCreateByAuthor() && (createdBy != null) @@ -498,6 +501,10 @@ if (!isTeacher && imageGallery.isAllowRank()) { List ratingDtos = service.getRatingDtos(imageGallery, imageUid, userId); sessionMap.put(ImageGalleryConstants.ATTR_RATING_DTOS, ratingDtos); + + // store how many items are rated + int countRatedImages = service.getCountImagesRatedByActivityAndUser(imageGallery.getContentId(), userId.intValue()); + sessionMap.put(ImageGalleryConstants.ATTR_COUNT_RATED_IMAGES, countRatedImages); } if (!isTeacher && imageGallery.isAllowVote()) { @@ -899,7 +906,7 @@ boolean isContentTypeForbidden = StringUtils.isEmpty(contentType) || !(contentType.equals("image/gif") || contentType.equals("image/png") || contentType.equals("image/jpg") || contentType.equals("image/jpeg") || contentType - .equals("image/pjpeg")); + .equals("image/pjpeg")); return isContentTypeForbidden; } Index: lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag,v diff -u -r1.2 -r1.3 --- lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag 27 Mar 2015 20:53:37 -0000 1.2 +++ lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag 18 Apr 2015 01:24:29 -0000 1.3 @@ -16,13 +16,22 @@ <%@ attribute name="criterias" required="true" rtexprvalue="true" type="java.util.Collection" %> <%-- Optional attribute --%> +<%@ attribute name="isRatesLimitOn" required="false" rtexprvalue="true" %> <%@ attribute name="headerLabel" required="false" rtexprvalue="true" %> <%@ attribute name="addLabel" required="false" rtexprvalue="true" %> <%@ attribute name="deleteLabel" required="false" rtexprvalue="true" %> <%@ attribute name="upLabel" required="false" rtexprvalue="true" %> <%@ attribute name="downLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="minimumLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="maximumLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="noMinimumLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="noMaximumLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="jsWarningLabel" required="false" rtexprvalue="true" %> <%-- Default value for message key --%> + + + @@ -38,6 +47,21 @@ + + + + + + + + + + + + + + +
-

+

@@ -202,11 +244,49 @@ -
+ + +
+ + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + +
+
+
\ No newline at end of file Index: lams_tool_images/web/WEB-INF/tags/Rating.tag =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/WEB-INF/tags/Rating.tag,v diff -u -r1.1 -r1.2 --- lams_tool_images/web/WEB-INF/tags/Rating.tag 26 Mar 2015 21:21:21 -0000 1.1 +++ lams_tool_images/web/WEB-INF/tags/Rating.tag 18 Apr 2015 01:24:29 -0000 1.2 @@ -13,27 +13,40 @@ <%@ taglib uri="tags-function" prefix="fn" %> -<%@ attribute name="ratingDtos" required="false" rtexprvalue="true" type="java.util.Collection" %> +<%@ attribute name="ratingDtos" required="true" rtexprvalue="true" type="java.util.Collection" %> <%-- Optional attribute --%> <%@ attribute name="disabled" required="false" rtexprvalue="true" %> +<%@ attribute name="maxRates" required="false" rtexprvalue="true" %> +<%@ attribute name="minRates" required="false" rtexprvalue="true" %> <%@ attribute name="numberVotesLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="countRatedImages" required="false" rtexprvalue="true" %> <%-- Default value for message key --%> + + + + + + + + + + + + + + + + - + - - - - - -
Index: lams_tool_images/web/pages/authoring/advance.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/pages/authoring/advance.jsp,v diff -u -r1.5 -r1.6 --- lams_tool_images/web/pages/authoring/advance.jsp 26 Mar 2015 21:21:21 -0000 1.5 +++ lams_tool_images/web/pages/authoring/advance.jsp 18 Apr 2015 01:24:29 -0000 1.6 @@ -29,6 +29,7 @@ document.imageGalleryForm.notifyTeachersOnImageSumbit.checked = false; document.imageGalleryForm.notifyTeachersOnImageSumbit.disabled = ! eval(document.imageGalleryForm.notifyTeachersOnImageSumbit.disabled); } + @@ -99,16 +100,14 @@
style="display:none;" > -

- - + Index: lams_tool_images/web/pages/authoring/authoring.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/pages/authoring/authoring.jsp,v diff -u -r1.8 -r1.9 --- lams_tool_images/web/pages/authoring/authoring.jsp 26 Mar 2015 21:21:21 -0000 1.8 +++ lams_tool_images/web/pages/authoring/authoring.jsp 18 Apr 2015 01:24:29 -0000 1.9 @@ -3,23 +3,21 @@ <%@ include file="/common/taglibs.jsp"%> <%@ page import="org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants"%> - <fmt:message key="label.author.title" /> <%@ include file="/common/tabbedheader.jsp"%> + - - - Index: lams_tool_images/web/pages/learning/learning.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/pages/learning/learning.jsp,v diff -u -r1.35 -r1.36 --- lams_tool_images/web/pages/learning/learning.jsp 27 Mar 2015 20:53:37 -0000 1.35 +++ lams_tool_images/web/pages/learning/learning.jsp 18 Apr 2015 01:24:29 -0000 1.36 @@ -217,6 +217,39 @@

+ + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ <%@ include file="/common/messages.jsp"%> <%--Main image---------------------------------------------------%> @@ -268,7 +301,7 @@ <%--Bottom buttons-------------------------------------------%> -
+
Index: lams_tool_images/web/pages/learning/parts/commentsarea.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/pages/learning/parts/commentsarea.jsp,v diff -u -r1.14 -r1.15 --- lams_tool_images/web/pages/learning/parts/commentsarea.jsp 26 Mar 2015 21:21:21 -0000 1.14 +++ lams_tool_images/web/pages/learning/parts/commentsarea.jsp 18 Apr 2015 01:24:29 -0000 1.15 @@ -11,13 +11,13 @@ $(document).ready(function(){ $('#voting-form-checkbox').click(function() { $('#voting-form').ajaxSubmit( { - success: afterRatingSubmit // post-submit callback + success: afterVotingSubmit // post-submit callback }); }); }); // post-submit callback - function afterRatingSubmit(responseText, statusText) { + function afterVotingSubmit(responseText, statusText) { var votingFormLabel; if ($('#voting-form-checkbox').is(':checked')) { votingFormLabel = ""; @@ -94,7 +94,9 @@
- +


Index: lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp,v diff -u -r1.1 -r1.2 --- lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp 24 Apr 2014 20:39:10 -0000 1.1 +++ lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp 18 Apr 2015 01:24:29 -0000 1.2 @@ -118,6 +118,40 @@ + + + + + + + + + + ${sessionMap.imageGallery.minimumRates} + + + + + + + + + + + + + + + + + ${sessionMap.imageGallery.maximumRates} + + + + + + +