Skip to content
Snippets Groups Projects
Commit 7d17a07e authored by srosse's avatar srosse
Browse files

OO-3818: allow to pick a page from shared folder in multi SP tool

parent daedf2b0
No related branches found
No related tags found
No related merge requests found
...@@ -92,6 +92,7 @@ import org.olat.course.CourseFactory; ...@@ -92,6 +92,7 @@ import org.olat.course.CourseFactory;
import org.olat.course.DisposedCourseRestartController; import org.olat.course.DisposedCourseRestartController;
import org.olat.course.ICourse; import org.olat.course.ICourse;
import org.olat.course.assessment.AssessmentModeManager; import org.olat.course.assessment.AssessmentModeManager;
import org.olat.course.folder.CourseContainerOptions;
import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.CourseGroupManager;
import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.CourseNode;
import org.olat.course.nodes.CourseNodeConfiguration; import org.olat.course.nodes.CourseNodeConfiguration;
...@@ -1131,7 +1132,7 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -1131,7 +1132,7 @@ public class EditorMainController extends MainLayoutBasicController implements G
removeAsListenerAndDispose(multiSPChooserCtr); removeAsListenerAndDispose(multiSPChooserCtr);
removeAsListenerAndDispose(cmc); removeAsListenerAndDispose(cmc);
VFSContainer rootContainer = course.getCourseEnvironment().getCourseFolderContainer(); VFSContainer rootContainer = course.getCourseEnvironment().getCourseFolderContainer(CourseContainerOptions.withoutElements());
CourseEditorTreeNode selectedNode = (CourseEditorTreeNode)menuTree.getSelectedNode(); CourseEditorTreeNode selectedNode = (CourseEditorTreeNode)menuTree.getSelectedNode();
multiSPChooserCtr = new MultiSPController(ureq, getWindowControl(), rootContainer, ores, selectedNode); multiSPChooserCtr = new MultiSPController(ureq, getWindowControl(), rootContainer, ores, selectedNode);
listenTo(multiSPChooserCtr); listenTo(multiSPChooserCtr);
......
...@@ -40,11 +40,10 @@ import org.olat.core.gui.control.Event; ...@@ -40,11 +40,10 @@ 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.util.CSSHelper; import org.olat.core.gui.util.CSSHelper;
import org.olat.core.id.OLATResourceable; import org.olat.core.id.OLATResourceable;
import org.olat.core.util.vfs.MergeSource;
import org.olat.core.util.vfs.NamedContainerImpl;
import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSContainer;
import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSItem;
import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.VFSLeaf;
import org.olat.core.util.vfs.VFSManager;
import org.olat.core.util.vfs.filters.VFSItemFilter; import org.olat.core.util.vfs.filters.VFSItemFilter;
import org.olat.course.CourseFactory; import org.olat.course.CourseFactory;
import org.olat.course.ICourse; import org.olat.course.ICourse;
...@@ -84,19 +83,9 @@ public class MultiSPController extends FormBasicController { ...@@ -84,19 +83,9 @@ public class MultiSPController extends FormBasicController {
public MultiSPController(UserRequest ureq, WindowControl wControl, VFSContainer rootContainer, public MultiSPController(UserRequest ureq, WindowControl wControl, VFSContainer rootContainer,
OLATResourceable ores, CourseEditorTreeNode selectedNode) { OLATResourceable ores, CourseEditorTreeNode selectedNode) {
super(ureq, wControl, "choosesps"); super(ureq, wControl, "choosesps");
this.ores = ores; this.ores = ores;
this.selectedNode = selectedNode; this.selectedNode = selectedNode;
this.rootContainer = rootContainer;
if(rootContainer instanceof MergeSource) {
//we cannot link to files from course elements or groups folders without single page BB update
VFSContainer realContainer = ((MergeSource)rootContainer).getRootWriteContainer();
VFSContainer namedRoot = new NamedContainerImpl(rootContainer.getName(), realContainer);
this.rootContainer = namedRoot;
} else {
this.rootContainer = rootContainer;
}
initForm(ureq); initForm(ureq);
} }
...@@ -219,7 +208,7 @@ public class MultiSPController extends FormBasicController { ...@@ -219,7 +208,7 @@ public class MultiSPController extends FormBasicController {
//create node //create node
newNode = createCourseNode(item, "sp"); newNode = createCourseNode(item, "sp");
ModuleConfiguration moduleConfig = newNode.getModuleConfiguration(); ModuleConfiguration moduleConfig = newNode.getModuleConfiguration();
String path = getRelativePath(item); String path = VFSManager.getRelativeItemPath(item, rootContainer, null);
moduleConfig.set(SPEditController.CONFIG_KEY_FILE, path); moduleConfig.set(SPEditController.CONFIG_KEY_FILE, path);
moduleConfig.setBooleanEntry(SPEditController.CONFIG_KEY_ALLOW_RELATIVE_LINKS, true); moduleConfig.setBooleanEntry(SPEditController.CONFIG_KEY_ALLOW_RELATIVE_LINKS, true);
} else if (item instanceof VFSContainer) { } else if (item instanceof VFSContainer) {
...@@ -265,26 +254,6 @@ public class MultiSPController extends FormBasicController { ...@@ -265,26 +254,6 @@ public class MultiSPController extends FormBasicController {
return newNode; return newNode;
} }
private String getRelativePath(VFSItem item) {
String path = "";
while(item != null && !isSameAsRootContainer(item)) {
path = "/" + item.getName() + path;
item = item.getParentContainer();
}
return path;
}
private boolean isSameAsRootContainer(VFSItem item) {
if(item instanceof VFSContainer) {
VFSContainer blocker = rootContainer;
if(blocker instanceof MergeSource) {
blocker = ((MergeSource)blocker).getRootWriteContainer();
}
return blocker.isSame(item);
}
return false;
}
/** /**
* @param nodeSelection The node that should be selected recursively * @param nodeSelection The node that should be selected recursively
* @param select true: select the node and its children; false: deselect the node and its children * @param select true: select the node and its children; false: deselect the node and its children
......
...@@ -31,6 +31,7 @@ import org.olat.course.Structure; ...@@ -31,6 +31,7 @@ import org.olat.course.Structure;
import org.olat.course.assessment.AssessmentManager; import org.olat.course.assessment.AssessmentManager;
import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.auditing.UserNodeAuditManager;
import org.olat.course.config.CourseConfig; import org.olat.course.config.CourseConfig;
import org.olat.course.folder.CourseContainerOptions;
import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.CourseGroupManager;
import org.olat.course.properties.CoursePropertyManager; import org.olat.course.properties.CoursePropertyManager;
import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntry;
...@@ -103,6 +104,8 @@ public interface CourseEnvironment { ...@@ -103,6 +104,8 @@ public interface CourseEnvironment {
*/ */
public VFSContainer getCourseFolderContainer(); public VFSContainer getCourseFolderContainer();
public VFSContainer getCourseFolderContainer(CourseContainerOptions options);
/** /**
* Return the course base path. * Return the course base path.
* @return the course base path * @return the course base path
......
...@@ -35,6 +35,7 @@ import org.olat.course.assessment.manager.CourseAssessmentManagerImpl; ...@@ -35,6 +35,7 @@ import org.olat.course.assessment.manager.CourseAssessmentManagerImpl;
import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.auditing.UserNodeAuditManager;
import org.olat.course.auditing.UserNodeAuditManagerImpl; import org.olat.course.auditing.UserNodeAuditManagerImpl;
import org.olat.course.config.CourseConfig; import org.olat.course.config.CourseConfig;
import org.olat.course.folder.CourseContainerOptions;
import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.CourseGroupManager;
import org.olat.course.groupsandrights.PersistingCourseGroupManager; import org.olat.course.groupsandrights.PersistingCourseGroupManager;
import org.olat.course.properties.CoursePropertyManager; import org.olat.course.properties.CoursePropertyManager;
...@@ -80,9 +81,6 @@ public class CourseEnvironmentImpl implements CourseEnvironment { ...@@ -80,9 +81,6 @@ public class CourseEnvironmentImpl implements CourseEnvironment {
cgm.updateRepositoryEntry(courseEntry); cgm.updateRepositoryEntry(courseEntry);
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getCurrentTimeMillis()
*/
@Override @Override
public long getCurrentTimeMillis() { public long getCurrentTimeMillis() {
return System.currentTimeMillis(); return System.currentTimeMillis();
...@@ -93,41 +91,26 @@ public class CourseEnvironmentImpl implements CourseEnvironment { ...@@ -93,41 +91,26 @@ public class CourseEnvironmentImpl implements CourseEnvironment {
return false; return false;
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getCourseGroupManager()
*/
@Override @Override
public CourseGroupManager getCourseGroupManager() { public CourseGroupManager getCourseGroupManager() {
return cgm; return cgm;
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getCourseResourceableId()
*/
@Override @Override
public Long getCourseResourceableId() { public Long getCourseResourceableId() {
return course.getResourceableId(); return course.getResourceableId();
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getCoursePropertyManager()
*/
@Override @Override
public CoursePropertyManager getCoursePropertyManager() { public CoursePropertyManager getCoursePropertyManager() {
return propertyManager; return propertyManager;
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getAssessmentManager()
*/
@Override @Override
public AssessmentManager getAssessmentManager() { public AssessmentManager getAssessmentManager() {
return assessmentManager; return assessmentManager;
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getAuditManager()
*/
@Override @Override
public UserNodeAuditManager getAuditManager() { public UserNodeAuditManager getAuditManager() {
/** /**
...@@ -139,9 +122,6 @@ public class CourseEnvironmentImpl implements CourseEnvironment { ...@@ -139,9 +122,6 @@ public class CourseEnvironmentImpl implements CourseEnvironment {
return this.auditManager; return this.auditManager;
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getRunStructure()
*/
@Override @Override
public Structure getRunStructure() { public Structure getRunStructure() {
Structure runStructure = course.getRunStructure(); Structure runStructure = course.getRunStructure();
...@@ -149,17 +129,11 @@ public class CourseEnvironmentImpl implements CourseEnvironment { ...@@ -149,17 +129,11 @@ public class CourseEnvironmentImpl implements CourseEnvironment {
return runStructure; return runStructure;
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getCourseTitle()
*/
@Override @Override
public String getCourseTitle() { public String getCourseTitle() {
return course.getCourseTitle(); return course.getCourseTitle();
} }
/**
* @see org.olat.course.run.environment.CourseEnvironment#getCourseConfig()
*/
@Override @Override
public CourseConfig getCourseConfig() { public CourseConfig getCourseConfig() {
return course.getCourseConfig(); return course.getCourseConfig();
...@@ -170,6 +144,11 @@ public class CourseEnvironmentImpl implements CourseEnvironment { ...@@ -170,6 +144,11 @@ public class CourseEnvironmentImpl implements CourseEnvironment {
return course.getCourseFolderContainer(); return course.getCourseFolderContainer();
} }
@Override
public VFSContainer getCourseFolderContainer(CourseContainerOptions options) {
return course.getCourseFolderContainer(options);
}
@Override @Override
public LocalFolderImpl getCourseBaseContainer() { public LocalFolderImpl getCourseBaseContainer() {
return course.getCourseBaseContainer(); return course.getCourseBaseContainer();
......
...@@ -33,6 +33,7 @@ import org.olat.course.Structure; ...@@ -33,6 +33,7 @@ import org.olat.course.Structure;
import org.olat.course.assessment.AssessmentManager; import org.olat.course.assessment.AssessmentManager;
import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.auditing.UserNodeAuditManager;
import org.olat.course.config.CourseConfig; import org.olat.course.config.CourseConfig;
import org.olat.course.folder.CourseContainerOptions;
import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.CourseGroupManager;
import org.olat.course.properties.CoursePropertyManager; import org.olat.course.properties.CoursePropertyManager;
import org.olat.course.run.environment.CourseEnvironment; import org.olat.course.run.environment.CourseEnvironment;
...@@ -138,6 +139,11 @@ final class PreviewCourseEnvironment implements CourseEnvironment { ...@@ -138,6 +139,11 @@ final class PreviewCourseEnvironment implements CourseEnvironment {
public VFSContainer getCourseFolderContainer() { public VFSContainer getCourseFolderContainer() {
return courseFolderContainer; return courseFolderContainer;
} }
@Override
public VFSContainer getCourseFolderContainer(CourseContainerOptions options) {
return courseFolderContainer;
}
@Override @Override
public LocalFolderImpl getCourseBaseContainer() { public LocalFolderImpl getCourseBaseContainer() {
......
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