Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java =================================================================== diff -u -r666a01da9d0d2b4482ca00041527739b5e56b9f2 -r03d284a4bdb2a2f2d6f57d0810e465f437c25155 --- lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java (.../QbCollectionController.java) (revision 666a01da9d0d2b4482ca00041527739b5e56b9f2) +++ lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java (.../QbCollectionController.java) (revision 03d284a4bdb2a2f2d6f57d0810e465f437c25155) @@ -90,8 +90,9 @@ @RequestMapping("/showOne") public String showOneCollection(@RequestParam long collectionUid, Model model) throws Exception { model.addAttribute("collection", qbService.getCollection(collectionUid)); - model.addAttribute("availableOrganisations", - qbService.getShareableWithOrganisations(collectionUid, getUserId())); + int userId = getUserId(); + model.addAttribute("userId", userId); + model.addAttribute("availableOrganisations", qbService.getShareableWithOrganisations(collectionUid, userId)); model.addAttribute("questionCount", qbService.getCountCollectionQuestions(collectionUid, null)); model.addAttribute("isQtiExportEnabled", Configuration.getAsBoolean(ConfigurationKeys.QB_QTI_ENABLE)); return "qb/collection"; Index: lams_central/web/qb/collection.jsp =================================================================== diff -u -r80e8b14fbf1e51ddd5f16b6af99fcf5757909814 -r03d284a4bdb2a2f2d6f57d0810e465f437c25155 --- lams_central/web/qb/collection.jsp (.../collection.jsp) (revision 80e8b14fbf1e51ddd5f16b6af99fcf5757909814) +++ lams_central/web/qb/collection.jsp (.../collection.jsp) (revision 03d284a4bdb2a2f2d6f57d0810e465f437c25155) @@ -584,7 +584,7 @@ <%-- Do not display links for collection manipulation for public and private collections --%> -
Index: lams_common/src/java/org/lamsfoundation/lams/qb/dao/IQbDAO.java =================================================================== diff -u -rd578cfde655760533b6ede422e7cf675a8c4ca6d -r03d284a4bdb2a2f2d6f57d0810e465f437c25155 --- lams_common/src/java/org/lamsfoundation/lams/qb/dao/IQbDAO.java (.../IQbDAO.java) (revision d578cfde655760533b6ede422e7cf675a8c4ca6d) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dao/IQbDAO.java (.../IQbDAO.java) (revision 03d284a4bdb2a2f2d6f57d0810e465f437c25155) @@ -73,6 +73,8 @@ List getQuestionCollectionsByQuestionId(int qbQuestionId); + List getSharedQuestionCollections(int userId); + int getCountCollectionQuestions(long collectionUid, String search); void addCollectionQuestion(long collectionUid, int qbQuestionId); Index: lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java =================================================================== diff -u -rd578cfde655760533b6ede422e7cf675a8c4ca6d -r03d284a4bdb2a2f2d6f57d0810e465f437c25155 --- lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java (.../QbDAO.java) (revision d578cfde655760533b6ede422e7cf675a8c4ca6d) +++ lams_common/src/java/org/lamsfoundation/lams/qb/dao/hibernate/QbDAO.java (.../QbDAO.java) (revision 03d284a4bdb2a2f2d6f57d0810e465f437c25155) @@ -22,6 +22,7 @@ import org.lamsfoundation.lams.qb.model.QbQuestion; import org.lamsfoundation.lams.qb.model.QbToolQuestion; import org.lamsfoundation.lams.tool.ToolContent; +import org.lamsfoundation.lams.usermanagement.Role; public class QbDAO extends LAMSBaseDAO implements IQbDAO { @@ -90,6 +91,10 @@ private static final String FIND_QUESTION_COLLECTIONS_BY_QUESTION_ID = "SELECT c.* FROM lams_qb_collection_question AS cq " + "JOIN lams_qb_collection AS c ON cq.collection_uid = c.uid WHERE cq.qb_question_id = :qbQuestionId"; + private static final String FIND_SHARED_QUESTION_COLLECTIONS_BY_USER = "SELECT c FROM QbCollection AS c " + + "INNER JOIN c.organisations AS o INNER JOIN o.userOrganisations AS uo INNER JOIN uo.userOrganisationRoles AS r " + + "WHERE c.userId != :userId AND uo.user.userId = :userId AND r.role.roleId = " + Role.ROLE_AUTHOR; + private static final String ADD_COLLECTION_QUESTION = "INSERT INTO lams_qb_collection_question VALUES (:collectionUid, :qbQuestionId)"; private static final String IS_QUESTION_IN_COLLECTION = "SELECT 1 FROM lams_qb_collection_question WHERE collection_uid = :collectionUid " @@ -279,8 +284,8 @@ " JOIN lams_qb_collection_question collection ON question.question_id = collection.qb_question_id"); } if (learningDesignId != null) { - queryBuilder.append( - " JOIN lams_qb_tool_question tool_question ON question.uid = tool_question.qb_question_uid") + queryBuilder + .append(" JOIN lams_qb_tool_question tool_question ON question.uid = tool_question.qb_question_uid") .append(" JOIN lams_learning_activity activity USING (tool_content_id)"); } @@ -435,6 +440,12 @@ .setParameter("qbQuestionId", qbQuestionId).addEntity(QbCollection.class).list(); } + @Override + public List getSharedQuestionCollections(int userId) { + return getSession().createQuery(FIND_SHARED_QUESTION_COLLECTIONS_BY_USER, QbCollection.class) + .setParameter("userId", userId).getResultList(); + } + @SuppressWarnings("unchecked") @Override public List getCollectionQuestions(long collectionUid, Integer offset, Integer limit, String orderBy, Index: lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java =================================================================== diff -u -rbba82a2ff7eefb96488e0e095b8d1a153699266b -r03d284a4bdb2a2f2d6f57d0810e465f437c25155 --- lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision bba82a2ff7eefb96488e0e095b8d1a153699266b) +++ lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 03d284a4bdb2a2f2d6f57d0810e465f437c25155) @@ -629,7 +629,7 @@ @Override public List getUserCollections(int userId) { - List collections = new LinkedList<>(); + Set collections = new LinkedHashSet<>(); QbCollection privateCollection = getUserPrivateCollection(userId); collections.add(privateCollection); @@ -639,7 +639,10 @@ QbCollection publicCollection = getPublicCollection(); collections.add(publicCollection); - return collections; + List sharedCollections = qbDAO.getSharedQuestionCollections(userId); + collections.addAll(sharedCollections); + + return new LinkedList<>(collections); } @Override