diff --git a/src/main/java/org/olat/core/commons/modules/singlepage/SinglePageController.java b/src/main/java/org/olat/core/commons/modules/singlepage/SinglePageController.java
index c0ebe0ba5ec5fc065767cbec8a4c09ec2e5ceac8..8068683ba22f2dd38d6c9284b8f29db6af24b123 100644
--- a/src/main/java/org/olat/core/commons/modules/singlepage/SinglePageController.java
+++ b/src/main/java/org/olat/core/commons/modules/singlepage/SinglePageController.java
@@ -37,14 +37,14 @@ import org.olat.core.gui.components.htmlsite.NewInlineUriEvent;
 import org.olat.core.gui.components.htmlsite.OlatCmdEvent;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
-import org.olat.core.gui.components.panel.Panel;
+import org.olat.core.gui.components.panel.SimpleStackedPanel;
+import org.olat.core.gui.components.panel.StackedPanel;
 import org.olat.core.gui.components.velocity.VelocityContainer;
 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.clone.CloneableController;
-import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.gui.control.generic.iframe.DeliveryOptions;
 import org.olat.core.gui.control.generic.iframe.IFrameDisplayController;
 import org.olat.core.gui.control.generic.iframe.NewIframeUriEvent;
@@ -76,35 +76,31 @@ import org.olat.core.util.vfs.VFSManager;
  */
 public class SinglePageController extends BasicController implements CloneableController {
 
-	private OLog log = Tracing.createLoggerFor(this.getClass());
+	private static final OLog log = Tracing.createLoggerFor(SinglePageController.class);
 	
 	private static final String GOTO_NID = "GOTO_NID: ";
-	
 	private static final String COMMAND_EDIT = "command.edit";
 	
 	private HtmlStaticPageComponent cpc;
 	private VelocityContainer myContent;
 	
-	
 	// mapper for the external site
 	private String amapPath;
 	private DeliveryOptions deliveryOptions;
 	private IFrameDisplayController idc;
+	private StackedPanel mainPanel;
 	
 	private String g_curURI;
-	
 	// save constructor args to remember if we open a site in a new window
 	private String g_fileName;
 	private boolean g_inIframe;
 	private boolean g_allowRelativeLinks;
 	private VFSContainer g_rootContainer;
-	
 	private VFSContainer g_new_rootContainer;
 	
-	private Controller htmlEditorController;
 	private Link editLink;
+	private Controller htmlEditorController;
 	private CustomLinkTreeModel customLinkTreeModel;
-	private CloseableModalController cmc;
 
 	
 	/**
@@ -149,7 +145,7 @@ public class SinglePageController extends BasicController implements CloneableCo
 			boolean allowRelativeLinks, OLATResourceable contextResourcable, DeliveryOptions config) {
 		super(ureq, wControl);
 		
-		Panel mainP = new Panel("iframemain");
+		SimpleStackedPanel mainP = new SimpleStackedPanel("iframemain");
 		myContent = createVelocityContainer("index");
 		
 		// remember values in case of later cloning
@@ -238,8 +234,7 @@ public class SinglePageController extends BasicController implements CloneableCo
 		}	
 					
 		mainP.setContent(myContent);
-		//setInitialComponent(mainP);
-		putInitialPanel(mainP);
+		mainPanel = putInitialPanel(mainP);
 	}
 
 	/**
@@ -264,6 +259,7 @@ public class SinglePageController extends BasicController implements CloneableCo
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(UserRequest ureq, Controller source, Event event) {
 		if (source == idc) {
 			if (event instanceof OlatCmdEvent) {
@@ -281,39 +277,33 @@ public class SinglePageController extends BasicController implements CloneableCo
 				// log this uri change
 				ThreadLocalUserActivityLogger.log(CourseLoggingAction.NODE_SINGLEPAGE_GET_FILE, getClass(),
 						CoreLoggingResourceable.wrapSpUri(newUri));
-
 			}
 		} else if (source == htmlEditorController) {
-			
-			cmc.deactivate();
-			
 			if (g_inIframe) {
 				idc.setCurrentURI(g_curURI);
 			} else {	
 				cpc.setCurrentURI(g_curURI);
-			}	
-			
+			}
+			mainPanel.setContent(myContent);
 		} else if (source == cpc) {
 			if (event instanceof OlatCmdEvent) {
-		    OlatCmdEvent oce = (OlatCmdEvent) event;
-		    String nodeId = oce.getSubcommand();
-		    ThreadLocalUserActivityLogger.log(CourseLoggingAction.COURSE_BROWSE_GOTO_NODE, getClass(),
+				OlatCmdEvent oce = (OlatCmdEvent) event;
+		    	String nodeId = oce.getSubcommand();
+		    	ThreadLocalUserActivityLogger.log(CourseLoggingAction.COURSE_BROWSE_GOTO_NODE, getClass(),
 		    		CoreLoggingResourceable.wrapSpUri(GOTO_NID+nodeId));
 				// refire to listening controllers
 				fireEvent(ureq, event);
-			}
-			else if (event instanceof NewInlineUriEvent) {
+			} else if (event instanceof NewInlineUriEvent) {
 				// adapt path if needed and refire to listening controllers
 				String opath = ((NewInlineUriEvent)event).getNewUri();
 				setCurURI(opath);
 				fireEvent(ureq, event);
 				
-		    NewInlineUriEvent iue = (NewInlineUriEvent) event;
-		    String newUri = iue.getNewUri();
-		    ThreadLocalUserActivityLogger.log(CourseLoggingAction.NODE_SINGLEPAGE_GET_FILE, getClass(),
+				NewInlineUriEvent iue = (NewInlineUriEvent) event;
+				String newUri = iue.getNewUri();
+				ThreadLocalUserActivityLogger.log(CourseLoggingAction.NODE_SINGLEPAGE_GET_FILE, getClass(),
 		    		CoreLoggingResourceable.wrapSpUri(newUri));
-			}
-			else if (event instanceof ExternalSiteEvent) {
+			} else if (event instanceof ExternalSiteEvent) {
 				ExternalSiteEvent ese = (ExternalSiteEvent)event;
 				String startUri = ese.getStartUri();
 				final VFSContainer finalRootContainer = g_new_rootContainer;
@@ -342,15 +332,13 @@ public class SinglePageController extends BasicController implements CloneableCo
 	/** 
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(UserRequest ureq, Component source, Event event) {
-		if (source == editLink) {
-			if (event.getCommand().equals(COMMAND_EDIT)) {
-				if (g_curURI == null || g_new_rootContainer == null || g_new_rootContainer.resolve(g_curURI) == null) {
+		if (source == editLink && event.getCommand().equals(COMMAND_EDIT)) {
+			removeAsListenerAndDispose(htmlEditorController);
+			if (g_curURI == null || g_new_rootContainer == null || g_new_rootContainer.resolve(g_curURI) == null) {
 					showError("error.pagenotfound");
-					return;
-				}
-				
-				removeAsListenerAndDispose(htmlEditorController);
+			} else {
 				if (customLinkTreeModel == null) {
 					htmlEditorController = WysiwygFactory.createWysiwygController(ureq, getWindowControl(), g_new_rootContainer, g_curURI, true, true);
 				} else {
@@ -358,12 +346,7 @@ public class SinglePageController extends BasicController implements CloneableCo
 							g_curURI, true, customLinkTreeModel);
 				}
 				listenTo(htmlEditorController);
-				
-				removeAsListenerAndDispose(cmc);
-				cmc = new CloseableModalController(getWindowControl(), translate("close"), htmlEditorController.getInitialComponent());
-				listenTo(cmc);
-				
-				cmc.activate();
+				mainPanel.setContent(htmlEditorController.getInitialComponent());
 			}
 		}
 	}
@@ -372,10 +355,10 @@ public class SinglePageController extends BasicController implements CloneableCo
 		this.g_curURI = uri;
 	}
 	
-	
 	/** 
 	 * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
 	 */
+	@Override
 	protected void doDispose() {
 		// NOTE: do not deregister this mapper here: the url pointing to this mapper is opened in a new browser window
 		// and the user will expect to be able to browse beyond the lifetime of this originating controller here.
@@ -395,6 +378,7 @@ public class SinglePageController extends BasicController implements CloneableCo
 	/**
 	 * @see org.olat.core.gui.control.generic.clone.CloneableController#cloneController(org.olat.core.gui.UserRequest, org.olat.core.gui.control.WindowControl)
 	 */
+	@Override
 	public Controller cloneController(UserRequest ureq, WindowControl control) {
 		return new SinglePageController(ureq, control, g_rootContainer, g_fileName, g_curURI, g_allowRelativeLinks, null, deliveryOptions);
 	}
@@ -443,6 +427,5 @@ public class SinglePageController extends BasicController implements CloneableCo
 		} else {
 			cpc.setWrapperCssStyle(cssRule);
 		}
-		
 	}
-}
+}
\ No newline at end of file