Skip to content
Snippets Groups Projects
Commit 33ee31f4 authored by srosse's avatar srosse
Browse files

OO-1855: add a configurable possibility to prepend the external id of course...

OO-1855: add a configurable possibility to prepend the external id of course to their WebDAV folders
parent daf776a2
No related branches found
No related tags found
No related merge requests found
......@@ -47,6 +47,7 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff {
private static final String TERMS_FOLDERS_ENABLED = "webdav.termsfolders.enabled";
private static final String LEARNERS_BOOKMARKS_COURSE = "webdav.learners.bookmarks.courses";
private static final String LEARNERS_PARTICIPATING_COURSES = "webdav.learners.participating.courses";
private static final String PREPEND_COURSE_REFERENCE_TO_TITLE = "webdav.prepend.course.reference.to.title";
@Autowired
private List<WebDAVProvider> webdavProviders;
......@@ -59,6 +60,8 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff {
private boolean digestAuthenticationEnabled;
@Value("${webdav.termsfolders.enabled:true}")
private boolean termsFoldersEnabled;
@Value("${webdav.prepend.course.reference.to.title:false}")
private boolean prependCourseReferenceToTitle;
@Value("${webdav.learners.bookmarks.enabled:true}")
private boolean enableLearnersBookmarksCourse;
......@@ -101,6 +104,10 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff {
if(StringHelper.containsNonWhitespace(learnersParticipatingCoursesObj)) {
enableLearnersParticipatingCourses = "true".equals(learnersParticipatingCoursesObj);
}
String prependCourseReferenceToTitleObj = getStringPropertyValue(PREPEND_COURSE_REFERENCE_TO_TITLE, true);
if(StringHelper.containsNonWhitespace(prependCourseReferenceToTitleObj)) {
prependCourseReferenceToTitle = "true".equals(prependCourseReferenceToTitleObj);
}
}
@Override
......@@ -166,6 +173,15 @@ public class WebDAVModule extends AbstractSpringModule implements ConfigOnOff {
this.enableLearnersParticipatingCourses = enabled;
setStringProperty(LEARNERS_PARTICIPATING_COURSES, enabled ? "true" : "false", true);
}
public boolean isPrependCourseReferenceToTitle() {
return prependCourseReferenceToTitle;
}
public void setPrependCourseReferenceToTitle(boolean enabled) {
this.prependCourseReferenceToTitle = enabled;
setStringProperty(PREPEND_COURSE_REFERENCE_TO_TITLE, enabled ? "true" : "false", true);
}
/**
* Return an unmodifiable map
......
......@@ -38,7 +38,7 @@ import org.olat.core.gui.control.WindowControl;
public class WebDAVAdminController extends FormBasicController {
private MultipleSelectionElement enableModuleEl, enableLinkEl, enableDigestEl, enableTermsFoldersEl,
learnersAsParticipantEl, learnersBookmarkEl;
learnersAsParticipantEl, learnersBookmarkEl, prependReferenceEl;
private final WebDAVModule webDAVModule;
......@@ -78,6 +78,11 @@ public class WebDAVAdminController extends FormBasicController {
enableTermsFoldersEl.select("xx", webDAVModule.isTermsFoldersEnabled());
enableTermsFoldersEl.addActionListener(FormEvent.ONCHANGE);
enableTermsFoldersEl.setEnabled(enabled);
prependReferenceEl = uifactory.addCheckboxesHorizontal("webdavPrepend", "webdav.prepend.reference", formLayout, new String[]{"xx"}, values);
prependReferenceEl.select("xx", webDAVModule.isPrependCourseReferenceToTitle());
prependReferenceEl.addActionListener(FormEvent.ONCHANGE);
prependReferenceEl.setEnabled(enabled);
uifactory.addSpacerElement("spacer2", formLayout, false);
......@@ -122,6 +127,9 @@ public class WebDAVAdminController extends FormBasicController {
} else if(source == learnersBookmarkEl) {
boolean enabled = learnersBookmarkEl.isAtLeastSelected(1);
webDAVModule.setEnableLearnersBookmarksCourse(enabled);
} else if(source == prependReferenceEl) {
boolean enabled = prependReferenceEl.isAtLeastSelected(1);
webDAVModule.setPrependCourseReferenceToTitle(enabled);
}
super.formInnerEvent(ureq, source, event);
}
......
......@@ -2,17 +2,7 @@
admin.menu.title=WebDAV
admin.menu.title.alt=WebDAV Zugang
admin.webdav.description=Mit Hilfe von WebDAV k\u00F6nnen Sie OpenOLAT Ordner auf Ihrem lokalen Desktop wie lokale Ordner anzeigen und verwenden. Konfigurieren Sie ob diese Funktion allen Benutzern Systemweit zur Verf\u00FCgung stehen soll. Bitte lesen sie die Kontexthilfe.
core.webdav=WebDAV
webdav.digest=Digest Authentication bei HTTP Zugang verwenden
webdav.link=WebDAV Links anzeigen
webdav.module=WebDAV Zugang
......@@ -20,3 +10,4 @@ webdav.on=ein
webdav.termsfolders=Kurse nach Semesterdaten gruppieren
webdav.for.learners.participants=Zugriff für Studenten Kursen
webdav.for.learners.bookmarks=Zugriff für Studenten Favoriten
webdav.prepend.reference=Kursreferenz zu Titel voranstellen
\ No newline at end of file
......@@ -2,17 +2,7 @@
admin.menu.title=WebDAV
admin.menu.title.alt=WebDAV access
admin.webdav.description=Using WebDAV you can mount and use OpenOLAT folders on your local desktop as if they were local folders. Enable this feature to make it accessable to all users of your platform. Please read the context help.
core.webdav=WebDAV
webdav.digest=Digest Authentication for HTTP access
webdav.link=Show WebDAV links
webdav.module=WebDAV access
......@@ -20,4 +10,4 @@ webdav.on=enabled
webdav.termsfolders=Group courses by semester terms
webdav.for.learners.participants=Enable access for courses where user is participant
webdav.for.learners.bookmarks=Enable for courses that users marked as favorite
webdav.prepend.reference=Prepend course reference to title
\ No newline at end of file
......@@ -31,6 +31,7 @@ import org.olat.core.commons.services.webdav.WebDAVModule;
import org.olat.core.commons.services.webdav.manager.WebDAVMergeSource;
import org.olat.core.commons.services.webdav.servlets.RequestUtil;
import org.olat.core.id.IdentityEnvironment;
import org.olat.core.util.StringHelper;
import org.olat.core.util.vfs.NamedContainerImpl;
import org.olat.core.util.vfs.VFSContainer;
import org.olat.core.util.vfs.VirtualContainer;
......@@ -71,21 +72,22 @@ class CoursefolderWebDAVMergeSource extends WebDAVMergeSource {
terms = new HashMap<String, VFSContainer>();
noTermContainer = new VirtualContainer("other");
}
boolean prependReference = webDAVModule.isPrependCourseReferenceToTitle();
Set<RepositoryEntry> duplicates = new HashSet<>();
List<RepositoryEntry> editorEntries = repositoryManager.queryByOwner(getIdentity(), "CourseModule");
appendCourses(editorEntries, true, containers, useTerms, terms, noTermContainer, duplicates);
appendCourses(editorEntries, true, containers, useTerms, terms, noTermContainer, prependReference, duplicates);
//add courses as participant
if(webDAVModule.isEnableLearnersParticipatingCourses()) {
List<RepositoryEntry> participantEntries = repositoryManager.getLearningResourcesAsStudent(getIdentity(), "CourseModule", 0, -1);
appendCourses(participantEntries, false, containers, useTerms, terms, noTermContainer, duplicates);
appendCourses(participantEntries, false, containers, useTerms, terms, noTermContainer, prependReference, duplicates);
}
//add bookmarked courses
if(webDAVModule.isEnableLearnersBookmarksCourse()) {
List<RepositoryEntry> bookmarkedEntries = repositoryManager.getLearningResourcesAsBookmark(getIdentity(), identityEnv.getRoles(), "CourseModule", 0, -1);
appendCourses(bookmarkedEntries, false, containers, useTerms, terms, noTermContainer, duplicates);
appendCourses(bookmarkedEntries, false, containers, useTerms, terms, noTermContainer, prependReference, duplicates);
}
if (useTerms) {
......@@ -100,7 +102,7 @@ class CoursefolderWebDAVMergeSource extends WebDAVMergeSource {
private void appendCourses(List<RepositoryEntry> courseEntries, boolean editor, List<VFSContainer> containers,
boolean useTerms, Map<String, VFSContainer> terms, VirtualContainer noTermContainer,
Set<RepositoryEntry> duplicates) {
boolean prependReference, Set<RepositoryEntry> duplicates) {
// Add all found repo entries to merge source
for (RepositoryEntry re:courseEntries) {
......@@ -109,7 +111,11 @@ class CoursefolderWebDAVMergeSource extends WebDAVMergeSource {
}
duplicates.add(re);
String courseTitle = RequestUtil.normalizeFilename(re.getDisplayname());
String displayName = re.getDisplayname();
if(prependReference && StringHelper.containsNonWhitespace(re.getExternalId())) {
displayName = re.getExternalId() + " " + displayName;
}
String courseTitle = RequestUtil.normalizeFilename(displayName);
NamedContainerImpl cfContainer = new CoursefolderWebDAVNamedContainer(courseTitle, re, editor ? null : identityEnv);
if (useTerms) {
......
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