Skip to content
Snippets Groups Projects
Commit 1910969f authored by srosse's avatar srosse
Browse files

OO-1068: single HTML page are inline edited instead of the modal dialog

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