Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java =================================================================== diff -u -rd709559abc2186520af2f18c3fc7417a5a598e9e -r21b12237b13026b0ff5303fd68e8bcf92d71eb73 --- lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java (.../EditQbQuestionController.java) (revision d709559abc2186520af2f18c3fc7417a5a598e9e) +++ lams_central/src/java/org/lamsfoundation/lams/web/qb/EditQbQuestionController.java (.../EditQbQuestionController.java) (revision 21b12237b13026b0ff5303fd68e8bcf92d71eb73) @@ -63,7 +63,7 @@ WebApplicationContext applicationcontext; /** - * Display empty page for new assessment question. + * Display empty page for new question. */ @RequestMapping("/initNewQuestion") public String initNewQuestion(@ModelAttribute("assessmentQuestionForm") QbQuestionForm form, @@ -110,10 +110,13 @@ if (isRequestCameFromAssessmentTool) { for (QbCollection collection : userCollections) { if (collection.isPersonal()) { - form.setCollectionUid(collection.getUid()); + form.setOldCollectionUid(collection.getUid()); break; } } + + } else { + form.setOldCollectionUid(collectionUid); } Integer type = NumberUtils.toInt(request.getParameter(QbConstants.ATTR_QUESTION_TYPE)); @@ -191,7 +194,7 @@ } else { collectionUid = questionCollections.iterator().next().getUid(); } - form.setCollectionUid(collectionUid); + form.setOldCollectionUid(collectionUid); } return findForwardByQuestionType(qbQuestion.getType()); @@ -247,23 +250,21 @@ userManagementService.save(qbQuestion); final boolean IS_REQUEST_CAME_FROM_ASSESSMENT_TOOL = StringUtils.isNotBlank(form.getSessionMapID()); - if (IS_REQUEST_CAME_FROM_ASSESSMENT_TOOL) { - - //take care about question's collections - Long collectionUid = form.getCollectionUid(); - qbService.addQuestionToCollection(collectionUid, qbQuestion.getQuestionId(), false); - //remove from the old collection, if needed - if (!isAddingQuestion) { - Collection oldQuestionCollections = qbService.getQuestionCollectionsByUid(oldQuestionUid); - Collection newQuestionCollections = qbService - .getQuestionCollectionsByUid(qbQuestion.getUid()); - oldQuestionCollections.removeAll(newQuestionCollections); - for (QbCollection obsoleteOldQuestionCollection : oldQuestionCollections) { - qbService.removeQuestionFromCollectionByQuestionId(obsoleteOldQuestionCollection.getUid(), - qbQuestion.getQuestionId()); - } - } + + //take care about question's collections. add to collection first + Long oldCollectionUid = form.getOldCollectionUid(); + Long newCollectionUid = form.getNewCollectionUid(); + if (isAddingQuestion || (IS_REQUEST_CAME_FROM_ASSESSMENT_TOOL && !newCollectionUid.equals(oldCollectionUid))) { + qbService.addQuestionToCollection(newCollectionUid, qbQuestion.getQuestionId(), false); + } + //remove from the old collection first, if needed + if (!isAddingQuestion && IS_REQUEST_CAME_FROM_ASSESSMENT_TOOL && !newCollectionUid.equals(oldCollectionUid)) { + qbService.removeQuestionFromCollectionByQuestionId(oldCollectionUid, qbQuestion.getQuestionId(), + false); + } + + if (IS_REQUEST_CAME_FROM_ASSESSMENT_TOOL) { //forward to Assessment controller String params = "?qbQuestionUid=" + qbQuestion.getUid(); params += "&questionModificationStatus=" + questionModificationStatus; Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java =================================================================== diff -u -r0b1e74374b821758fdda7835d8d283bf84fa8db0 -r21b12237b13026b0ff5303fd68e8bcf92d71eb73 --- lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java (.../QbCollectionController.java) (revision 0b1e74374b821758fdda7835d8d283bf84fa8db0) +++ lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java (.../QbCollectionController.java) (revision 21b12237b13026b0ff5303fd68e8bcf92d71eb73) @@ -186,7 +186,7 @@ @RequestMapping("/removeCollectionQuestion") @ResponseBody public void removeCollectionQuestion(@RequestParam long collectionUid, @RequestParam int qbQuestionId) { - qbService.removeQuestionFromCollectionByQuestionId(collectionUid, qbQuestionId); + qbService.removeQuestionFromCollectionByQuestionId(collectionUid, qbQuestionId, true); } @RequestMapping("/addCollectionQuestion") Index: lams_central/web/qb/authoring/addQuestionFooter.jsp =================================================================== diff -u -r6cbd849584c40532c6be292f9f009c88cde9439c -r21b12237b13026b0ff5303fd68e8bcf92d71eb73 --- lams_central/web/qb/authoring/addQuestionFooter.jsp (.../addQuestionFooter.jsp) (revision 6cbd849584c40532c6be292f9f009c88cde9439c) +++ lams_central/web/qb/authoring/addQuestionFooter.jsp (.../addQuestionFooter.jsp) (revision 21b12237b13026b0ff5303fd68e8bcf92d71eb73) @@ -9,7 +9,7 @@ - + +