Skip to content
Snippets Groups Projects
Commit 628df2fa authored by dfurrer's avatar dfurrer
Browse files

OO-1712: changed visitor of folder nodes to a recursive way

parent 04c69d3d
No related branches found
No related tags found
No related merge requests found
...@@ -49,7 +49,10 @@ import org.olat.core.logging.activity.StringResourceableType; ...@@ -49,7 +49,10 @@ import org.olat.core.logging.activity.StringResourceableType;
import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
import org.olat.core.util.StringHelper; import org.olat.core.util.StringHelper;
import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.CoordinatorManager;
import org.olat.core.util.nodes.INode;
import org.olat.core.util.resource.OresHelper; import org.olat.core.util.resource.OresHelper;
import org.olat.core.util.tree.TreeVisitor;
import org.olat.core.util.tree.Visitor;
import org.olat.course.CourseFactory; import org.olat.course.CourseFactory;
import org.olat.course.ICourse; import org.olat.course.ICourse;
import org.olat.course.config.CourseConfig; import org.olat.course.config.CourseConfig;
...@@ -57,10 +60,9 @@ import org.olat.course.config.CourseConfigEvent; ...@@ -57,10 +60,9 @@ import org.olat.course.config.CourseConfigEvent;
import org.olat.course.config.CourseConfigEvent.CourseConfigType; import org.olat.course.config.CourseConfigEvent.CourseConfigType;
import org.olat.course.nodes.BCCourseNode; import org.olat.course.nodes.BCCourseNode;
import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.CourseNode;
import org.olat.course.nodes.bc.BCCourseNodeEditController; import org.olat.course.tree.CourseEditorTreeNode;
import org.olat.fileresource.types.GlossaryResource; import org.olat.fileresource.types.GlossaryResource;
import org.olat.fileresource.types.SharedFolderFileResource; import org.olat.fileresource.types.SharedFolderFileResource;
import org.olat.modules.ModuleConfiguration;
import org.olat.modules.glossary.GlossaryManager; import org.olat.modules.glossary.GlossaryManager;
import org.olat.modules.sharedfolder.SharedFolderManager; import org.olat.modules.sharedfolder.SharedFolderManager;
import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntry;
...@@ -95,7 +97,8 @@ public class CourseOptionsController extends FormBasicController { ...@@ -95,7 +97,8 @@ public class CourseOptionsController extends FormBasicController {
private final boolean editable; private final boolean editable;
private CourseConfig courseConfig; private CourseConfig courseConfig;
private final RepositoryEntry entry; private final RepositoryEntry entry;
private boolean hasFolderNode = false;
private CloseableModalController cmc; private CloseableModalController cmc;
private ReferencableEntriesSearchController glossarySearchCtr, folderSearchCtr; private ReferencableEntriesSearchController glossarySearchCtr, folderSearchCtr;
...@@ -324,18 +327,10 @@ public class CourseOptionsController extends FormBasicController { ...@@ -324,18 +327,10 @@ public class CourseOptionsController extends FormBasicController {
OLATResourceable courseOres = entry.getOlatResource(); OLATResourceable courseOres = entry.getOlatResource();
ICourse course = CourseFactory.loadCourse(courseOres.getResourceableId()); ICourse course = CourseFactory.loadCourse(courseOres.getResourceableId());
CourseNode rootNode = course.getCourseEnvironment().getRunStructure().getRootNode(); CourseNode rootNode = course.getCourseEnvironment().getRunStructure().getRootNode();
for(int i =0; i < rootNode.getChildCount();i++){ if(checkFolderNodes(rootNode, course)&& folderNameEl.getUserObject() != null){
if(rootNode.getChildAt(i) instanceof BCCourseNode){ folderRefAddWarnBox = activateYesNoDialog(ureq, translate("warning.folderRef.title"), "<div class=\"o_error\">"+translate("warning.folderRefAdd")+"</div>", folderRefAddWarnBox);
BCCourseNode bcNode = (BCCourseNode) rootNode.getChildAt(i); folderRefAddWarnBox.setCssClass("o_icon_warn");
ModuleConfiguration bcConfig = bcNode.getModuleConfiguration(); return false;
if(!bcConfig.getBooleanSafe(BCCourseNodeEditController.CONFIG_AUTO_FOLDER)){
if(bcConfig.getStringValue(BCCourseNodeEditController.CONFIG_SUBPATH).startsWith("/_sharedfolder/")){
folderRefAddWarnBox = activateYesNoDialog(ureq, translate("warning.folderRef.title"), "<div class=\"o_error\">"+translate("warning.folderRefAdd")+"</div>", folderRefAddWarnBox);
folderRefAddWarnBox.setCssClass("o_icon_warn");
return false;
}
}
}
} }
return true; return true;
} }
...@@ -344,19 +339,32 @@ public class CourseOptionsController extends FormBasicController { ...@@ -344,19 +339,32 @@ public class CourseOptionsController extends FormBasicController {
OLATResourceable courseOres = entry.getOlatResource(); OLATResourceable courseOres = entry.getOlatResource();
ICourse course = CourseFactory.loadCourse(courseOres.getResourceableId()); ICourse course = CourseFactory.loadCourse(courseOres.getResourceableId());
CourseNode rootNode = course.getCourseEnvironment().getRunStructure().getRootNode(); CourseNode rootNode = course.getCourseEnvironment().getRunStructure().getRootNode();
for(int i =0; i < rootNode.getChildCount();i++){
if(rootNode.getChildAt(i) instanceof BCCourseNode){ if(checkFolderNodes(rootNode, course)){
BCCourseNode bcNode = (BCCourseNode) rootNode.getChildAt(i); folderRefRemoveWarnBox = activateYesNoDialog(ureq, translate("warning.folderRef.title"), "<div class=\"o_error\">"+translate("warning.folderRef")+"</div>", folderRefRemoveWarnBox);
ModuleConfiguration bcConfig = bcNode.getModuleConfiguration(); return false;
if(!bcConfig.getBooleanSafe(BCCourseNodeEditController.CONFIG_AUTO_FOLDER)){ }else{
if(bcConfig.getStringValue(BCCourseNodeEditController.CONFIG_SUBPATH).startsWith("/_sharedfolder/")){ return true;
folderRefRemoveWarnBox = activateYesNoDialog(ureq, translate("warning.folderRef.title"), "<div class=\"o_error\">"+translate("warning.folderRef")+"</div>", folderRefRemoveWarnBox); }
return false; }
private boolean checkFolderNodes(INode rootNode, ICourse course){
hasFolderNode = false;
Visitor visitor = new Visitor() {
public void visit(INode node) {
CourseEditorTreeNode courseNode = (CourseEditorTreeNode) course.getEditorTreeModel().getNodeById(node.getIdent());
if(!courseNode.isDeleted() && courseNode.getCourseNode() instanceof BCCourseNode){
BCCourseNode bcNode = (BCCourseNode) courseNode.getCourseNode();
if (bcNode.isSharedFolder()) {
hasFolderNode = true;
} }
} }
} }
} };
return true;
TreeVisitor v = new TreeVisitor(visitor, rootNode, false);
v.visitAll();
return hasFolderNode;
} }
private void setSaveButtonDirty() { private void setSaveButtonDirty() {
......
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