From ed02fdbba00a1c353b313bb97d2ec47e722a2114 Mon Sep 17 00:00:00 2001 From: daniel <daniel.haag@uibk.ac.at> Date: Thu, 4 Jun 2020 12:04:00 +0200 Subject: [PATCH] openolat#196: add node access type configuration to create course repository entry controller --- ...CreateCourseRepositoryEntryController.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/ac/uibk/course/CreateCourseRepositoryEntryController.java b/src/main/java/at/ac/uibk/course/CreateCourseRepositoryEntryController.java index f6c70a63f4a..37f8fc6d1f0 100644 --- a/src/main/java/at/ac/uibk/course/CreateCourseRepositoryEntryController.java +++ b/src/main/java/at/ac/uibk/course/CreateCourseRepositoryEntryController.java @@ -63,6 +63,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit; import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.components.util.KeyValues; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -88,9 +89,15 @@ import org.olat.core.util.mail.MailTemplate; import org.olat.core.util.mail.MailerResult; import org.olat.course.CourseFactory; import org.olat.course.ICourse; +import org.olat.course.condition.ConditionNodeAccessProvider; +import org.olat.course.config.CourseConfig; import org.olat.course.editor.PublishProcess; import org.olat.course.editor.PublishSetInformations; import org.olat.course.editor.StatusDescription; +import org.olat.course.learningpath.manager.LearningPathNodeAccessProvider; +import org.olat.course.nodeaccess.NodeAccessProviderIdentifier; +import org.olat.course.nodeaccess.NodeAccessService; +import org.olat.course.nodeaccess.NodeAccessType; import org.olat.course.nodes.CourseNode; import org.olat.course.tree.CourseEditorTreeModel; import org.olat.course.tree.CourseEditorTreeNode; @@ -131,7 +138,10 @@ public class CreateCourseRepositoryEntryController extends FormBasicController private Object userObject; private FlexiAutoCompleterController autocompleterC; private LicenseType licenseType; + private SingleSelection nodeAccessEl; + @Autowired + private NodeAccessService nodeAccessService; @Autowired private RepositoryManager repositoryManager; @Autowired @@ -149,7 +159,7 @@ public class CreateCourseRepositoryEntryController extends FormBasicController private String userName; private Identity userIdentity; - private Boolean isAdministrativeUser = false; + private boolean isAdministrativeUser = false; private MultipleSelectionElement ownerCheckBoxes; private FormLayoutContainer ownerCheckBoxButtonContainer; @@ -406,6 +416,30 @@ public class CreateCourseRepositoryEntryController extends FormBasicController .addDropdownSingleselect("form.catalog.entry", formLayout, catalogKeys, catalogValues, catalogStyles); catalogDropdownElement.setVisible(false); + /************************************************************************************************ + * Add Node Access Type configuration form items see also: + * org.olat.repository.ui.author.CreateCourseRepositoryEntryController + ************************************************************************************************/ + + KeyValues nodeAccessKV = new KeyValues(); + String helpText = ""; + for (NodeAccessProviderIdentifier identifier : nodeAccessService.getNodeAccessProviderIdentifer()) { + String title = identifier.getDisplayName(getLocale()); + nodeAccessKV.add(KeyValues.entry(identifier.getType(), title)); + helpText += "<strong>" + title + "</strong><br />" + identifier.getToolTipHelpText(getLocale()) + "<br /><br />"; + } + nodeAccessEl = uifactory.addRadiosVertical("cif.node.access", "cif.node.access", formLayout, + nodeAccessKV.keys(), nodeAccessKV.values()); + + nodeAccessEl.select(ConditionNodeAccessProvider.TYPE, true); + nodeAccessEl.addActionListener(FormEvent.ONCHANGE); + + nodeAccessEl.setHelpText(helpText); + nodeAccessEl.setHelpUrlForManualPage("Learning path course"); + + // only administrative users are allowed to change this at the moment + nodeAccessEl.setVisible(isAdministrativeUser); + /************************************************************************************************ * Add Create and Cancel Buttons ************************************************************************************************/ @@ -724,6 +758,9 @@ public class CreateCourseRepositoryEntryController extends FormBasicController } } + // this sets the type of the course ("learningPath"/"Condition") + CourseFactory.initNodeAccessType(addedEntry, NodeAccessType.of(nodeAccessEl.getSelectedKey())); + repositoryManager.setDescriptionAndName(addedEntry, displayname, description, "", "", externalCourseId, "", managedFlags, null); -- GitLab