Skip to content
Snippets Groups Projects
Commit 5ae97ea0 authored by Farbod Zamani's avatar Farbod Zamani Committed by Ron Lucke
Browse files

Resolve "sub folders of hiddenfolders are not accessible", fixes #464

parent e81f14ba
No related branches found
No related tags found
No related merge requests found
...@@ -48,21 +48,23 @@ export default { ...@@ -48,21 +48,23 @@ export default {
let loadedCourseFolders = []; let loadedCourseFolders = [];
let CourseFolders = this.relatedFolders({ parent: this.courseObject, relationship: 'folders' }) ?? []; let CourseFolders = this.relatedFolders({ parent: this.courseObject, relationship: 'folders' }) ?? [];
CourseFolders.forEach(folder => { CourseFolders.forEach(folder => {
switch (folder.attributes['folder-type']) { if (this.validateParentFolder(folder)) {
case 'HiddenFolder': switch (folder.attributes['folder-type']) {
if (folder.attributes['data-content']['download_allowed'] === 1) { case 'HiddenFolder':
if (folder.attributes['data-content']['download_allowed'] === 1) {
loadedCourseFolders.push(folder);
}
break;
case 'HomeworkFolder':
if(this.allowHomeworkFolders) {
loadedCourseFolders.push(folder);
}
break;
default:
loadedCourseFolders.push(folder); loadedCourseFolders.push(folder);
} }
break;
case 'HomeworkFolder':
if(this.allowHomeworkFolders) {
loadedCourseFolders.push(folder);
}
default:
loadedCourseFolders.push(folder);
} }
}); });
return loadedCourseFolders; return loadedCourseFolders;
}, },
loadedUserFolders() { loadedUserFolders() {
...@@ -79,7 +81,7 @@ export default { ...@@ -79,7 +81,7 @@ export default {
}, },
methods: { methods: {
...mapActions({ ...mapActions({
loadRelatedFolders: 'folders/loadRelated' loadRelatedFolders: 'folders/loadRelated'
}), }),
changeSelection() { changeSelection() {
...@@ -101,6 +103,30 @@ export default { ...@@ -101,6 +103,30 @@ export default {
return this.loadRelatedFolders({ parent, relationship, options }); return this.loadRelatedFolders({ parent, relationship, options });
}, },
validateParentFolder(folder) {
let courseFolders = this.relatedFolders({ parent: this.courseObject, relationship: 'folders' }) ?? [];
let validation = true;
if (courseFolders.length > 0 && folder?.relationships?.parent) {
let parentId = folder.relationships.parent.data.id;
let parent = courseFolders.find(f => f.id === parentId);
if (parent) {
validation = this.hiddenParentFolderValidation(parent);
}
}
return validation;
},
hiddenParentFolderValidation(parentFolder) {
if (parentFolder.attributes['folder-type'] === 'HiddenFolder') {
return false;
} else if (parentFolder?.relationships?.parent) {
// Recursively validating the parents.
return this.validateParentFolder(parentFolder);
} else {
return true;
}
}
}, },
mounted() { mounted() {
this.currentValue = this.value; this.currentValue = this.value;
......
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