From be3c1edd0a23c685e9cb3af213ee4d1f592b00ab Mon Sep 17 00:00:00 2001
From: gnaegi <none@none>
Date: Thu, 10 Oct 2013 08:58:45 +0200
Subject: [PATCH] OO-815 fix refreshing of menu tree in CP editor after import

---
 .../olat/ims/cp/ui/CPEditMainController.java   |  2 +-
 .../org/olat/ims/cp/ui/CPTreeController.java   | 18 ++++++++----------
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
index 7a1c6565032..2fe2403e12e 100644
--- a/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
+++ b/src/main/java/org/olat/ims/cp/ui/CPEditMainController.java
@@ -170,7 +170,7 @@ public class CPEditMainController extends MainLayoutBasicController {
 				String newIdentifier = treeCtr.addNewHTMLPage();
 				contentCtr.displayPageWithMetadataEditor(ureq, newIdentifier);
 			} else if (event instanceof NewCPPageEvent) {
-				contentCtr.displayPage(ureq, ((NewCPPageEvent) event).getCPPage().getIdentifier());
+				contentCtr.displayPageWithMetadataEditor(ureq, ((NewCPPageEvent) event).getCPPage().getIdentifier());
 			}
 		} else if (source == contentCtr) {
 			// event from contentController
diff --git a/src/main/java/org/olat/ims/cp/ui/CPTreeController.java b/src/main/java/org/olat/ims/cp/ui/CPTreeController.java
index 9126acd9ee6..7eaa6876e75 100644
--- a/src/main/java/org/olat/ims/cp/ui/CPTreeController.java
+++ b/src/main/java/org/olat/ims/cp/ui/CPTreeController.java
@@ -98,6 +98,7 @@ public class CPTreeController extends BasicController {
 		treeCtr.setDropEnabled(true);
 		treeCtr.setDropSiblingEnabled(true);
 		treeCtr.setDndAcceptJSMethod("treeAcceptDrop_notWithChildren");
+		treeCtr.setExpandSelectedNode(false);
 		treeCtr.addListener(this);
 
 		setLinks();
@@ -248,10 +249,7 @@ public class CPTreeController extends BasicController {
 		String nodeIdentifier = treeModel.getIdentifierForNodeID(nodeId);
 		CPPage page = new CPPage(nodeIdentifier, cp);
 		page.setTitle(title);
-		if (page.isOrgaPage()) {
-			updateTree();
-		}
-		updatePage(page);
+		updatePage(page); // will update also tree
 	}
 
 	/**
@@ -372,17 +370,17 @@ public class CPTreeController extends BasicController {
 				uploadCtr = null;
 			}
 		} else if (source == uploadCtr) {
-			if (event instanceof NewCPPageEvent) {
-				// TODO:GW Is it necessary to set component dirty?
-				// getInitialComponent().setDirty(true);
-				fireEvent(ureq, event);
-			}
-			// Dispose the cmc and the podcastFormCtr.
+			// Dispose the cmc and the podcastFormCtr first so modal dialog is free for metadata dialog
 			cmc.deactivate();
 			removeAsListenerAndDispose(cmc);
 			cmc = null;
 			removeAsListenerAndDispose(uploadCtr);
 			uploadCtr = null;
+			// Forward event to main controller
+			if (event instanceof NewCPPageEvent) {
+				fireEvent(ureq, event);
+				updateTree();
+			}
 		} else if (source == dialogCtr) {
 			// event from dialog (really-delete-dialog)
 			if (event != Event.CANCELLED_EVENT) {
-- 
GitLab