From a1e7618c93f97c42a65a0dc24fccf3f71ad83d71 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Mon, 23 Mar 2020 20:22:43 +0100 Subject: [PATCH] OO-4584: always allow guest flag, max participants + 1 --- .../bigbluebutton/BigBlueButtonManager.java | 3 ++- .../manager/BigBlueButtonManagerImpl.java | 18 ++++++++---------- .../manager/BigBlueButtonUtils.java | 2 +- .../ui/BigBlueButtonMeetingController.java | 9 ++++++--- .../EditBigBlueButtonTemplateController.java | 19 ------------------- 5 files changed, 17 insertions(+), 34 deletions(-) diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonManager.java index 89b2f5e4dfb..766368dadb0 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 0c30490bc6f..938bb5dc874 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 c57d0773af4..92a6435d3ff 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 933ce1f6119..4b3f6fe33c9 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 ad3e171277d..e995361f8df 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); } -- GitLab