diff --git a/pom.xml b/pom.xml index f7e8c0744236db82f30b75790a8ef25dc98a3844..7ec81cfa86faaf2b3ed485325b188393aee84e2b 100644 --- a/pom.xml +++ b/pom.xml @@ -2022,12 +2022,6 @@ <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.7</version> - <exclusions><!-- use only xmlpull --> - <exclusion> - <artifactId>xpp3</artifactId> - <groupId>xpp3_min</groupId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>xerces</groupId> diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java index 140cb79f9445f46817057953215bc83d7d015703..b5fae29e1ec81e4a79556cc05c5f49efa5d00446 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java @@ -41,6 +41,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; @@ -93,11 +94,13 @@ public class QuestionPoolMainEditorController extends BasicController implements private QuestionsController markedQuestionsCtrl; private Controller presentationCtrl, sharePresentationCtrl; + private CloseableModalController cmc; private PoolsAdminController poolAdminCtrl; private QItemTypesAdminController typesCtrl; private QEducationalContextsAdminController levelsCtrl; private QLicensesAdminController licensesCtrl; private TaxonomyAdminController taxonomyCtrl; + private ShareItemOptionController shareItemsCtrl; private LayoutMain3ColsController columnLayoutCtr; private QuestionPoolAdminStatisticsController adminStatisticsCtrl; private DialogBoxController copyToMyCtrl; @@ -203,7 +206,23 @@ public class QuestionPoolMainEditorController extends BasicController implements @Override protected void event(UserRequest ureq, Controller source, Event event) { - if(event instanceof QPoolEvent) { + if(shareItemsCtrl == source) { + if(QPoolEvent.ITEM_SHARED.equals(event.getCommand())) { + List<QuestionItemShort> items = shareItemsCtrl.getItems(); + if(items.size() > 0) {//can only drop one item + QuestionItemShort item = items.get(0); + if(shareItemsCtrl.getGroups() != null) { + showInfo("item.shared", item.getTitle()); + } else if(shareItemsCtrl.getPools() != null) { + showInfo("item.pooled", item.getTitle()); + } + } + buildShareSubTreeModel(sharesNode); + menuTree.setDirty(true); + } + cmc.deactivate(); + cleanUp(); + } else if(event instanceof QPoolEvent) { if(QPoolEvent.ITEM_SHARED.equals(event.getCommand())) { buildShareSubTreeModel(sharesNode); menuTree.setDirty(true); @@ -232,9 +251,18 @@ public class QuestionPoolMainEditorController extends BasicController implements QuestionItemShort item = (QuestionItemShort)copyToMyCtrl.getUserObject(); doCopyToMy(ureq, item); } + } else if(cmc == source) { + cleanUp(); } super.event(ureq, source, event); } + + private void cleanUp() { + removeAsListenerAndDispose(shareItemsCtrl); + removeAsListenerAndDispose(cmc); + shareItemsCtrl = null; + cmc = null; + } @Override public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { @@ -265,11 +293,9 @@ public class QuestionPoolMainEditorController extends BasicController implements if(node != null) { Object userObj = node.getUserObject(); if(userObj instanceof BusinessGroup) { - qpoolService.shareItemsWithGroups(singletonList(item), singletonList((BusinessGroup)userObj), false); - showInfo("item.shared", item.getTitle()); + doShareItemsOptions(ureq, singletonList(item), singletonList((BusinessGroup)userObj), null); } else if(userObj instanceof Pool) { - qpoolService.addItemsInPools(singletonList(item), singletonList((Pool)userObj), false); - showInfo("item.pooled", item.getTitle()); + doShareItemsOptions(ureq, singletonList(item), null, singletonList((Pool)userObj)); } else if(userObj instanceof QuestionItemCollection) { qpoolService.addItemToCollection(singletonList(item), singletonList((QuestionItemCollection)userObj)); showInfo("item.collectioned", item.getTitle()); @@ -287,6 +313,18 @@ public class QuestionPoolMainEditorController extends BasicController implements } } + private void doShareItemsOptions(UserRequest ureq, List<QuestionItemShort> items, List<BusinessGroup> groups, List<Pool> pools) { + removeAsListenerAndDispose(cmc); + removeAsListenerAndDispose(shareItemsCtrl); + shareItemsCtrl = new ShareItemOptionController(ureq, getWindowControl(), items, groups, pools); + listenTo(shareItemsCtrl); + + cmc = new CloseableModalController(getWindowControl(), translate("close"), + shareItemsCtrl.getInitialComponent(), true, translate("share.item")); + cmc.activate(); + listenTo(cmc); + } + private void doCopyToMyConfirmation(UserRequest ureq, QuestionItemShort item) { String title = translate("copy"); String text = translate("copy.confirmation"); diff --git a/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java b/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java index b2c94621bcde0f349b3ccb8df6ef8a7078a1a3bf..640104209a5e323154f6144ce27ae7c804a7f196 100644 --- a/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java +++ b/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java @@ -64,6 +64,18 @@ public class ShareItemOptionController extends FormBasicController { initForm(ureq); } + + public List<QuestionItemShort> getItems() { + return items; + } + + public List<Pool> getPools() { + return pools; + } + + public List<BusinessGroup> getGroups() { + return groups; + } @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {