Skip to content
Snippets Groups Projects
Commit 02d7bde3 authored by gnaegi's avatar gnaegi
Browse files

OO-1976 implement activateable2 interface for single page nodes to load the page from the path

parent 9e00e3ba
No related branches found
No related tags found
No related merge requests found
......@@ -26,6 +26,8 @@
package org.olat.core.commons.modules.singlepage;
import java.util.List;
import org.olat.core.commons.controllers.linkchooser.CustomLinkTreeModel;
import org.olat.core.commons.editor.htmleditor.WysiwygFactory;
import org.olat.core.gui.UserRequest;
......@@ -41,12 +43,14 @@ 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.dtabs.Activateable2;
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;
import org.olat.core.id.OLATResourceable;
import org.olat.core.id.context.BusinessControl;
import org.olat.core.id.context.ContextEntry;
import org.olat.core.id.context.StateEntry;
import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing;
import org.olat.core.logging.activity.CoreLoggingResourceable;
......@@ -67,7 +71,7 @@ import org.olat.core.util.vfs.VFSContainer;
*
* @author gnaegi
*/
public class SinglePageController extends BasicController implements CloneableController {
public class SinglePageController extends BasicController implements CloneableController, Activateable2 {
private static final OLog log = Tracing.createLoggerFor(SinglePageController.class);
......@@ -168,6 +172,7 @@ public class SinglePageController extends BasicController implements CloneableCo
}
// adjust root folder if security does not allow using ../.. etc.
// *** IF YOU CHANGE THIS LOGIC, do also change it in SPCourseNodeIndexer! ***
if (!allowRelativeLinks && !jumpIn) {
// start uri is filename without relative path.
// the relative path of the file is added to the vfs rootcontainer
......@@ -302,6 +307,14 @@ public class SinglePageController extends BasicController implements CloneableCo
return new SinglePageController(ureq, control, g_rootContainer, g_fileName, g_allowRelativeLinks, frameId, null, deliveryOptions);
}
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty() || idc == null) return;
// delegate to iframe controller
idc.activate(ureq, entries, state);
}
/**
* Set a scale factor to enlarge / shrink the entire page. This is handy when
* a preview of a page should be displayed.
......
......@@ -27,6 +27,7 @@
package org.olat.core.gui.control.generic.iframe;
import java.io.File;
import java.util.List;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
......@@ -39,9 +40,13 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
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.dtabs.Activateable2;
import org.olat.core.gui.control.generic.textmarker.TextMarkerManagerImpl;
import org.olat.core.gui.media.MediaResource;
import org.olat.core.id.OLATResourceable;
import org.olat.core.id.context.BusinessControlFactory;
import org.olat.core.id.context.ContextEntry;
import org.olat.core.id.context.StateEntry;
import org.olat.core.util.StringHelper;
import org.olat.core.util.event.GenericEventListener;
import org.olat.core.util.event.MultiUserEvent;
......@@ -60,7 +65,7 @@ import org.olat.core.util.vfs.VFSMediaResource;
*
* @author guido
*/
public class IFrameDisplayController extends BasicController implements GenericEventListener {
public class IFrameDisplayController extends BasicController implements GenericEventListener, Activateable2 {
private static final String NEW_URI_EVENT = "newUriEvent";
protected static final String FILE_SUFFIX_HTM = "htm";
protected static final String FILE_SUFFIX_JS = ".js";
......@@ -433,4 +438,15 @@ public class IFrameDisplayController extends BasicController implements GenericE
getWindowControl().getWindowBackOffice().removeCycleListener(this);
}
}
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty()) return;
Long id = entries.get(0).getOLATResourceable().getResourceableId();
if(id == 0) {
String path = BusinessControlFactory.getInstance().getPath(entries.get(0));
changeCurrentURI(path, false);
}
}
}
......@@ -25,6 +25,7 @@
package org.olat.course.nodes.sp;
import java.util.List;
import java.util.UUID;
import org.olat.core.commons.controllers.linkchooser.CustomLinkTreeModel;
......@@ -44,9 +45,12 @@ import org.olat.core.gui.control.creator.ControllerCreator;
import org.olat.core.gui.control.generic.clone.CloneController;
import org.olat.core.gui.control.generic.clone.CloneLayoutControllerCreatorCallback;
import org.olat.core.gui.control.generic.clone.CloneableController;
import org.olat.core.gui.control.generic.dtabs.Activateable2;
import org.olat.core.gui.control.generic.iframe.DeliveryOptions;
import org.olat.core.id.OLATResourceable;
import org.olat.core.id.Roles;
import org.olat.core.id.context.ContextEntry;
import org.olat.core.id.context.StateEntry;
import org.olat.core.logging.AssertException;
import org.olat.core.util.resource.OresHelper;
import org.olat.core.util.vfs.VFSContainer;
......@@ -75,7 +79,7 @@ import org.springframework.beans.factory.annotation.Autowired;
*
* @author Felix Jost
*/
public class SPRunController extends BasicController {
public class SPRunController extends BasicController implements Activateable2 {
private SPCourseNode courseNode;
private Panel main;
......@@ -233,6 +237,15 @@ public class SPRunController extends BasicController {
}
}
@Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty() || spCtr == null) return;
// delegate to single page controller
spCtr.activate(ureq, entries, state);
}
/**
*
* @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
......
......@@ -833,11 +833,21 @@ public class RunMainController extends MainLayoutBasicController implements Gene
if (cn != null) {
addLoggingResourceable(LoggingResourceable.wrap(cn));
}
// consume our entry
if(entries.size() > 1) {
entries = entries.subList(1, entries.size());
}
updateTreeAndContent(ureq, cn, null, entries, firstEntry.getTransientState());
} else if (currentCourseNode.equals(cn)) {
// consume our entry
if(entries.size() > 1) {
entries = entries.subList(1, entries.size());
}
// the node to be activated is the one that is already on the screen
if (currentNodeController instanceof Activateable2) {
Activateable2 activateable = (Activateable2) currentNodeController;
activateable.activate(ureq, entries, state);
}
}
}
}
......
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