diff --git a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java index a5d4b95417189df600d0760f5ebc2f392483bb2d..7a3508fcd312acf6a2421087a931ecd15d28ab1d 100644 --- a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java +++ b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java @@ -33,9 +33,13 @@ import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.iframe.DeliveryOptions; +import org.olat.core.gui.control.generic.messages.MessageUIFactory; import org.olat.core.gui.control.generic.tabbable.TabbableController; +import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; +import org.olat.core.id.Roles; import org.olat.core.logging.OLATRuntimeException; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentManager; @@ -114,7 +118,26 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements public NodeRunConstructionResult createNodeRunConstructionResult(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, NodeEvaluation ne, String nodecmd) { updateModuleConfigDefaults(false); - LTIRunController runCtrl = new LTIRunController(wControl, getModuleConfiguration(), ureq, this, userCourseEnv); + + Controller runCtrl; + Roles roles = ureq.getUserSession().getRoles(); + if (roles.isGuestOnly()) { + ModuleConfiguration config = getModuleConfiguration(); + boolean assessable = config.getBooleanSafe(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD, false); + boolean sendName = config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDNAME, false); + boolean sendEmail = config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDEMAIL, false); + boolean customValues = StringHelper.containsNonWhitespace(config.getStringValue(LTIConfigForm.CONFIG_KEY_CUSTOM)); + if(assessable || sendName || sendEmail || customValues) { + Translator trans = Util.createPackageTranslator(BasicLTICourseNode.class, ureq.getLocale()); + String title = trans.translate("guestnoaccess.title"); + String message = trans.translate("guestnoaccess.message"); + runCtrl = MessageUIFactory.createInfoMessage(ureq, wControl, title, message); + } else { + runCtrl = new LTIRunController(wControl, getModuleConfiguration(), ureq, this, userCourseEnv); + } + } else { + runCtrl = new LTIRunController(wControl, getModuleConfiguration(), ureq, this, userCourseEnv); + } Controller ctrl = TitledWrapperHelper.getWrapper(ureq, wControl, runCtrl, this, "o_lti_icon"); return new NodeRunConstructionResult(ctrl); } diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java b/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java index c9b674486392cb821f205666cddf0c44c9478993..e8ba2b12fca914d0e23301e8b95919f416a65520 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java @@ -218,19 +218,18 @@ public class LTIConfigForm extends FormBasicController { fullURI = getFullURL(proto, host, port, uri, query).toString(); sendNameConfig = config.getBooleanEntry(CONFIG_KEY_SENDNAME); - if (sendNameConfig == null) sendNameConfig = Boolean.FALSE; + if (sendNameConfig == null) sendNameConfig = Boolean.FALSE; sendEmailConfig = config.getBooleanEntry(CONFIG_KEY_SENDEMAIL); - if (sendEmailConfig == null) sendEmailConfig = Boolean.FALSE; + if (sendEmailConfig == null) sendEmailConfig = Boolean.FALSE; - doDebugConfig = config.getBooleanEntry(CONFIG_KEY_DEBUG); - if (doDebugConfig == null) doDebugConfig = Boolean.FALSE; + if (doDebugConfig == null) doDebugConfig = Boolean.FALSE; - Boolean assessable = config.getBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD); - isAssessable = assessable == null ? false : assessable.booleanValue(); + Boolean assessable = config.getBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD); + isAssessable = assessable == null ? false : assessable.booleanValue(); - initForm(ureq); + initForm(ureq); } @Override @@ -417,15 +416,15 @@ public class LTIConfigForm extends FormBasicController { } private void udpateRoles(MultipleSelectionElement roleEl, String configKey, String defaultRoles) { - Object configRoles = config.get(configKey); - String roles = defaultRoles; - if(configRoles instanceof String) { - roles = (String)configRoles; - } - String[] roleArr = roles.split(","); - for(String role:roleArr) { - roleEl.select(role, true); - } + Object configRoles = config.get(configKey); + String roles = defaultRoles; + if(configRoles instanceof String) { + roles = (String)configRoles; + } + String[] roleArr = roles.split(","); + for(String role:roleArr) { + roleEl.select(role, true); + } } private String getRoles(MultipleSelectionElement roleEl) { diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java index 8c997aeab5179f31527f7538f0c8ff790b09705d..5fb36006db0469f6c6945333459b1282ed13df25 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java @@ -206,11 +206,20 @@ public class LTIRunController extends BasicController { final User user = getIdentity().getUser(); //user data if (config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDNAME, false)) { - userData.put("lastName", user.getProperty(UserConstants.LASTNAME, getLocale())); - userData.put("firstName", user.getProperty(UserConstants.FIRSTNAME, getLocale())); + String lastName = user.getProperty(UserConstants.LASTNAME, getLocale()); + if(StringHelper.containsNonWhitespace(lastName)) { + userData.put("lastName", lastName); + } + String firstName = user.getProperty(UserConstants.FIRSTNAME, getLocale()); + if(StringHelper.containsNonWhitespace(firstName)) { + userData.put("firstName", firstName); + } } if (config.getBooleanSafe(LTIConfigForm.CONFIG_KEY_SENDEMAIL, false)) { - userData.put("email", user.getProperty(UserConstants.EMAIL, getLocale())); + String email = user.getProperty(UserConstants.EMAIL, getLocale()); + if(StringHelper.containsNonWhitespace(email)) { + userData.put("email", email); + } } // customUserData String custom = (String)config.get(LTIConfigForm.CONFIG_KEY_CUSTOM);