diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java index 89b2f5e4dfb42814039c0133526c0facb7450281..766368dadb0941eece1de76c7cfbadee527f947a 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java +++ b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java @@ -89,7 +89,8 @@ public interface BigBlueButtonManager { public List<BigBlueButtonMeeting> getAllMeetings(); - public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, BigBlueButtonErrors errors); + public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, + Boolean isRunning, BigBlueButtonErrors errors); public boolean isMeetingRunning(BigBlueButtonMeeting meeting); diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java index 0c30490bc6fa69f6b09c6119d837bd826aa4abfa..938bb5dc874e83ed5a799bf4fb57656d77b84ce9 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java @@ -94,7 +94,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ Boolean.FALSE, Boolean.FALSE, // cam, mic Boolean.FALSE, Boolean.TRUE, // chat Boolean.FALSE, Boolean.FALSE, // node, layout - GuestPolicyEnum.ALWAYS_DENY, templates); + GuestPolicyEnum.ALWAYS_ACCEPT, templates); defaultTemplate("sys-classes", "Classes", 20, 30, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording @@ -102,7 +102,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ Boolean.TRUE, Boolean.TRUE, // cam, mic Boolean.FALSE, Boolean.FALSE, // chat Boolean.FALSE, Boolean.FALSE, // node, layout - GuestPolicyEnum.ALWAYS_DENY, templates); + GuestPolicyEnum.ALWAYS_ACCEPT, templates); defaultTemplate("sys-cafe", "Cafe", 10, 10, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording @@ -110,7 +110,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ Boolean.FALSE, Boolean.FALSE, // cam, mic Boolean.TRUE, Boolean.FALSE, // chat Boolean.FALSE, Boolean.FALSE, // node, layout - GuestPolicyEnum.ALWAYS_DENY, templates); + GuestPolicyEnum.ALWAYS_ACCEPT, templates); } private void defaultTemplate(String externalId, String name, Integer maxConcurrentMeetings, Integer maxParticipants, @@ -297,15 +297,14 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ if(doc == null || errors.hasErrors() || !BigBlueButtonUtils.checkSuccess(doc, errors)) { return false; } - String running = BigBlueButtonUtils.getFirstElementValue(doc.getDocumentElement(), "running"); return "true".equals(running); } @Override - public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, BigBlueButtonErrors errors) { + public String join(BigBlueButtonMeeting meeting, Identity identity, boolean moderator, boolean guest, Boolean isRunning, BigBlueButtonErrors errors) { String joinUrl = null; - if(createBigBlueButtonMeeting(meeting, errors)) { + if((isRunning != null && isRunning.booleanValue()) || createBigBlueButtonMeeting(meeting, errors)) { joinUrl = buildJoinUrl(meeting, identity, moderator, guest); } return joinUrl; @@ -348,10 +347,9 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ if(meeting.getEntry() != null) { businessPath = "[RepositoryEntry:" + meeting.getEntry().getKey() + "]"; if(StringHelper.containsNonWhitespace(meeting.getSubIdent())) { - businessPath = "[CourseNode:" + meeting.getSubIdent() + "]"; + businessPath += "[CourseNode:" + meeting.getSubIdent() + "]"; } } else if(meeting.getBusinessGroup() != null) { - businessPath = "[BusinessGroup:" + meeting.getBusinessGroup().getKey() + "]"; } else { businessPath = "[RepositoryEntry:0]"; @@ -381,7 +379,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ if(template != null) { uriBuilder - .optionalParameter("maxParticipants", template.getMaxParticipants()) + .optionalParameter("maxParticipants", template.getMaxParticipants().intValue() + 1) .optionalParameter("record", "true") // video options .optionalParameter("muteOnStart", template.getMuteOnStart()) @@ -397,7 +395,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ .optionalParameter("lockSettingsDisableNote", template.getLockSettingsDisableNote()) .optionalParameter("lockSettingsLockedLayout", template.getLockSettingsLockedLayout()) // guest policy - .optionalParameter("guestPolicy", template.getGuestPolicyEnum().name()); + .optionalParameter("guestPolicy", GuestPolicyEnum.ALWAYS_ACCEPT.name()); } Document doc = sendRequest(uriBuilder, errors); diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java index c57d0773af4bf8f3a7aa8ad402cc9d60770a1812..92a6435d3ffdc23ffa6d051880bab56356c9294b 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonUtils.java @@ -158,7 +158,7 @@ public class BigBlueButtonUtils { protected static void print(Document document) { if(log.isDebugEnabled()) { - try(StringWriter writer = new StringWriter()) { + try(StringWriter writer = new StringWriter()) { TransformerFactory factory = TransformerFactory.newInstance(); factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); Transformer transformer = factory.newTransformer(); diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java index 933ce1f6119cd7387da4c1cfb48edf8ce45aaadc..4b3f6fe33c986caa76ffffffb64c24d8a96be798 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java @@ -234,12 +234,15 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen String meetingUrl = null; BigBlueButtonErrors errors = new BigBlueButtonErrors(); if(moderator || administrator) { - meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), (administrator || moderator), false, errors); + meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), (administrator || moderator), false, null, errors); BigBlueButtonEvent openEvent = new BigBlueButtonEvent(meeting.getKey(), getIdentity().getKey()); CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(openEvent, meetingOres); - } else if(!moderatorStartMeeting || bigBlueButtonManager.isMeetingRunning(meeting)) { + } else if(!moderatorStartMeeting) { boolean guest = ureq.getUserSession().getRoles().isGuestOnly(); - meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), false, guest, errors); + meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), false, guest, null, errors); + } else if(bigBlueButtonManager.isMeetingRunning(meeting)) { + boolean guest = ureq.getUserSession().getRoles().isGuestOnly(); + meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), false, guest, Boolean.TRUE, errors); } redirectTo(ureq, meetingUrl, errors); } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java index ad3e171277dec60577cc677ba505fda051db3f36..e995361f8dff0d3beed3eb676de96a15e52ec21c 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java @@ -32,7 +32,6 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.util.StringHelper; import org.olat.modules.bigbluebutton.BigBlueButtonManager; import org.olat.modules.bigbluebutton.BigBlueButtonMeetingTemplate; -import org.olat.modules.bigbluebutton.GuestPolicyEnum; import org.springframework.beans.factory.annotation.Autowired; /** @@ -45,9 +44,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { private static final String[] maxParticipantsKeys = new String[] { "2", "5", "10", "25", "50", "100" }; private static final String[] onKeys = new String[] { "yes", "no" }; - private static final String[] guestPolicyKeys = new String[] { - GuestPolicyEnum.ALWAYS_DENY.name(), GuestPolicyEnum.ASK_MODERATOR.name(), GuestPolicyEnum.ALWAYS_ACCEPT.name() - }; private TextElement nameEl; private TextElement descriptionEl; @@ -64,8 +60,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { private SingleSelection lockSettingsDisablePublicChatEl; private SingleSelection lockSettingsDisableNoteEl; private SingleSelection lockSettingsLockedLayoutEl; - - private SingleSelection guestPolicyEl; private final boolean readOnly; private BigBlueButtonMeetingTemplate template; @@ -159,14 +153,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { Boolean lockSettingsLockedLayout = template == null ? null : template.getLockSettingsLockedLayout(); lockSettingsLockedLayoutEl = uifactory.addRadiosHorizontal("template.lockSettingsLockedLayout", formLayout, onKeys, onValues); select(lockSettingsLockedLayout, lockSettingsLockedLayoutEl, false); - - GuestPolicyEnum guestPolicy = template == null ? GuestPolicyEnum.ALWAYS_DENY : template.getGuestPolicyEnum(); - String[] guestPolicyValues = new String[] { - translate("guest.policy.always.deny"), translate("guest.policy.ask.moderator"), - translate("guest.policy.always.accept") - }; - guestPolicyEl = uifactory.addRadiosHorizontal("template.guestPolicy", formLayout, guestPolicyKeys, guestPolicyValues); - guestPolicyEl.select(guestPolicy.name(), true); FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add("buttons", buttonLayout); @@ -195,7 +181,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { lockSettingsDisablePublicChatEl.setEnabled(false); lockSettingsDisableNoteEl.setEnabled(false); lockSettingsLockedLayoutEl.setEnabled(false); - guestPolicyEl.setEnabled(false); } private void select(Boolean val, SingleSelection selectEl, boolean defaultValue) { @@ -277,10 +262,6 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { template.setLockSettingsDisablePublicChat(getSelected(lockSettingsDisablePublicChatEl)); template.setLockSettingsDisableNote(getSelected(lockSettingsDisableNoteEl)); template.setLockSettingsLockedLayout(getSelected(lockSettingsLockedLayoutEl)); - - if(guestPolicyEl.isOneSelected()) { - template.setGuestPolicyEnum(GuestPolicyEnum.valueOf(guestPolicyEl.getSelectedKey())); - } template = bigBlueButtonManager.updateTemplate(template); fireEvent(ureq, Event.DONE_EVENT); }