Index: lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml =================================================================== diff -u --- lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml (revision 0) +++ lams_tool_images/conf/hibernate/mappings/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.hbm.xml (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_images/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r9dcdc46408a8664a0fb27f09ae58a340c15f5764 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 9dcdc46408a8664a0fb27f09ae58a340c15f5764) +++ lams_tool_images/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -168,5 +168,8 @@ label.learning.delete.image =Delete image label.submit =Finish +label.rating.criterias =Rating criterias +label.add.criteria =Add Criteria +label.number.of.votes ={0} / {1} votes #======= End labels: Exported 161 labels for en AU ===== Index: lams_tool_images/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r6d674e346dea6ce7a824366c8a7c315660677744 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 6d674e346dea6ce7a824366c8a7c315660677744) +++ lams_tool_images/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -172,14 +172,6 @@ validate="false"> - - - - + + Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java =================================================================== diff -u -r4d7dfe83093db060d8edeab425ce01543b38b530 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java (.../ImageGallery.java) (revision 4d7dfe83093db060d8edeab425ce01543b38b530) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallery.java (.../ImageGallery.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -23,25 +23,18 @@ /* $Id$ */ package org.lamsfoundation.lams.tool.imageGallery.model; -import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.Iterator; -import java.util.List; import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; -import org.lamsfoundation.lams.tool.imageGallery.util.ImageGalleryToolContentHandler; +import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; /** * ImageGallery * - * @hibernate.class table="tl_laimag10_imagegallery" - * */ public class ImageGallery implements Cloneable { @@ -56,13 +49,13 @@ private String title; private String instructions; - + private Long nextImageTitle; // advance private boolean allowVote; - + private boolean allowCommentImages; private boolean allowShareImages; @@ -75,6 +68,8 @@ private boolean allowRank; + private Set ratingCriterias; + // general infomation private Date created; @@ -88,7 +83,7 @@ private boolean reflectOnActivity; private String reflectInstructions; - + private boolean notifyTeachersOnImageSumbit; /** @@ -116,6 +111,15 @@ item.setCreateBy(toContent.getCreatedBy()); } } + + // reset contentId + if (toContent.getRatingCriterias() != null) { + Set criterias = toContent.getRatingCriterias(); + for (LearnerItemRatingCriteria criteria : criterias) { + criteria.setToolContentId(contentId); + } + } + return toContent; } @@ -126,21 +130,34 @@ try { imageGallery = (ImageGallery) super.clone(); imageGallery.setUid(null); + + // clone imageGalleryItems as well if (imageGalleryItems != null) { - Iterator iter = imageGalleryItems.iterator(); - Set set = new HashSet(); - while (iter.hasNext()) { - ImageGalleryItem item = (ImageGalleryItem) iter.next(); + Set newItems = new HashSet(); + for (ImageGalleryItem item : (Set) imageGalleryItems) { ImageGalleryItem newItem = (ImageGalleryItem) item.clone(); // just clone old file without duplicate it in repository - set.add(newItem); + newItems.add(newItem); } - imageGallery.imageGalleryItems = set; + imageGallery.imageGalleryItems = newItems; } - // clone ReourceUser as well + + // clone ImageGalleryUser as well if (createdBy != null) { imageGallery.setCreatedBy((ImageGalleryUser) createdBy.clone()); } + + // clone ratingCriterias as well + if (ratingCriterias != null) { + Set newCriterias = new HashSet(); + for (LearnerItemRatingCriteria criteria : (Set) ratingCriterias) { + LearnerItemRatingCriteria newCriteria = (LearnerItemRatingCriteria) criteria.clone(); + // just clone old file without duplicate it in repository + newCriterias.add(newCriteria); + } + imageGallery.ratingCriterias = newCriterias; + } + } catch (CloneNotSupportedException e) { ImageGallery.log.error("When clone " + ImageGallery.class + " failed"); } @@ -159,14 +176,15 @@ final ImageGallery genericEntity = (ImageGallery) o; - return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title).append( - instructions, genericEntity.instructions).append(created, genericEntity.created) + return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title) + .append(instructions, genericEntity.instructions).append(created, genericEntity.created) .append(updated, genericEntity.updated).append(createdBy, genericEntity.createdBy).isEquals(); } @Override public int hashCode() { - return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated).append(createdBy).toHashCode(); + return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated) + .append(createdBy).toHashCode(); } /** @@ -188,7 +206,6 @@ * Returns the object's creation date * * @return date - * @hibernate.property column="create_date" */ public Date getCreated() { return created; @@ -207,7 +224,6 @@ * Returns the object's date of last update * * @return date updated - * @hibernate.property column="update_date" */ public Date getUpdated() { return updated; @@ -225,23 +241,20 @@ /** * @return Returns the userid of the user who created the Share imageGallery. * - * @hibernate.many-to-one cascade="save-update" column="create_by" - * */ public ImageGalleryUser getCreatedBy() { return createdBy; } /** * @param createdBy - * The userid of the user who created this Share imageGallery. + * The userid of the user who created this Share imageGallery. */ public void setCreatedBy(ImageGalleryUser createdBy) { this.createdBy = createdBy; } /** - * @hibernate.id column="uid" generator-class="native" */ public Long getUid() { return uid; @@ -254,16 +267,14 @@ /** * @return Returns the title. * - * @hibernate.property column="title" - * */ public String getTitle() { return title; } /** * @param title - * The title to set. + * The title to set. */ public void setTitle(String title) { this.title = title; @@ -272,25 +283,21 @@ /** * @return Returns the lockWhenFinish. * - * @hibernate.property column="lock_on_finished" - * */ public boolean getLockWhenFinished() { return lockWhenFinished; } /** * @param lockWhenFinished - * Set to true to lock the imageGallery for finished users. + * Set to true to lock the imageGallery for finished users. */ public void setLockWhenFinished(boolean lockWhenFinished) { this.lockWhenFinished = lockWhenFinished; } /** * @return Returns the instructions set by the teacher. - * - * @hibernate.property column="instructions" type="text" */ public String getInstructions() { return instructions; @@ -299,11 +306,9 @@ public void setInstructions(String instructions) { this.instructions = instructions; } - + /** * @return Returns the next condecutive integer for constructing image title. - * - * @hibernate.property column="next_image_title" */ public Long getNextImageTitle() { return nextImageTitle; @@ -315,11 +320,6 @@ /** * - * - * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="create_date desc" - * @hibernate.collection-key column="imageGallery_uid" - * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem" - * * @return */ public Set getImageGalleryItems() { @@ -331,7 +331,6 @@ } /** - * @hibernate.property column="content_in_use" * @return */ public boolean isContentInUse() { @@ -343,7 +342,6 @@ } /** - * @hibernate.property column="define_later" * @return */ public boolean isDefineLater() { @@ -355,7 +353,6 @@ } /** - * @hibernate.property column="content_id" unique="true" * @return */ public Long getContentId() { @@ -367,7 +364,6 @@ } /** - * @hibernate.property column="allow_comment_images" * @return */ public boolean isAllowCommentImages() { @@ -379,7 +375,6 @@ } /** - * @hibernate.property column="allow_share_images" * @return */ public boolean isAllowShareImages() { @@ -391,7 +386,6 @@ } /** - * @hibernate.property column="allow_vote" * @return */ public boolean isAllowVote() { @@ -403,7 +397,6 @@ } /** - * @hibernate.property column="reflect_instructions" * @return */ public String getReflectInstructions() { @@ -415,7 +408,6 @@ } /** - * @hibernate.property column="reflect_on_activity" * @return */ public boolean isReflectOnActivity() { @@ -427,7 +419,6 @@ } /** - * @hibernate.property column="allow_rank" * @return */ public boolean isAllowRank() { @@ -439,9 +430,20 @@ } /** - * @hibernate.property column="image_submit_notify" + * * @return */ + public Set getRatingCriterias() { + return ratingCriterias; + } + + public void setRatingCriterias(Set ratingCriterias) { + this.ratingCriterias = ratingCriterias; + } + + /** + * @return + */ public boolean isNotifyTeachersOnImageSumbit() { return notifyTeachersOnImageSumbit; } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java =================================================================== diff -u -r7041999fcaee0534c3b48e9cea84934662d2de51 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision 7041999fcaee0534c3b48e9cea84934662d2de51) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGalleryItem.java (.../ImageGalleryItem.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -36,7 +36,6 @@ * @hibernate.class table="tl_laimag10_imagegallery_item" * * @author Andrey Balan - * */ public class ImageGalleryItem implements Cloneable { @@ -108,6 +107,7 @@ try { image = (ImageGalleryItem) super.clone(); image.setUid(null); + // clone ImageGalleryUser as well if (this.createBy != null) { image.setCreateBy((ImageGalleryUser) this.createBy.clone()); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallerySession.java =================================================================== diff -u -rde59f382658daefe4f6679aaaea621284d1c72cc -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallerySession.java (.../ImageGallerySession.java) (revision de59f382658daefe4f6679aaaea621284d1c72cc) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/model/ImageGallerySession.java (.../ImageGallerySession.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -30,7 +30,7 @@ /** * ImageGallery * - * @author Dapeng Ni + * @author Andrey Balan * * @hibernate.class table="tl_laimag10_session" * Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java =================================================================== diff -u -rbb597b8155375e6ac4dfe280f630d323b6e5e575 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision bb597b8155375e6ac4dfe280f630d323b6e5e575) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/IImageGalleryService.java (.../IImageGalleryService.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -28,21 +28,19 @@ import java.util.Set; import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.rating.dto.RatingDTO; +import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.tool.imageGallery.dto.ReflectDTO; import org.lamsfoundation.lams.tool.imageGallery.dto.Summary; import org.lamsfoundation.lams.tool.imageGallery.dto.UserImageContributionDTO; import org.lamsfoundation.lams.tool.imageGallery.model.ImageComment; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryAttachment; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryConfigItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageRating; import org.lamsfoundation.lams.tool.imageGallery.model.ImageVote; -import org.lamsfoundation.lams.usermanagement.User; /** * @author Dapeng.Ni @@ -151,14 +149,13 @@ */ void deleteImage(Long toolSessionId, Long imageUid); - /** - * Save/update ImageRating. - * - * @param rating - * ImageRating - * @return - */ - void saveOrUpdateImageRating(ImageRating rating); + List getRatingCriterias(Long toolContentId); + + void saveOrUpdateRatingCriteria(RatingCriteria criteria); + + void deleteRatingCriteria(Long ratingCriteriaId); + + List getRatingDtos(ImageGallery imageGallery, Long imageUid, Long userId); /** * Save/update ImageVote. @@ -216,15 +213,6 @@ ImageGallery getImageGalleryByContentId(Long contentId); /** - * Returns imageRating by the given imageUid and userId - * - * @param imageUid - * @param userId - * @return - */ - ImageRating getImageRatingByImageAndUser(Long imageUid, Long userId); - - /** * Returns imageVote by the given imageUid and userId * * @param imageUid Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== diff -u -rcdec304befa7df4b107e2219638b27ef75fb49a5 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision cdec304befa7df4b107e2219638b27ef75fb49a5) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -33,6 +33,7 @@ import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -52,10 +53,12 @@ import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; -import org.lamsfoundation.lams.lesson.service.ILessonService; 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.model.RatingCriteria; +import org.lamsfoundation.lams.rating.service.IRatingService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; @@ -152,6 +155,8 @@ private IExportToolContentService exportContentService; private ICoreNotebookService coreNotebookService; + + private IRatingService ratingService; private IEventNotificationService eventNotificationService; @@ -230,16 +235,6 @@ saveOrUpdateImageGallery(imageGallery); } - @Override - public ImageRating getImageRatingByImageAndUser(Long imageUid, Long userId) { - return imageRatingDao.getImageRatingByImageAndUser(imageUid, userId); - } - - @Override - public void saveOrUpdateImageRating(ImageRating rating) { - imageRatingDao.saveObject(rating); - } - public ImageVote getImageVoteByImageAndUser(Long imageUid, Long userId) { return imageVoteDao.getImageVoteByImageAndUser(imageUid, userId); } @@ -377,6 +372,22 @@ public void updateEntry(NotebookEntry notebookEntry) { coreNotebookService.updateEntry(notebookEntry); } + + @Override + public List getRatingCriterias(Long toolContentId) { + List ratingCriterias = ratingService.getCriteriasByToolContentId(toolContentId); + return ratingCriterias; + } + + @Override + public void saveOrUpdateRatingCriteria(RatingCriteria criteria) { + ratingService.saveOrUpdateRatingCriteria(criteria); + } + + @Override + public void deleteRatingCriteria(Long ratingCriteriaId) { + ratingService.deleteRatingCriteria(ratingCriteriaId); + } @Override public ImageGalleryUser getUser(Long uid) { @@ -1092,6 +1103,10 @@ public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { this.coreNotebookService = coreNotebookService; } + + public void setRatingService(IRatingService ratingService) { + this.ratingService = ratingService; + } public void setEventNotificationService(IEventNotificationService eventNotificationService) { this.eventNotificationService = eventNotificationService; @@ -1134,9 +1149,7 @@ return images; } - /** - * {@inheritDoc} - */ + @Deprecated public Object[] getRatingForGroup(Long imageUid, Long sessionId) { List users = imageGalleryUserDao.getBySessionID(sessionId); Long numberRatings = new Long(0); @@ -1157,6 +1170,20 @@ 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 -r7041999fcaee0534c3b48e9cea84934662d2de51 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 7041999fcaee0534c3b48e9cea84934662d2de51) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -26,10 +26,11 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; +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; @@ -52,11 +53,11 @@ import org.apache.struts.action.ActionMessages; import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.authoring.web.AuthoringConstants; -import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +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; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryAttachment; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; @@ -223,6 +224,10 @@ 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); sessionMap.put(ImageGalleryConstants.ATTR_IMAGE_GALLERY_FORM, imageGalleryForm); sessionMap.put(ImageGalleryConstants.ATTR_NEXT_IMAGE_TITLE, imageGallery.getNextImageTitle()); @@ -293,10 +298,10 @@ ImageGallery imageGallery = imageGalleryForm.getImageGallery(); IImageGalleryService service = getImageGalleryService(); + Long contentId = imageGalleryForm.getImageGallery().getContentId(); // **********************************Get ImageGallery PO********************* - ImageGallery imageGalleryPO = service.getImageGalleryByContentId(imageGalleryForm.getImageGallery() - .getContentId()); + ImageGallery imageGalleryPO = service.getImageGalleryByContentId(contentId); if (imageGalleryPO == null) { // new ImageGallery, create it. imageGalleryPO = imageGallery; @@ -327,7 +332,7 @@ // get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); ImageGalleryUser imageGalleryUser = service.getUserByIDAndContent(new Long(user.getUserID().intValue()), - imageGalleryForm.getImageGallery().getContentId()); + contentId); if (imageGalleryUser == null) { imageGalleryUser = new ImageGalleryUser(user, imageGalleryPO); } @@ -368,7 +373,42 @@ 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); + // 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); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java =================================================================== diff -u -r6c4f0e1c0f459cf029ae028396b5435a12eb7516 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision 6c4f0e1c0f459cf029ae028396b5435a12eb7516) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -37,7 +37,6 @@ import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionErrors; @@ -49,12 +48,11 @@ import org.apache.struts.action.ActionRedirect; import org.apache.struts.config.ForwardConfig; import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.events.DeliveryMethodMail; -import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.learning.web.bean.ActivityPositionDTO; 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.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; import org.lamsfoundation.lams.tool.imageGallery.model.ImageComment; @@ -63,7 +61,6 @@ import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageRating; import org.lamsfoundation.lams.tool.imageGallery.model.ImageVote; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; @@ -74,7 +71,6 @@ import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageRatingForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.MultipleImagesForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.ReflectionForm; -import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.FileValidatorUtil; import org.lamsfoundation.lams.util.WebUtil; @@ -127,9 +123,6 @@ if (param.equals("addNewComment")) { return addNewComment(mapping, form, request, response); } - if (param.equals("saveOrUpdateRating")) { - return saveOrUpdateRating(mapping, form, request, response); - } if (param.equals("vote")) { return vote(mapping, form, request, response); } @@ -203,6 +196,7 @@ 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(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); sessionMap.put(AttributeNames.ATTR_MODE, mode); @@ -467,9 +461,7 @@ Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); IImageGalleryService service = getImageGalleryService(); ImageGallery imageGallery = service.getImageGalleryBySessionId(sessionId); - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); - ImageGalleryUser imageGalleryUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), - sessionId); + Long userId = (Long) sessionMap.get(AttributeNames.PARAM_USER_ID); Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); ImageGalleryItem image = service.getImageGalleryItemByUid(imageUid); @@ -487,7 +479,7 @@ ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); boolean isTeacher = mode != null && mode.isTeacher(); boolean isAuthor = !isTeacher && !image.isCreateByAuthor() && (createdBy != null) - && (createdBy.getUserId().equals(imageGalleryUser.getUserId())); + && (createdBy.getUserId().equals(userId)); if (imageGallery.isAllowCommentImages()) { TreeSet comments = new TreeSet(new ImageCommentComparator()); @@ -504,18 +496,13 @@ } if (!isTeacher && imageGallery.isAllowRank()) { - ImageRating imageRating = service.getImageRatingByImageAndUser(imageUid, imageGalleryUser.getUserId()); - int rating = imageRating == null ? 0 : imageRating.getRating(); - - Object[] ratingForGroup = service.getRatingForGroup(imageUid, sessionId); - sessionMap.put(ImageGalleryConstants.PARAM_NUMBER_RATINGS, ((Long) ratingForGroup[0]).toString()); - sessionMap.put(ImageGalleryConstants.PARAM_AVERAGE_RATING, ((Float) ratingForGroup[1]).toString()); - sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_RATING, rating); + List ratingDtos = service.getRatingDtos(imageGallery, imageUid, userId); + sessionMap.put(ImageGalleryConstants.ATTR_RATING_DTOS, ratingDtos); } if (!isTeacher && imageGallery.isAllowVote()) { boolean isVotedForThisImage = false; - ImageVote imageVote = service.getImageVoteByImageAndUser(image.getUid(), imageGalleryUser.getUserId()); + ImageVote imageVote = service.getImageVoteByImageAndUser(image.getUid(), userId); if (imageVote != null && imageVote.isVoted()) { isVotedForThisImage = true; } @@ -595,47 +582,6 @@ * @param response * @return */ - private ActionForward saveOrUpdateRating(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); - IImageGalleryService service = getImageGalleryService(); - - int rating = NumberUtils.stringToInt(((ImageRatingForm) form).getRating()); - Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); - ImageGalleryUser imageGalleryUser = service.getUserByIDAndSession(new Long(user.getUserID().intValue()), - sessionId); - ImageRating imageRating = service.getImageRatingByImageAndUser(imageUid, imageGalleryUser.getUserId()); - - // persist ImageGalleryItem changes in DB - ImageGalleryItem dbImage = service.getImageGalleryItemByUid(imageUid); - if (imageRating == null) { // add - imageRating = new ImageRating(); - imageRating.setCreateBy(imageGalleryUser); - imageRating.setImageGalleryItem(dbImage); - } - imageRating.setRating(rating); - service.saveOrUpdateImageRating(imageRating); - - // to make available new changes be visible in jsp page - sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_IMAGE, dbImage); - sessionMap.put(ImageGalleryConstants.PARAM_CURRENT_RATING, rating); - - request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); - return mapping.findForward(ImageGalleryConstants.SUCCESS); - } - - /** - * Move down current item. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ private ActionForward vote(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java =================================================================== diff -u -r7041999fcaee0534c3b48e9cea84934662d2de51 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 7041999fcaee0534c3b48e9cea84934662d2de51) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -48,7 +48,6 @@ import org.lamsfoundation.lams.tool.imageGallery.dto.UserImageContributionDTO; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallery; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryItem; -import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; Index: lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag =================================================================== diff -u --- lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag (revision 0) +++ lams_tool_images/web/WEB-INF/tags/AuthoringRatingCriteria.tag (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -0,0 +1,212 @@ +<% + /** + * AuthoringRatingCriteria.tag + * Author: Andrey Balan + * Description: Creates list of rating criterias for authoring page + */ + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-function" prefix="fn" %> + + +<%@ attribute name="criterias" required="true" rtexprvalue="true" type="java.util.Collection" %> + +<%-- Optional attribute --%> +<%@ 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" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + + + + + +
+

+ +

+ + + + + + + + + + + + + + +
+ + + + + "> + + "> + + + + + + "> + + + "> + + + " /> +
+ +
+ + + +
+ +
+ \ No newline at end of file Index: lams_tool_images/web/WEB-INF/tags/Rating.tag =================================================================== diff -u --- lams_tool_images/web/WEB-INF/tags/Rating.tag (revision 0) +++ lams_tool_images/web/WEB-INF/tags/Rating.tag (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -0,0 +1,117 @@ +<% + /** + * Rating.tag + * Author: Andrey Balan + * Description: Shows rating stars widget + */ + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-function" prefix="fn" %> + + +<%@ attribute name="ratingDtos" required="false" rtexprvalue="true" type="java.util.Collection" %> + +<%-- Optional attribute --%> +<%@ attribute name="disabled" required="false" rtexprvalue="true" %> +<%@ attribute name="numberVotesLabel" required="false" rtexprvalue="true" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

+ ${ratingDto.ratingCriteria.title} +

+ +
+
+ +
+ + + + + + + + ${ratingDto.numberOfVotes} + + +
+ +
+ +
+ \ No newline at end of file Index: lams_tool_images/web/WEB-INF/tlds/lams/lams.tld =================================================================== diff -u -r606581007abbdaee5483777096f32ffac1c3e3eb -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 606581007abbdaee5483777096f32ffac1c3e3eb) +++ lams_tool_images/web/WEB-INF/tlds/lams/lams.tld (.../lams.tld) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -426,6 +426,14 @@ AuthoringButton /WEB-INF/tags/AuthoringButton.tag + + + AuthoringRatingCriteria + /WEB-INF/tags/AuthoringRatingCriteria.tag + + + Rating + /WEB-INF/tags/Rating.tag headItems Index: lams_tool_images/web/includes/javascript/imageGallerycommon.js =================================================================== diff -u -r8a7c47632a6a93892f015f068d12adb376c0ae2d -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/web/includes/javascript/imageGallerycommon.js (.../imageGallerycommon.js) (revision 8a7c47632a6a93892f015f068d12adb376c0ae2d) +++ lams_tool_images/web/includes/javascript/imageGallerycommon.js (.../imageGallerycommon.js) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -1,10 +1,10 @@ - function showBusy(targetDiv){ - if($(targetDiv+"_Busy") != null){ - Element.show(targetDiv+"_Busy"); - } +function showBusy(targetDiv){ + if($(targetDiv+"_Busy") != null){ + document.getElementById(targetDiv+"_Busy").style.display = ''; } - function hideBusy(targetDiv){ - if($(targetDiv+"_Busy") != null){ - Element.hide(targetDiv+"_Busy"); - } - } +} +function hideBusy(targetDiv){ + if($(targetDiv+"_Busy") != null){ + document.getElementById(targetDiv+"_Busy").style.display = 'none'; + } +} Index: lams_tool_images/web/pages/authoring/advance.jsp =================================================================== diff -u -rdb681dba0a5e44ae9f4e4cf6b9bc575d6175212f -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/web/pages/authoring/advance.jsp (.../advance.jsp) (revision db681dba0a5e44ae9f4e4cf6b9bc575d6175212f) +++ lams_tool_images/web/pages/authoring/advance.jsp (.../advance.jsp) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -1,6 +1,15 @@ <%@ include file="/common/taglibs.jsp"%> - + + @@ -44,8 +54,7 @@

-

-        +

@@ -70,26 +79,30 @@ -

-        - checked="checked" - disabled="disabled" - /> - -

- -        - checked="checked" - disabled="disabled" - /> - +

+ checked="checked" + disabled="disabled" + /> + +

+ + checked="checked" + disabled="disabled" + /> + + +
style="display:none;" > + +
+

Index: lams_tool_images/web/pages/authoring/authoring.jsp =================================================================== diff -u -r7041999fcaee0534c3b48e9cea84934662d2de51 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision 7041999fcaee0534c3b48e9cea84934662d2de51) +++ lams_tool_images/web/pages/authoring/authoring.jsp (.../authoring.jsp) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -9,7 +9,7 @@ <fmt:message key="label.author.title" /> <%@ include file="/common/tabbedheader.jsp"%> - + @@ -132,8 +149,8 @@ - width="100%" + contentFolderID="${formBean.contentFolderID}" + width="100%"> Index: lams_tool_images/web/pages/learning/learning.jsp =================================================================== diff -u -rbf49caa03b4d5d074f8c7dcfb3b761e66c57d58d -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision bf49caa03b4d5d074f8c7dcfb3b761e66c57d58d) +++ lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -20,7 +20,6 @@ - - - @@ -314,75 +224,14 @@

- - -
- - <%--Ranking/Voting area---------------------------------------%> - - -
- - - - - -
- - - - - -
- -
-
- - -
-
-
- - - - - - -

- - -

- -
-
-
-
- - <%--"Check for new", "Add new image" and "Delete" buttons---------------%> - - - - - - - - - - - - - - - - -
-
- <%--Comments area----------------------------------------------%> - -
- <%@ include file="/pages/learning/parts/commentsarea.jsp"%> -
+ <%--Comments & Ranking/Voting area----------------------------------------------%> + + +
+ <%@ include file="/pages/learning/parts/commentsarea.jsp"%> +
+
<%--Reflection--------------------------------------------------%> Index: lams_tool_images/web/pages/learning/parts/commentsarea.jsp =================================================================== diff -u -r7041999fcaee0534c3b48e9cea84934662d2de51 -r9d14ce6a68469c1cd7f0522a2d39387016e35f1e --- lams_tool_images/web/pages/learning/parts/commentsarea.jsp (.../commentsarea.jsp) (revision 7041999fcaee0534c3b48e9cea84934662d2de51) +++ lams_tool_images/web/pages/learning/parts/commentsarea.jsp (.../commentsarea.jsp) (revision 9d14ce6a68469c1cd7f0522a2d39387016e35f1e) @@ -1,74 +1,155 @@ <%@ include file="/common/taglibs.jsp"%> - - - - - - + + + + + - - - - - - - - - - + + - <%@ include file="/common/messages.jsp"%> +<%--Comments area---------------------------------------%> +
+ -
- + <%@ include file="/common/messages.jsp"%> + +
+ +
+ + + +
+ + + + + + + + + + + + + +
+ + + + + + + + - +
+
+ +
+ +
- + +
+ + + + + + + +
+
+ + +
+ + +
+ + <%--Ranking area---------------------------------------%> -
- - - - - - - - + +
+ +
+

+
- - - - -
- - - - - - - - - -
-
- -
-
+
+ + <%--Voting area--------------%> + + + + + + +

+ disabled="disabled" + checked="checked" + /> + +

+
+
- - - -
- - + <%--"Check for new", "Add new image" and "Delete" buttons---------------%> + + + + + + + + +

+ + + +
+ + +

+ + + +
+
- - - -
-
- +