Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -raec96466d0f510ff3a0acfc5651f485bb1b477d9 -rca75b4c508f9d195245818cdd4574f335e75d9c6 --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision aec96466d0f510ff3a0acfc5651f485bb1b477d9) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision ca75b4c508f9d195245818cdd4574f335e75d9c6) @@ -641,6 +641,7 @@ config.qb.qti.enable =Enable QTI question import/export config.qb.word.enable =Enable Word question import config.qb.collections.create.enable =Allow creating custom collections +config.qb.collections.transfer.enable =Allow question transfer between collections config.qb.monitors.read.only =Force read-only access for monitors config.qb.stats.min.participants =Minimum test participant number to calculate question indexes config.qb.stats.group.size =Percent of participants in top/bottom performers group (default: 27) Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java =================================================================== diff -u -rfe0a5324254ef622171304b5a01341d99e7b991a -rca75b4c508f9d195245818cdd4574f335e75d9c6 --- lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java (.../QbCollectionController.java) (revision fe0a5324254ef622171304b5a01341d99e7b991a) +++ lams_central/src/java/org/lamsfoundation/lams/web/qb/QbCollectionController.java (.../QbCollectionController.java) (revision ca75b4c508f9d195245818cdd4574f335e75d9c6) @@ -37,6 +37,8 @@ import org.lamsfoundation.lams.qb.service.IQbService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.CommonConstants; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; @@ -74,6 +76,9 @@ Collectors.toMap(QbCollection::getUid, c -> qbService.getCountCollectionQuestions(c.getUid(), null))); model.addAttribute("questionCount", questionCount); + model.addAttribute("createCollectionAllowed", + Configuration.getAsBoolean(ConfigurationKeys.QB_COLLECTIONS_CREATE_ALLOW)); + return "qb/collectionList"; } @@ -169,12 +174,18 @@ @ResponseBody public void addCollectionQuestion(@RequestParam long targetCollectionUid, @RequestParam boolean copy, @RequestParam long qbQuestionUid) { + if (!Configuration.getAsBoolean(ConfigurationKeys.QB_COLLECTIONS_TRANSFER_ALLOW)) { + throw new SecurityException("Transfering questions between collections is disabled"); + } qbService.addQuestionToCollection(targetCollectionUid, qbQuestionUid, copy); } @RequestMapping("/addCollection") @ResponseBody public void addCollection(@RequestParam String name) { + if (!Configuration.getAsBoolean(ConfigurationKeys.QB_COLLECTIONS_CREATE_ALLOW)) { + throw new SecurityException("New collections are disabled"); + } qbService.addCollection(getUserId(), name); } Index: lams_central/src/java/org/lamsfoundation/lams/web/qb/QbStatsController.java =================================================================== diff -u -r0952bdcd231fe03cb52b8d821bc6cc1882b7c369 -rca75b4c508f9d195245818cdd4574f335e75d9c6 --- lams_central/src/java/org/lamsfoundation/lams/web/qb/QbStatsController.java (.../QbStatsController.java) (revision 0952bdcd231fe03cb52b8d821bc6cc1882b7c369) +++ lams_central/src/java/org/lamsfoundation/lams/web/qb/QbStatsController.java (.../QbStatsController.java) (revision ca75b4c508f9d195245818cdd4574f335e75d9c6) @@ -31,6 +31,8 @@ import org.lamsfoundation.lams.qb.model.QbCollection; import org.lamsfoundation.lams.qb.service.IQbService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -71,6 +73,9 @@ model.addAttribute("permanentRemovePossible", permanentRemove ? qbService.removeQuestionPossible(qbQuestionUid) : false); + model.addAttribute("transferAllowed", + Configuration.getAsBoolean(ConfigurationKeys.QB_COLLECTIONS_TRANSFER_ALLOW)); + return "qb/stats"; } Index: lams_central/web/qb/collection.jsp =================================================================== diff -u -rba4cb0681d080596444ca44c644a8ea0fdd8e743 -rca75b4c508f9d195245818cdd4574f335e75d9c6 --- lams_central/web/qb/collection.jsp (.../collection.jsp) (revision ba4cb0681d080596444ca44c644a8ea0fdd8e743) +++ lams_central/web/qb/collection.jsp (.../collection.jsp) (revision ca75b4c508f9d195245818cdd4574f335e75d9c6) @@ -13,6 +13,10 @@