Index: lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml (.../ImageGallery.hbm.xml) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml (.../ImageGallery.hbm.xml) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -196,8 +196,24 @@ /> + + + + Avg rating {1} out of {2} votes +label.average.rating =Average rating {0}/{1} votes +label.rate.limits.reminder =Rating limitation: Minimum {0} and Maximum {1}. +label.rate.limits.topic.reminder =You have rated {0} images already. +label.rate.limits.reminder.min = You must rate at least {0} images. +label.rate.limits.reminder.max = You can only rate up to {0} images. +js.warning.max.min.limit = There is an error with the minimum and/or maximum set for ratings. Please check and try again. +label.minimum =Minimum: +label.maximum =Maximum: +label.no.minimum =No minimum +label.no.maximum =No maximum +label.minimum.number.words =Minimum number of words in a comment {0} +warning.minimum.number.words =There is a minimum required number of words in a comment: {0}. So far you've entered {1} word(s). +label.comment.textarea.tip =Please, provide some comment here... #======= End labels: Exported 161 labels for en AU ===== Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dbupdates/patch20150416.sql =================================================================== diff -u --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dbupdates/patch20150416.sql (revision 0) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/dbupdates/patch20150416.sql (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -0,0 +1,17 @@ +-- 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-3450 Set max and min rates limits +ALTER TABLE tl_laimag10_imagegallery ADD COLUMN minimum_rates integer DEFAULT 0; +ALTER TABLE tl_laimag10_imagegallery ADD COLUMN maximum_rates integer DEFAULT 0; + +UPDATE lams_tool SET tool_version='20150416' WHERE tool_signature='laimag10'; + +----------------------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_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java (.../ImageGallery.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java (.../ImageGallery.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -68,6 +68,10 @@ private boolean allowRank; + private int maximumRates; + + private int minimumRates; + private Set 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 =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -29,7 +29,9 @@ import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.ToolRatingManager; +import org.lamsfoundation.lams.rating.dto.ItemRatingCriteriaDTO; +import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.imageGallery.dto.ReflectDTO; import org.lamsfoundation.lams.tool.imageGallery.dto.Summary; @@ -43,11 +45,11 @@ import org.lamsfoundation.lams.tool.imageGallery.model.ImageVote; /** - * @author Dapeng.Ni - * * Interface that defines the contract that all ShareImageGallery service provider must follow. + * + * @author Andrey Balan */ -public interface IImageGalleryService { +public interface IImageGalleryService extends ToolRatingManager { /** * Get a cloned copy of tool default tool content (ImageGallery) and assign the toolContentId of that copy as the @@ -122,7 +124,7 @@ * @return */ Set getImagesForGroup(ImageGallery imageGallery, Long sessionId); - + /** * Calculates average rating and number of rating for the current group. * @@ -131,6 +133,8 @@ * @return Object[] {numberRatings, averageRating} */ Object[] getRatingForGroup(Long imageUid, Long sessionId); + + ItemRatingDTO getRatingCriteriaDtos(Long contentId, Long imageUid, Long userId); /** * Save/update current ImageGalleryItem. @@ -140,22 +144,14 @@ * @return */ void saveOrUpdateImageGalleryItem(ImageGalleryItem item); - + /** * Delete image with the given uid from imageGallery. * * @param toolSessionId * @param imageUid */ void deleteImage(Long toolSessionId, Long imageUid); - - List getRatingCriterias(Long toolContentId); - - void saveOrUpdateRatingCriteria(RatingCriteria criteria); - - void deleteRatingCriteria(Long ratingCriteriaId); - - List getRatingDtos(ImageGallery imageGallery, Long imageUid, Long userId); /** * Save/update ImageVote. @@ -173,22 +169,22 @@ * @return */ ImageGallery getImageGalleryBySessionId(Long sessionId); - + /** * Get imageComment by the given uid. * * @param commentUid * @return */ ImageComment getImageCommentByUid(Long commentUid); - + /** * Updates imageComment by the given uid. * * @param comment */ void saveImageComment(ImageComment comment); - + /** * Delete imageComment by the given uid. * @@ -203,15 +199,15 @@ * @return */ ImageGallerySession getImageGallerySessionBySessionId(Long sessionId); - + /** * Get ImageGallery by toolContentID. * * @param contentId * @return */ ImageGallery getImageGalleryByContentId(Long contentId); - + /** * Returns imageVote by the given imageUid and userId * @@ -220,7 +216,7 @@ * @return */ ImageVote getImageVoteByImageAndUser(Long imageUid, Long userId); - + /** * Return number of imageVotes made by user. * @@ -273,7 +269,7 @@ * * @param itemUid * @param visible - * true, item is visible. False, item is invisible. + * true, item is visible. False, item is invisible. */ void setItemVisible(Long itemUid, boolean visible); @@ -282,8 +278,8 @@ * * @param sessionId * @param skipHide - * true, don't get imageGallery item if its isHide flag is true. Otherwise, get all - * imageGallery item + * true, don't get imageGallery item if its isHide flag is true. Otherwise, get all + * imageGallery item * @return */ List>> exportBySessionId(Long sessionId, ImageGalleryUser user, boolean skipHide); @@ -338,9 +334,9 @@ * Gets a message from imageGallery bundle. Same as in JSP pages. * * @param key - * key of the message + * key of the message * @param args - * arguments for the message + * arguments for the message * @return message content */ String getLocalisedMessage(String key, Object[] args); @@ -359,9 +355,9 @@ * @param item */ void saveOrUpdateImageGalleryConfigItem(ImageGalleryConfigItem item); - + void notifyTeachersOnImageSumbit(Long sessionId, ImageGalleryUser imageGalleryUser); - + /** * Returns whether activity is grouped and therefore it is expected more than one tool session. * Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java =================================================================== diff -u -r6d674e346dea6ce7a824366c8a7c315660677744 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java (.../ImageGalleryImportContentVersionFilter.java) (revision 6d674e346dea6ce7a824366c8a7c315660677744) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryImportContentVersionFilter.java (.../ImageGalleryImportContentVersionFilter.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -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 =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -29,6 +29,7 @@ import java.io.InputStream; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Hashtable; @@ -41,6 +42,7 @@ import java.util.TreeSet; import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -56,7 +58,9 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; -import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.ToolRatingManager; +import org.lamsfoundation.lams.rating.dto.ItemRatingCriteriaDTO; +import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.rating.service.IRatingService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; @@ -104,9 +108,7 @@ import org.lamsfoundation.lams.util.audit.IAuditService; /** - * - * @author Dapeng.Ni - * + * @author Andrey Balan */ public class ImageGalleryServiceImpl implements IImageGalleryService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager { @@ -374,19 +376,40 @@ } @Override + public ItemRatingDTO getRatingCriteriaDtos(Long contentId, Long imageUid, Long userId) { + + LinkedList itemIds = new LinkedList(); + itemIds.add(imageUid); + ItemRatingDTO ratingCriteria = getRatingCriteriaDtos(contentId, itemIds, true, userId).get(0); + + return ratingCriteria; + } + + @Override + public List getRatingCriteriaDtos(Long contentId, Collection itemIds, + boolean isCommentsByOtherUsersRequired, Long userId) { + return ratingService.getRatingCriteriaDtos(contentId, itemIds, isCommentsByOtherUsersRequired, userId); + } + + @Override + public int getCountItemsRatedByUser(Long toolContentId, Integer userId) { + return ratingService.getCountItemsRatedByUser(toolContentId, userId); + } + + @Override public List getRatingCriterias(Long toolContentId) { List ratingCriterias = ratingService.getCriteriasByToolContentId(toolContentId); return ratingCriterias; } @Override - public void saveOrUpdateRatingCriteria(RatingCriteria criteria) { - ratingService.saveOrUpdateRatingCriteria(criteria); + public void saveRatingCriterias(HttpServletRequest request, Collection oldCriterias, Long toolContentId) { + ratingService.saveRatingCriterias(request, oldCriterias, toolContentId); } @Override - public void deleteRatingCriteria(Long ratingCriteriaId) { - ratingService.deleteRatingCriteria(ratingCriteriaId); + public boolean isCommentsEnabled(Long toolContentId) { + return ratingService.isCommentsEnabled(toolContentId); } @Override @@ -1170,20 +1193,6 @@ return new Object[] { numberRatings, averageRating }; } - - @Override - public List getRatingDtos(ImageGallery imageGallery, Long imageUid, Long userId) { - List ratingDtos = new LinkedList(); - - for (RatingCriteria criteria : imageGallery.getRatingCriterias()) { - RatingDTO ratingDto = ratingService.getRatingDTOByUser(criteria.getRatingCriteriaId(), imageUid, userId.intValue()); - ratingDto.setRatingCriteria(criteria); - - ratingDtos.add(ratingDto); - } - - return ratingDtos; - } // ***************************************************************************** // private methods Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -26,11 +26,9 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -53,7 +51,6 @@ import org.apache.struts.action.ActionMessages; import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.authoring.web.AuthoringConstants; -import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; @@ -78,7 +75,6 @@ /** * @author Andrey Balan - * @version $Revision$ */ public class AuthoringAction extends Action { @@ -145,7 +141,7 @@ } if (param.equals("saveMultipleImages")) { return saveMultipleImages(mapping, form, request, response); - } + } return mapping.findForward(ImageGalleryConstants.ERROR); } @@ -224,7 +220,7 @@ SortedSet imageGalleryItemList = getImageList(sessionMap); imageGalleryItemList.clear(); imageGalleryItemList.addAll(items); - + // get rating criterias from DB List ratingCriterias = service.getRatingCriterias(contentId); sessionMap.put(AttributeNames.ATTR_RATING_CRITERIAS, ratingCriterias); @@ -341,6 +337,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 @@ -373,42 +373,11 @@ ImageGalleryItem delAtt = (ImageGalleryItem) iter.next(); iter.remove(); } - + // ************************* Handle rating criterias ******************* - List ratingCriterias = (List) sessionMap.get(AttributeNames.ATTR_RATING_CRITERIAS); - Map mapOrderIdToRatingCriteria = new HashMap(); - for (RatingCriteria ratingCriteriaIter : ratingCriterias) { - mapOrderIdToRatingCriteria.put(ratingCriteriaIter.getOrderId(), ratingCriteriaIter); - } - - int criteriaMaxOrderId = WebUtil.readIntParam(request, "criteriaMaxOrderId"); - //i is equal to an old orderId - for (int i=1; i<=criteriaMaxOrderId; i++) { - - String criteriaTitle = WebUtil.readStrParam(request, "criteriaTitle" + i, true); - - RatingCriteria ratingCriteria = mapOrderIdToRatingCriteria.get(i); - if (StringUtils.isNotBlank(criteriaTitle)) { - int newCriteriaOrderId = WebUtil.readIntParam(request, "criteriaOrderId" + i); + List oldCriterias = (List) sessionMap.get(AttributeNames.ATTR_RATING_CRITERIAS); + service.saveRatingCriterias(request, oldCriterias, contentId); - // modify existing one if it exists. add otherwise - if (ratingCriteria == null) { - ratingCriteria = new LearnerItemRatingCriteria(); - ratingCriteria.setRatingCriteriaTypeId(LearnerItemRatingCriteria.LEARNER_ITEM_CRITERIA_TYPE); - ((LearnerItemRatingCriteria) ratingCriteria).setToolContentId(contentId); - } - - ratingCriteria.setOrderId(newCriteriaOrderId); - ratingCriteria.setTitle(criteriaTitle); - service.saveOrUpdateRatingCriteria(ratingCriteria); - - //delete - } else if (ratingCriteria != null) { - service.deleteRatingCriteria(ratingCriteria.getRatingCriteriaId()); - } - - } - // ********************************************** // finally persist imageGalleryPO again service.saveOrUpdateImageGallery(imageGalleryPO); @@ -587,7 +556,7 @@ request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); return mapping.findForward(ImageGalleryConstants.SUCCESS); } - + /** * Display empty page for muiltiple image upload. * @@ -604,7 +573,7 @@ return mapping.findForward("images"); } - + /** * This method will get necessary information from imageGallery item form and save or update into * HttpSession ImageGalleryItemList. Notice, this save is not persist them into database, just save @@ -645,7 +614,7 @@ // return null to close this window return mapping.findForward(ImageGalleryConstants.SUCCESS); } - + /** * Remove imageGallery item from HttpSession list and update page display. As authoring rule, all persist only * happen when user submit whole page. So this remove is just impact HttpSession values. @@ -851,7 +820,7 @@ image.setCreateByAuthor(true); image.setHide(false); } - + /** * Extract web form content to imageGallery items. * @@ -900,7 +869,7 @@ image.setHide(false); } } - + /** * Validate imageGallery. * @@ -947,7 +916,7 @@ return errors; } - + /** * Validate imageGallery item. * @@ -958,7 +927,7 @@ ActionErrors errors = new ActionErrors(); List fileList = createFileListFromMultipleForm(multipleForm); - + // validate files size for (FormFile file : fileList) { FileValidatorUtil.validateFileSize(file, true, errors); @@ -973,7 +942,7 @@ return errors; } - + /** * Create file list from multiple form. * @@ -983,25 +952,25 @@ private List createFileListFromMultipleForm(MultipleImagesForm multipleForm) { List fileList = new ArrayList(); - if (! StringUtils.isEmpty(multipleForm.getFile1().getFileName())) { + if (!StringUtils.isEmpty(multipleForm.getFile1().getFileName())) { fileList.add(multipleForm.getFile1()); } - if (! StringUtils.isEmpty(multipleForm.getFile2().getFileName())) { + if (!StringUtils.isEmpty(multipleForm.getFile2().getFileName())) { fileList.add(multipleForm.getFile2()); } - if (! StringUtils.isEmpty(multipleForm.getFile3().getFileName())) { + if (!StringUtils.isEmpty(multipleForm.getFile3().getFileName())) { fileList.add(multipleForm.getFile3()); } - if (! StringUtils.isEmpty(multipleForm.getFile4().getFileName())) { + if (!StringUtils.isEmpty(multipleForm.getFile4().getFileName())) { fileList.add(multipleForm.getFile4()); } - if (! StringUtils.isEmpty(multipleForm.getFile5().getFileName())) { + if (!StringUtils.isEmpty(multipleForm.getFile5().getFileName())) { fileList.add(multipleForm.getFile5()); } return fileList; } - + /** * Checks if the format is allowed. * @@ -1012,7 +981,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/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -27,6 +27,7 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; +import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -52,7 +53,8 @@ import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; -import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.dto.ItemRatingCriteriaDTO; +import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; import org.lamsfoundation.lams.tool.imageGallery.model.ImageComment; @@ -148,7 +150,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 +172,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 +223,12 @@ imageGallery.setDefineLater(false); service.saveOrUpdateImageGallery(imageGallery); + // store how many items are rated + if (imageGallery.isAllowRank()) { + int countRatedImages = service.getCountItemsRatedByUser(imageGallery.getContentId(), userId.intValue()); + sessionMap.put(AttributeNames.ATTR_COUNT_RATED_ITEMS, countRatedImages); + } + ActivityPositionDTO activityPosition = LearningWebUtil.putActivityPositionInRequestByToolSessionId(sessionId, request, getServlet().getServletContext()); sessionMap.put(AttributeNames.ATTR_ACTIVITY_POSITION, activityPosition); @@ -233,21 +238,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 +462,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); + ImageGallery imageGallery = (ImageGallery) sessionMap.get(ImageGalleryConstants.ATTR_IMAGE_GALLERY); + 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); @@ -470,46 +475,46 @@ sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_IMAGE, image); // becuase in webpage will use this login name. Here is just - // initial it to avoid session close error in proxy object. + // initialize it to avoid session close error in a proxy object 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) - && (createdBy.getUserId().equals(userId)); + } if (imageGallery.isAllowCommentImages()) { TreeSet comments = new TreeSet(new ImageCommentComparator()); Set dbComments = image.getComments(); - List sessionUsers = service.getUserListBySessionId(sessionId); + //List sessionUsers = service.getUserListBySessionId(sessionId); for (ImageComment comment : dbComments) { - for (ImageGalleryUser sessionUser : sessionUsers) { - if (comment.getCreateBy().getUserId().equals(sessionUser.getUserId())) { + //for (ImageGalleryUser sessionUser : sessionUsers) { + if (comment.getCreateBy().getSession().getSessionId().equals(sessionId)) { comments.add(comment); } - } + //} } sessionMap.put(ImageGalleryConstants.PARAM_COMMENTS, comments); } - if (!isTeacher && imageGallery.isAllowRank()) { - List ratingDtos = service.getRatingDtos(imageGallery, imageUid, userId); - sessionMap.put(ImageGalleryConstants.ATTR_RATING_DTOS, ratingDtos); + if (imageGallery.isAllowRank()) { + ItemRatingDTO itemRatingDto = service.getRatingCriteriaDtos(imageGallery.getContentId(), imageUid, userId); + sessionMap.put(AttributeNames.ATTR_ITEM_RATING_DTO, itemRatingDto); + + // store how many items are rated + int countRatedImages = service.getCountItemsRatedByUser(imageGallery.getContentId(), userId.intValue()); + sessionMap.put(AttributeNames.ATTR_COUNT_RATED_ITEMS, countRatedImages); } - if (!isTeacher && imageGallery.isAllowVote()) { + if (imageGallery.isAllowVote()) { boolean isVotedForThisImage = false; - ImageVote imageVote = service.getImageVoteByImageAndUser(image.getUid(), userId); + ImageVote imageVote = service.getImageVoteByImageAndUser(imageUid, userId); if (imageVote != null && imageVote.isVoted()) { isVotedForThisImage = true; } sessionMap.put(ImageGalleryConstants.PARAM_IS_VOTED, isVotedForThisImage); } // set visibility of "Delete image" button + boolean isAuthor = !image.isCreateByAuthor() && (createdBy != null) && (createdBy.getUserId().equals(userId)); sessionMap.put(ImageGalleryConstants.PARAM_IS_AUTHOR, isAuthor); request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); return mapping.findForward(ImageGalleryConstants.SUCCESS); @@ -899,7 +904,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/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -68,7 +68,6 @@ * * @author Andrey Balan * - * @version $Revision$ */ public class ExportServlet extends AbstractExportPortfolioServlet { private static final long serialVersionUID = -4529093489007108143L; Index: lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag (.../AuthoringRatingCriteria.tag) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag (.../AuthoringRatingCriteria.tag) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -16,13 +16,28 @@ <%@ attribute name="criterias" required="true" rtexprvalue="true" type="java.util.Collection" %> <%-- Optional attribute --%> +<%@ attribute name="hasRatingLimits" required="false" rtexprvalue="true" %> +<%@ attribute name="formContentPrefix" 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" %> +<%@ attribute name="allowCommentsLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="minNumberWordsLabel" required="false" rtexprvalue="true" %> <%-- Default value for message key --%> + + + + + + @@ -38,7 +53,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-

+

- - - - - + + + + - - - + + + + +
- - - - -
">
- -
">
+ +
+ + + + +
">
+ +
">
+
- - - - -
">
+ + + +
">
+
+ +
">
- -
">
-
-
-
" >
-
+
" >
+
-
+ + +
+ + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + +
+
+ +
+ checked="checked" + /> + + +
+ + +
+ +
+
\ No newline at end of file Index: lams_tool_images/web/WEB-INF/tags/Rating.tag =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/WEB-INF/tags/Rating.tag (.../Rating.tag) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/web/WEB-INF/tags/Rating.tag (.../Rating.tag) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -13,105 +13,165 @@ <%@ taglib uri="tags-function" prefix="fn" %> -<%@ attribute name="ratingDtos" required="false" rtexprvalue="true" type="java.util.Collection" %> +<%@ attribute name="itemRatingDto" required="true" rtexprvalue="true" type="org.lamsfoundation.lams.rating.dto.ItemRatingDTO" %> <%-- Optional attribute --%> <%@ attribute name="disabled" required="false" rtexprvalue="true" %> -<%@ attribute name="numberVotesLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="isItemAuthoredByUser" required="false" rtexprvalue="true" %> +<%@ attribute name="maxRates" required="false" rtexprvalue="true" %> +<%@ attribute name="countRatedItems" required="false" rtexprvalue="true" %> +<%@ attribute name="yourRatingLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="averageRatingLabel" required="false" rtexprvalue="true" %> +<%@ attribute name="minNumberWordsLabel" required="false" rtexprvalue="true" %> <%-- Default value for message key --%> - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - +<%--Rating stars area---------------------------------------%> - - - +
- - - + + + + + + + + + + + + +

- ${ratingDto.ratingCriteria.title} + ${criteriaDto.ratingCriteria.title}

- -
-
-
- - - - - - - - ${ratingDto.numberOfVotes} - - + + + + + + + + + +
- + + + +
+ + + + + + ${criteriaDto.numberOfVotes} + + +
+
+ + +
style="visibility: hidden;" + > + + + + + + + + + + + + + ${criteriaDto.numberOfVotes} + + +
+ +
+
+
- \ No newline at end of file + +
+ +<%--Comments area---------------------------------------%> + +
+ + + + + + + + + + + +
+ +
+
+
+ + +
+ +
+
+ + +
+ + + + +
+ + : + +
+
+ + + +
+
+
+
+
+ +
+
\ No newline at end of file Index: lams_tool_images/web/pages/authoring/advance.jsp =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/pages/authoring/advance.jsp (.../advance.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/web/pages/authoring/advance.jsp (.../advance.jsp) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -29,6 +29,7 @@ document.imageGalleryForm.notifyTeachersOnImageSumbit.checked = false; document.imageGalleryForm.notifyTeachersOnImageSumbit.disabled = ! eval(document.imageGalleryForm.notifyTeachersOnImageSumbit.disabled); } + @@ -63,15 +64,17 @@

+ -

+

@@ -99,16 +102,16 @@

style="display:none;" > - +

- - + Index: lams_tool_images/web/pages/authoring/authoring.jsp =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -3,23 +3,24 @@ <%@ 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 =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -36,12 +36,8 @@ #check-for-new-button, #add-new-image-button, #delete-button { } .extra-controls-inner { - width: 60%; - margin: 0px auto; + float: right; } - .extra-controls-inner2 { - text-align: center; - } .caption{ color:#0087e5; font:italic 14px georgia,serif; @@ -51,19 +47,22 @@ font-size:11px; } #extra-controls { - display: table-cell; + text-align: center; + float: right; + clear: both; + padding-top: 20px; } - #comments-area { - display: table-cell; - width: 68%; + [id^=comments-area] { + width: 400px; + float: right; + clear: both; + padding: 10px 0 20px; } - #comment-textarea { - margin-right:10px; - width:99%; + [id^=comment-textarea] { + width: 370px; } - #comment-button { + .button.add-comment { margin-right: 2px; - float: right; margin-top: 10px; } table.forum { @@ -83,15 +82,22 @@ text-align: center; padding-top: 10px; } - #image-info { - display: table; - width: 100%; + #image-info:after { + content: " "; + display: block; + height: 0; + clear: both; } - + #kkk{ + float:right; + } .space-bottom-top { padding-top: 40px; } + + + @@ -166,22 +172,9 @@ return false; } - var imageInfoTargetDiv = "#image-info"; - function addNewComment(currentImageUid, comment) { - var url = ""; - $(imageInfoTargetDiv).load( - url, - { - currentImageUid: currentImageUid, - comment: comment, - sessionMapID: "${sessionMapID}" - } - ); - } - function loadImageData(imageUid) { - $(imageInfoTargetDiv).load( + $("#image-info").load( "", { imageUid: imageUid, @@ -217,6 +210,39 @@

+ + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+ <%@ include file="/common/messages.jsp"%> <%--Main image---------------------------------------------------%> @@ -227,11 +253,9 @@ <%--Comments & Ranking/Voting area----------------------------------------------%> - -
- <%@ include file="/pages/learning/parts/commentsarea.jsp"%> -
-
+
+ <%@ include file="/pages/learning/parts/commentsarea.jsp"%> +
<%--Reflection--------------------------------------------------%> @@ -268,7 +292,9 @@ <%--Bottom buttons-------------------------------------------%> -
+
style="display:none;" + > Index: lams_tool_images/web/pages/learning/parts/commentsarea.jsp =================================================================== diff -u -rf3be94729c90c7390a6aea11d1886a4b72d96670 -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/pages/learning/parts/commentsarea.jsp (.../commentsarea.jsp) (revision f3be94729c90c7390a6aea11d1886a4b72d96670) +++ lams_tool_images/web/pages/learning/parts/commentsarea.jsp (.../commentsarea.jsp) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -1,23 +1,47 @@ <%@ include file="/common/taglibs.jsp"%> - - + + + + + + - + + + + + + + + -<%--Comments area---------------------------------------%> -
- + - <%@ include file="/common/messages.jsp"%> + <%--Ranking area---------------------------------------%> -
- -
+ - - -
- - - - - - - - - - - - - -
- - - - - - - - - -
-
- -
-
- -
- - -
- - - - - - - -
-
- + +

-
-
- <%--Ranking area---------------------------------------%> - - -
- -
-

-
- -
- <%--Voting area--------------%> - + @@ -150,6 +115,5 @@ -
Index: lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp =================================================================== diff -u -r26654d6d3622f1dd74cf7b311ead1d0bb238b05f -ra41ef185bfa95828df54b39993cbcfbad31f1d55 --- lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp (.../advanceOptions.jsp) (revision 26654d6d3622f1dd74cf7b311ead1d0bb238b05f) +++ lams_tool_images/web/pages/monitoring/parts/advanceOptions.jsp (.../advanceOptions.jsp) (revision a41ef185bfa95828df54b39993cbcfbad31f1d55) @@ -118,6 +118,40 @@ + + + + + + + + + + ${sessionMap.imageGallery.minimumRates} + + + + + + + + + + + + + + + + + ${sessionMap.imageGallery.maximumRates} + + + + + + +