From a4a1e2177383ee0f8e94e9d1cf9032b7b630a748 Mon Sep 17 00:00:00 2001 From: gnaegi <gnaegi@frentix.com> Date: Thu, 26 Mar 2020 00:23:48 +0100 Subject: [PATCH] OO-4584 BBB wording, config formatting, more default templates, template role for group users --- .../bigbluebutton/BigBlueButtonRoles.java | 1 + .../manager/BigBlueButtonManagerImpl.java | 77 ++++++--- .../BigBlueButtonEditMeetingsController.java | 15 +- .../ui/BigBlueButtonRunController.java | 53 +++++- .../EditBigBlueButtonMeetingController.java | 14 +- .../EditBigBlueButtonTemplateController.java | 98 ++++++----- .../bigbluebutton/ui/_content/meeting.html | 4 +- .../ui/_i18n/LocalStrings_de.properties | 160 +++++++++--------- .../ui/_i18n/LocalStrings_en.properties | 148 ++++++++-------- .../ui/_i18n/LocalStrings_fr.properties | 5 - 10 files changed, 335 insertions(+), 240 deletions(-) diff --git a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonRoles.java b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonRoles.java index b161539fc50..c762f25f8d9 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonRoles.java +++ b/src/main/java/org/olat/modules/bigbluebutton/BigBlueButtonRoles.java @@ -34,6 +34,7 @@ import edu.emory.mathcs.backport.java.util.Collections; */ public enum BigBlueButtonRoles { + group, coach, owner, author, 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 35b01cd8cde..2e600253273 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java +++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonManagerImpl.java @@ -88,33 +88,61 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ public void afterPropertiesSet() throws Exception { List<BigBlueButtonMeetingTemplate> templates = bigBlueButtonMeetingTemplateDao.getTemplates(); - // Web conferen - defaultTemplate("sys-meetings", "Meetings", 5, 5, 240, + // Online meeting, all features enable + defaultTemplate("sys-meetings", "Meeting", 2, 8, 240, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording - Boolean.FALSE, Boolean.TRUE, // webcams moderator only, unmute - Boolean.FALSE, Boolean.FALSE, // cam, mic - Boolean.FALSE, Boolean.TRUE, // chat - Boolean.FALSE, Boolean.FALSE, // node, layout - Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, - GuestPolicyEnum.ALWAYS_ACCEPT, templates); + Boolean.FALSE, Boolean.TRUE, // webcams moderator only, unmute + Boolean.FALSE, Boolean.FALSE, // cam, mic + Boolean.FALSE, Boolean.FALSE, // chat + Boolean.FALSE, Boolean.FALSE, // notes, layout + Boolean.TRUE, // breakout + Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // user list, join-lock, lock configurable + GuestPolicyEnum.ALWAYS_ACCEPT, true, templates); - defaultTemplate("sys-classes", "Classes", 20, 30, 240, + // Traditional classroom setting with many participants. Only presenter has video + defaultTemplate("sys-classes", "Classroom", 10, 30, 240, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording - Boolean.TRUE, Boolean.TRUE, // webcamsmoderator only, unmute - Boolean.TRUE, Boolean.TRUE, // cam, mic - Boolean.FALSE, Boolean.FALSE, // chat - Boolean.FALSE, Boolean.FALSE, // node, layout - Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, - GuestPolicyEnum.ALWAYS_ACCEPT, templates); + Boolean.TRUE, Boolean.TRUE, // webcams moderator only, unmute + Boolean.TRUE, Boolean.FALSE, // cam, mic + Boolean.FALSE, Boolean.FALSE, // chat + Boolean.FALSE, Boolean.FALSE, // notes, layout + Boolean.TRUE, // breakout + Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, // user list, join-lock, lock configurable + GuestPolicyEnum.ALWAYS_ACCEPT, true, templates); - defaultTemplate("sys-cafe", "Cafe", 10, 10, 240, + // Mixed setup, some with webcams, some without. + defaultTemplate("sys-cafe", "Cafe", 5, 15, 240, Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording - Boolean.FALSE, Boolean.TRUE, // webcams moderator only, unmute - Boolean.FALSE, Boolean.FALSE, // cam, mic - Boolean.TRUE, Boolean.FALSE, // chat - Boolean.FALSE, Boolean.FALSE, // node, layout - Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, - GuestPolicyEnum.ALWAYS_ACCEPT, templates); + Boolean.FALSE, Boolean.TRUE, // webcams moderator only, unmute + Boolean.TRUE, Boolean.FALSE, // cam, mic + Boolean.FALSE, Boolean.FALSE, // chat + Boolean.FALSE, Boolean.FALSE, // notes, layout + Boolean.TRUE, // breakout + Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, // user list, join-lock, lock configurable + GuestPolicyEnum.ALWAYS_ACCEPT, false, templates); + + // Interview situation, face-to-face meeting + defaultTemplate("sys-interview", "Interview", 5, 2, 240, + Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // recording + Boolean.FALSE, Boolean.TRUE, // webcams moderator only, unmute + Boolean.FALSE, Boolean.FALSE, // cam, mic + Boolean.FALSE, Boolean.FALSE, // chat + Boolean.FALSE, Boolean.FALSE, // notes, layout + Boolean.FALSE, // breakout + Boolean.FALSE, Boolean.FALSE, Boolean.TRUE, // user list, join-lock, lock configurable + GuestPolicyEnum.ALWAYS_ACCEPT, false, templates); + + // Exam monitoring. Participants have video but only presenter can see the video + defaultTemplate("sys-assessment", "Assessment", 1, 30, 240, + Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, // recording + Boolean.TRUE, Boolean.TRUE, // webcams moderator only, unmute + Boolean.FALSE, Boolean.TRUE, // cam, mic + Boolean.TRUE, Boolean.FALSE, // chat + Boolean.TRUE, Boolean.TRUE, // notes, layout + Boolean.FALSE, // breakout + Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, // user list, join-lock, lock configurable + GuestPolicyEnum.ALWAYS_ACCEPT, false, templates); + } private void defaultTemplate(String externalId, String name, @@ -124,8 +152,9 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ Boolean lockSettingsDisableCam, Boolean lockSettingsDisableMic, Boolean lockSettingsDisablePrivateChat, Boolean lockSettingsDisablePublicChat, Boolean lockSettingsDisableNote, Boolean lockSettingsLockedLayout, + Boolean breakoutRoomsEnabled, Boolean lockSettingsHideUserList, Boolean lockSettingsLockOnJoin, Boolean lockSettingsLockOnJoinConfigurable, - GuestPolicyEnum guestPolicy, List<BigBlueButtonMeetingTemplate> templates) { + GuestPolicyEnum guestPolicy, boolean enabled, List<BigBlueButtonMeetingTemplate> templates) { BigBlueButtonMeetingTemplate template = templates.stream() .filter(tpl -> externalId.equals(tpl.getExternalId())) @@ -146,6 +175,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ template.setAllowStartStopRecording(allowStartStopRecording); template.setWebcamsOnlyForModerator(webcamsOnlyForModerator); template.setAllowModsToUnmuteUsers(allowModsToUnmuteUsers); + template.setBreakoutRoomsEnabled(breakoutRoomsEnabled); template.setLockSettingsDisableCam(lockSettingsDisableCam); template.setLockSettingsDisableMic(lockSettingsDisableMic); @@ -159,6 +189,7 @@ public class BigBlueButtonManagerImpl implements BigBlueButtonManager, Initializ template.setLockSettingsLockOnJoinConfigurable(lockSettingsLockOnJoinConfigurable); template.setGuestPolicyEnum(guestPolicy); + template.setEnabled(enabled); bigBlueButtonMeetingTemplateDao.updateTemplate(template); } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonEditMeetingsController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonEditMeetingsController.java index 84834a12e79..e00b6bef0ff 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonEditMeetingsController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonEditMeetingsController.java @@ -224,18 +224,23 @@ public class BigBlueButtonEditMeetingsController extends FormBasicController { List<BigBlueButtonRoles> editionRoles = new ArrayList<>(); if(businessGroup != null) { - if(roles.isAdministrator()) { + if(roles.isAdministrator() || roles.isSystemAdmin()) { editionRoles.add(BigBlueButtonRoles.administrator); } - if(businessGroupService.isIdentityInBusinessGroup(getIdentity(), businessGroup.getKey(), true, false, null)) { - editionRoles.add(BigBlueButtonRoles.coach); + if(roles.isAuthor() || roles.isLearnResourceManager()) { + // global authors / LR-managers can use author templates also in groups + editionRoles.add(BigBlueButtonRoles.author); + } + if(businessGroupService.isIdentityInBusinessGroup(getIdentity(), businessGroup)) { + // all group user can choose the group templates (if they are allowed to create group online-meetings) + editionRoles.add(BigBlueButtonRoles.group); } } else if(entry != null) { RepositoryEntrySecurity reSecurity = repositoryManager.isAllowed(getIdentity(), roles, entry); - if(roles.isAdministrator()) { + if(roles.isAdministrator() || roles.isSystemAdmin()) { editionRoles.add(BigBlueButtonRoles.administrator); } - if(reSecurity.isAuthor()) { + if(reSecurity.isAuthor() || roles.isLearnResourceManager()) { editionRoles.add(BigBlueButtonRoles.author); } if(reSecurity.isEntryAdmin()) { diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonRunController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonRunController.java index 84cb617a798..5b64ec2f044 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonRunController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonRunController.java @@ -19,6 +19,7 @@ */ package org.olat.modules.bigbluebutton.ui; +import java.util.ArrayList; import java.util.List; import org.olat.core.gui.UserRequest; @@ -34,12 +35,18 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.Roles; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.util.resource.OresHelper; import org.olat.group.BusinessGroup; +import org.olat.group.BusinessGroupService; +import org.olat.modules.bigbluebutton.BigBlueButtonManager; import org.olat.modules.bigbluebutton.BigBlueButtonMeeting; +import org.olat.modules.bigbluebutton.BigBlueButtonMeetingTemplate; +import org.olat.modules.bigbluebutton.BigBlueButtonRoles; import org.olat.repository.RepositoryEntry; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -69,6 +76,11 @@ public class BigBlueButtonRunController extends BasicController implements Activ private boolean readOnly; private boolean moderator; private boolean administrator; + + @Autowired + private BigBlueButtonManager bigBlueButtonManager; + @Autowired + private BusinessGroupService businessGroupService; public BigBlueButtonRunController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry, String subIdentifier, BusinessGroup group, BigBlueButtonMeetingDefaultConfiguration configuration, boolean admin, boolean moderator, boolean readOnly) { @@ -82,11 +94,11 @@ public class BigBlueButtonRunController extends BasicController implements Activ this.moderator = moderator; canView = !ureq.getUserSession().getRoles().isGuestOnly(); - + if(!canView) { //no accessible to guests mainVC = createVelocityContainer("run"); - } else if(administrator) { + } else if(administrator && hasAtLeastOneTemplate(ureq)) { mainVC = createVelocityContainer("run_admin"); segmentView = SegmentViewFactory.createSegmentView("segments", mainVC, this); @@ -108,6 +120,43 @@ public class BigBlueButtonRunController extends BasicController implements Activ putInitialPanel(mainVC); } + + private boolean hasAtLeastOneTemplate(UserRequest ureq) { + // TODO: refactor: copy paste from BigBlueButtonEditMeetingsController.getPermittedRoles() + // should also apply to group config form: don't let regular students enable bbb in groups when they have no + // template to choose from. + Roles userRoles = ureq.getUserSession().getRoles(); + + List<BigBlueButtonRoles> editionRoles = new ArrayList<>(); + if(userRoles.isAdministrator() || userRoles.isSystemAdmin()) { + editionRoles.add(BigBlueButtonRoles.administrator); + } + if(userRoles.isAuthor() || userRoles.isLearnResourceManager()) { + // global authors / LR-managers can use author templates also in groups + editionRoles.add(BigBlueButtonRoles.author); + } + if(businessGroupService.isIdentityInBusinessGroup(getIdentity(), group)) { + // all group user can choose the group templates (if they are allowed to create group online-meetings) + editionRoles.add(BigBlueButtonRoles.group); + } + + List<BigBlueButtonMeetingTemplate> templates = bigBlueButtonManager.getTemplates(); + for(BigBlueButtonMeetingTemplate template:templates) { + if(!template.isEnabled()) continue; + List<BigBlueButtonRoles> roles = template.getPermittedRolesEnum(); + for(BigBlueButtonRoles role:roles) { + for(BigBlueButtonRoles editionRole:editionRoles) { + if(role.accept(editionRole)) { + return true; + } + } + } + } + return false; + } + + + @Override protected void doDispose() { // diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java index 2a276e53b9b..d47862050cd 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java @@ -19,6 +19,7 @@ */ package org.olat.modules.bigbluebutton.ui; +import java.util.Calendar; import java.util.Date; import java.util.List; @@ -165,7 +166,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { permanentEl.select(permKeys[0], permanent); permanentEl.setVisible(bigBlueButtonModule.isPermanentMeetingEnabled()); - Date startDate = meeting == null ? null : meeting.getStartDate(); + Date startDate = meeting == null ? new Date() : meeting.getStartDate(); startDateEl = uifactory.addDateChooser("meeting.start", "meeting.start", startDate, formLayout); startDateEl.setMandatory(!permanent); startDateEl.setDateChooserTimeEnabled(true); @@ -174,6 +175,13 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { leadTimeEl = uifactory.addTextElement("meeting.leadTime", 8, leadtime, formLayout); Date endDate = meeting == null ? null : meeting.getEndDate(); + if (endDate == null) { + // set meeting time default to 1 hour + Calendar calendar = Calendar.getInstance(); + calendar.setTime(startDate); + calendar.add(Calendar.HOUR_OF_DAY, 1); + endDate = calendar.getTime(); + } endDateEl = uifactory.addDateChooser("meeting.end", "meeting.end", endDate, formLayout); endDateEl.setMandatory(!permanent); endDateEl.setDefaultValue(startDateEl); @@ -215,7 +223,9 @@ public class EditBigBlueButtonMeetingController extends FormBasicController { if(templateEl.isOneSelected()) { BigBlueButtonMeetingTemplate template = getSelectedTemplate(); if(template != null && template.getMaxParticipants() != null) { - String[] args = new String[] { template.getMaxParticipants().toString() }; + Integer maxConcurrentInt = template.getMaxConcurrentMeetings(); + String maxConcurrent = (maxConcurrentInt == null ? " ∞" : maxConcurrentInt.toString()); + String[] args = new String[] { template.getMaxParticipants().toString(), maxConcurrent}; if(template.getWebcamsOnlyForModerator() != null && template.getWebcamsOnlyForModerator().booleanValue()) { templateEl.setExampleKey("template.explain.max.participants.with.webcams.mod", args); } else { 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 793555ab024..b4b77d4c771 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonTemplateController.java @@ -118,10 +118,28 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { String description = template == null ? "" : template.getDescription(); descriptionEl = uifactory.addTextAreaElement("template.description", "template.description", 2000, 4, 72, false, false, description, formLayout); + String maxParticipants = template == null || template.getMaxParticipants() == null ? null : template.getMaxParticipants().toString(); + maxParticipantsEl = uifactory.addTextElement("template.maxParticipants", "template.maxParticipants", 8, maxParticipants, formLayout); + maxParticipantsEl.setMandatory(true); + + String maxDuration = null; + if(template == null) { + maxDuration = "240"; + } else if(template.getMaxDuration() != null) { + maxDuration = template.getMaxDuration().toString(); + } + maxDurationEl = uifactory.addTextElement("template.maxDuration", "template.maxDuration", 8, maxDuration, formLayout); + boolean enable = template == null || template.isEnabled(); enableEl = uifactory.addCheckboxesHorizontal("template.enabled", "template.enabled", formLayout, onKeys, new String[] { "" }); enableEl.select(onKeys[0], enable); + /* ----------- */ + uifactory.addSpacerElement("sp1", formLayout, false); + + String maxConcurrentMeetings = template == null || template.getMaxConcurrentMeetings() == null ? "" : template.getMaxConcurrentMeetings().toString(); + maxConcurrentMeetingsEl = uifactory.addTextElement("template.max.concurrent.meetings", "template.max.concurrent.meetings", 8, maxConcurrentMeetings, formLayout); + KeyValues rolesKeyValues = new KeyValues(); for(BigBlueButtonRoles role:BigBlueButtonRoles.values()) { rolesKeyValues.add(KeyValues.entry(role.name(), translate("role.".concat(role.name())))); @@ -137,34 +155,29 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { for(BigBlueButtonRoles role:roles) { rolesEl.select(role.name(), true); } + + /* ----------- */ + uifactory.addSpacerElement("sp2", formLayout, false); + + String[] onValues = new String[] { translate("yes"), translate("no") }; - String maxConcurrentMeetings = template == null || template.getMaxConcurrentMeetings() == null ? "" : template.getMaxConcurrentMeetings().toString(); - maxConcurrentMeetingsEl = uifactory.addTextElement("template.max.concurrent.meetings", "template.max.concurrent.meetings", 8, maxConcurrentMeetings, formLayout); + Boolean webcamsOnlyForModerator = template == null ? null : template.getWebcamsOnlyForModerator(); + webcamsOnlyForModeratorEl = uifactory.addRadiosHorizontal("template.webcamsOnlyForModerator", formLayout, yesNoKeys, onValues); + select(webcamsOnlyForModerator, webcamsOnlyForModeratorEl, true); - String maxParticipants = template == null || template.getMaxParticipants() == null ? null : template.getMaxParticipants().toString(); - maxParticipantsEl = uifactory.addTextElement("template.maxParticipants", "template.maxParticipants", 8, maxParticipants, formLayout); - maxParticipantsEl.setMandatory(true); + Boolean muteOnStart = template == null ? null : template.getMuteOnStart(); + muteOnStartEl = uifactory.addRadiosHorizontal("template.muteOnStart", formLayout, yesNoKeys, onValues); + select(muteOnStart, muteOnStartEl, false); - String maxDuration = null; - if(template == null) { - maxDuration = "240"; - } else if(template.getMaxDuration() != null) { - maxDuration = template.getMaxDuration().toString(); - } - maxDurationEl = uifactory.addTextElement("template.maxDuration", "template.maxDuration", 8, maxDuration, formLayout); - - String[] onValues = new String[] { translate("yes"), translate("no") }; + Boolean allowModsToUnmuteUsers = template == null ? null : template.getAllowModsToUnmuteUsers(); + allowModsToUnmuteUsersEl = uifactory.addRadiosHorizontal("template.allowModsToUnmuteUsers", formLayout, yesNoKeys, onValues); + select(allowModsToUnmuteUsers, allowModsToUnmuteUsersEl, false); Boolean record = template == null ? null : template.getRecord(); recordEl = uifactory.addRadiosHorizontal("template.record", formLayout, yesNoKeys, onValues); recordEl.addActionListener(FormEvent.ONCHANGE); select(record, recordEl, false); - Boolean breakout = template == null ? null : template.getBreakoutRoomsEnabled(); - breakoutEl = uifactory.addRadiosHorizontal("template.breakout", formLayout, yesNoKeys, onValues); - breakoutEl.addActionListener(FormEvent.ONCHANGE); - select(breakout, breakoutEl, true); - Boolean autoStartRecording = template == null ? null : template.getAutoStartRecording(); autoStartRecordingEl = uifactory.addRadiosHorizontal("template.autoStartRecording", formLayout, yesNoKeys, onValues); select(autoStartRecording, autoStartRecordingEl, false); @@ -173,17 +186,23 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { allowStartStopRecordingEl = uifactory.addRadiosHorizontal("template.allowStartStopRecording", formLayout, yesNoKeys, onValues); select(allowStartStopRecording, allowStartStopRecordingEl, true); - Boolean muteOnStart = template == null ? null : template.getMuteOnStart(); - muteOnStartEl = uifactory.addRadiosHorizontal("template.muteOnStart", formLayout, yesNoKeys, onValues); - select(muteOnStart, muteOnStartEl, false); + Boolean breakout = template == null ? null : template.getBreakoutRoomsEnabled(); + breakoutEl = uifactory.addRadiosHorizontal("template.breakout", formLayout, yesNoKeys, onValues); + breakoutEl.addActionListener(FormEvent.ONCHANGE); + select(breakout, breakoutEl, true); - Boolean webcamsOnlyForModerator = template == null ? null : template.getWebcamsOnlyForModerator(); - webcamsOnlyForModeratorEl = uifactory.addRadiosHorizontal("template.webcamsOnlyForModerator", formLayout, yesNoKeys, onValues); - select(webcamsOnlyForModerator, webcamsOnlyForModeratorEl, true); + Boolean lockSettingsLockOnJoin = template == null ? null : template.getLockSettingsLockOnJoin(); + lockSettingsLockOnJoinEl = uifactory.addRadiosHorizontal("template.lockSettingsLockOnJoin", formLayout, yesNoKeys, onValues); + lockSettingsLockOnJoinEl.addActionListener(FormEvent.ONCHANGE); + select(lockSettingsLockOnJoin, lockSettingsLockOnJoinEl, true); - Boolean allowModsToUnmuteUsers = template == null ? null : template.getAllowModsToUnmuteUsers(); - allowModsToUnmuteUsersEl = uifactory.addRadiosHorizontal("template.allowModsToUnmuteUsers", formLayout, yesNoKeys, onValues); - select(allowModsToUnmuteUsers, allowModsToUnmuteUsersEl, false); + Boolean lockSettingsLockOnJoinConfigurable = template == null ? null : template.getLockSettingsLockOnJoinConfigurable(); + lockSettingsLockOnJoinConfigurableEl = uifactory.addRadiosHorizontal("template.lockSettingsLockOnJoinConfigurable", formLayout, yesNoKeys, onValues); + select(lockSettingsLockOnJoinConfigurable, lockSettingsLockOnJoinConfigurableEl, false); + + /* ----------- */ + uifactory.addSpacerElement("sp2", formLayout, false); + uifactory.addStaticTextElement("template.lock", "template.lock", null, formLayout); Boolean lockSettingsDisableCam = template == null ? null : template.getLockSettingsDisableCam(); lockSettingsDisableCamEl = uifactory.addRadiosHorizontal("template.lockSettingsDisableCam", formLayout, yesNoKeys, onValues); @@ -193,35 +212,26 @@ public class EditBigBlueButtonTemplateController extends FormBasicController { lockSettingsDisableMicEl = uifactory.addRadiosHorizontal("template.lockSettingsDisableMic", formLayout, yesNoKeys, onValues); select(lockSettingsDisableMic, lockSettingsDisableMicEl, false); - Boolean lockSettingsDisablePrivateChat = template == null ? null : template.getLockSettingsDisablePrivateChat(); - lockSettingsDisablePrivateChatEl = uifactory.addRadiosHorizontal("template.lockSettingsDisablePrivateChat", formLayout, yesNoKeys, onValues); - select(lockSettingsDisablePrivateChat, lockSettingsDisablePrivateChatEl, false); - Boolean lockSettingsDisablePublicChat = template == null ? null : template.getLockSettingsDisablePublicChat(); lockSettingsDisablePublicChatEl = uifactory.addRadiosHorizontal("template.lockSettingsDisablePublicChat", formLayout, yesNoKeys, onValues); select(lockSettingsDisablePublicChat, lockSettingsDisablePublicChatEl, false); + Boolean lockSettingsDisablePrivateChat = template == null ? null : template.getLockSettingsDisablePrivateChat(); + lockSettingsDisablePrivateChatEl = uifactory.addRadiosHorizontal("template.lockSettingsDisablePrivateChat", formLayout, yesNoKeys, onValues); + select(lockSettingsDisablePrivateChat, lockSettingsDisablePrivateChatEl, false); + Boolean lockSettingsDisableNote = template == null ? null : template.getLockSettingsDisableNote(); lockSettingsDisableNoteEl = uifactory.addRadiosHorizontal("template.lockSettingsDisableNote", formLayout, yesNoKeys, onValues); select(lockSettingsDisableNote, lockSettingsDisableNoteEl, false); - Boolean lockSettingsLockedLayout = template == null ? null : template.getLockSettingsLockedLayout(); - lockSettingsLockedLayoutEl = uifactory.addRadiosHorizontal("template.lockSettingsLockedLayout", formLayout, yesNoKeys, onValues); - select(lockSettingsLockedLayout, lockSettingsLockedLayoutEl, false); - Boolean lockSettingsHideUserList = template == null ? null : template.getLockSettingsHideUserList(); lockSettingsHideUserListEl = uifactory.addRadiosHorizontal("template.lockSettingsHideUserList", formLayout, yesNoKeys, onValues); select(lockSettingsHideUserList, lockSettingsHideUserListEl, false); - Boolean lockSettingsLockOnJoin = template == null ? null : template.getLockSettingsLockOnJoin(); - lockSettingsLockOnJoinEl = uifactory.addRadiosHorizontal("template.lockSettingsLockOnJoin", formLayout, yesNoKeys, onValues); - lockSettingsLockOnJoinEl.addActionListener(FormEvent.ONCHANGE); - select(lockSettingsLockOnJoin, lockSettingsLockOnJoinEl, true); + Boolean lockSettingsLockedLayout = template == null ? null : template.getLockSettingsLockedLayout(); + lockSettingsLockedLayoutEl = uifactory.addRadiosHorizontal("template.lockSettingsLockedLayout", formLayout, yesNoKeys, onValues); + select(lockSettingsLockedLayout, lockSettingsLockedLayoutEl, false); - Boolean lockSettingsLockOnJoinConfigurable = template == null ? null : template.getLockSettingsLockOnJoinConfigurable(); - lockSettingsLockOnJoinConfigurableEl = uifactory.addRadiosHorizontal("template.lockSettingsLockOnJoinConfigurable", formLayout, yesNoKeys, onValues); - select(lockSettingsLockOnJoinConfigurable, lockSettingsLockOnJoinConfigurableEl, false); - FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add("buttons", buttonLayout); uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl()); diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html index 7f066b8c3b7..5e3781462cd 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/meeting.html @@ -29,7 +29,9 @@ <div class="o_block_large"> <fieldset> <legend>$r.translate("recordings")</legend> - <div class="o_info">$r.translate("recording.browser.infos")</div> + #if ($r.isTrue($hasRecordings)) + <div class="o_note"><i class="o_icon o_icon-fw o_icon_info"> </i> $r.translate("recording.browser.infos")</div> + #end $r.render("recordings") </fieldset> </div> diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties index a7f7aa3ff1c..48d943e2baa 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_de.properties @@ -1,116 +1,112 @@ #Thu Mar 19 21:29:32 CET 2020 account.configuration=Konfiguration -add.meeting=Meeting hinzuf\u00FCgen -add.template=Vorlage erstellen +add.meeting=Online-Termin hinzuf\u00FCgen +add.template=Raumvorlage erstellen admin.menu.title=BigBlueButton -admin.menu.title.alt=BigBlueButton -bigbluebutton.intro=Konfiguration von BigBlueButton Web Conferencing +admin.menu.title.alt=BigBlueButton Web Conferencing +bigbluebutton.intro=BigBlueButton ist ein Open Source Web Conferencing System speziell f\u00fcr eLearning. Weitere Informationen zu BigBlueButton findet sich auf der <a href='https://bigbluebutton.org' target='_blank'>BigBlueButton Webseite</a> und dem <a href='https://github.com/bigbluebutton' target='_blank'>BigBlueButton GitHub Repository</a> bigbluebutton.module.enabled=Modul "BigBlueButton" -bigbluebutton.module.enabled.for=Einschalten f\u00FCr +bigbluebutton.module.enabled.for=Aktivieren f\u00FCr bigbluebutton.module.enabled.for.courses=Kurse bigbluebutton.module.enabled.for.groups=Gruppen -bigbluebutton.title=BigBlueButton +bigbluebutton.title=Konfiguration BigBlueButton Web Conferencing Service calendar.open=Raumbuchungen anzeigen calendar.title=Kalender check=Serververbindung testen -confirm.delete.meeting=Wollen Sie wirklich den Meeting "{0}" l\u00F6schen? -confirm.delete.meeting.title=Meeting "{0}" l\u00F6schen -confirm.delete.template=Wollen Sie wirklich die Vorlage "{0}" l\u00F6schen? -confirm.delete.template.title=Vorlage "{0}" l\u00F6schen -connection.failed=Login fehlgeschlagen. -connection.successful=Login erfolgreich\! -edit.template=Vorlage "{0}" bearbeiten -enable.permanent.meeting=Dauernd Meeting einschalten -enable.adhoc.meeting=Adhoc Meeting einschalten -error.duration=Meeting dauert zu lange. Maximal Dauer ist {0} Minuten. -error.end.past=Meeting kann nicht in Vergangenheit geplant werden. +confirm.delete.meeting=Wollen Sie wirklich den Online-Termin "{0}" l\u00F6schen? +confirm.delete.meeting.title=Online-Termin "{0}" l\u00F6schen +confirm.delete.template=Wollen Sie wirklich die Raumvorlage "{0}" l\u00F6schen? +confirm.delete.template.title=Raumvorlage "{0}" l\u00F6schen +connection.failed=BigBlueButton API Login fehlgeschlagen. +connection.successful=BigBlueButton API Login erfolgreich\! +edit.template=Raumvorlage "{0}" bearbeiten +enable.permanent.meeting=Online-Termine ohne Datum +enable.adhoc.meeting=Adhoc Online-Termin +error.duration=Termindauer \u00fcberschritten. Maximal Dauer: {0} Minuten. +error.end.past=Der Online-Termin kann nicht in Vergangenheit geplant werden. error.prefix=Ein Fehler ist aufgetreten\: error.server.raw={1} <small>Schl\u00FCssel\: {0}</small> -error.start.after.end=Das Datum f\u00FCr das Ende des Meetings darf nicht vor dem Beginn Datum sein. -error.too.long.time=Zeit ist zu lang. Es ist auf {0} Minuten limitiert. -guest.policy.always.accept=Always accept -guest.policy.always.deny=Always deny -guest.policy.ask.moderator=Ask moderator -meeting.create.intro=Das Meeting wurde noch nicht er\u00f6ffnet. Teilnehmer k\u00F6nnen den Raum f\u00fcr ein geplantes Meeting ggf. nicht betreten. +error.start.after.end=Das Enddatum darf nicht vor dem Beginndatum sein. +error.too.long.time=Zeit ist zu lang. Es sind maximal {0} Minuten erlaubt. +meeting.create.intro=Der Online-Termin wurde vom Betreuer noch nicht er\u00f6ffnet. Teilnehmer k\u00F6nnen den Raum f\u00fcr noch nicht betreten. meeting.description=Beschreibung -meeting.end=End -meeting.ended=Meeting ist schon beendet. +meeting.end=Ende +meeting.ended=Der Online-Termin wurde bereits beendet. meeting.followupTime=Nachlaufzeit (Min.) -meeting.go.button=Zum Meeting Raum gehen +meeting.go.button=Zum Online-Termin Raum meeting.join.button=Meeting beitreten meeting.leadTime=Vorlaufzeit (Min.) meeting.name=Name -meeting.no.template=Standardeinstellungen -meeting.permanent=Typ -meeting.permanent.on=Dauernd -meeting.resource=Resource +meeting.permanent=Online-Termin planung +meeting.permanent.on=Ohne Datum +meeting.resource=Kontext meeting.start=Beginn -meeting.start.button=Meeting starten -meeting.template=Vorlage -meeting.welcome=Begr\u00FCssung -meetings.admin.title=Konfiguration -meetings.past=Alte Meetings -meetings.title=Meetings -meetings.upcoming=Zuk\u00FCnftige Meetings +meeting.start.button=Online-Termin starten +meeting.template=Raumvorlage +meeting.welcome=Begr\u00FCssungstext +meetings.admin.title=Terminverwaltung +meetings.past=Abgelaufene Online-Termine +meetings.title=Online-Termine +meetings.upcoming=Aktuelle und zuk\u00FCnftige Online-Termine minutes={0} Min. -no.meeting.configured=Es sind noch keine Meetings konfiguriert. -no.template.configured=Es sind noch keine Vorlage konfiguriert. -no.recordings=Es sind noch keine Aufzeichnungen vorhanden. -no.upcoming.meetings=Sie haben keine zuk\u00FCnftigen Meetings. -option.baseurl=URL BigBlueButton Server +no.meeting.configured=Zur Zeit sind keine Online-Termine vorhanden. +no.template.configured=Es sind keine aktiven Raumvorlagen vorhanden. +no.recordings=Es ist zur Zeit noch keine Aufzeichnung f\u00FCr diesen Online-Termin vorhanden. +no.upcoming.meetings=Zur Zeit sind keine aktuellen oder zuk\u00FCnftigen Online-Termine vorhanden. +option.baseurl=BigBlueButton API URL option.baseurl.example=https\://bigbluebutton.openolat.com/bigbluebutton/ option.bigbluebutton.secret=Secret option.bigbluebutton.shared.secret=Shared secret recordings=Aufzeichnungen recording.browser.infos=Aufzeichnungen k\u00F6nnen nur mit Google Chrome und Firefox gesehen werden. recording.type.podcast=Podcast -recording.type.presentation=Vorstellung +recording.type.presentation=Pr\u00E4sentation role.administrator=Administrator role.author=Autor role.coach=Betreuer -role.owner=Course owner -server.overloaded=Es gibt kein Platz verf\u00FCgbar auf dem Server an den gew\u00E4hlten Datum. -table.header.enabled=Eingeschaltet -table.header.permanent=Dauernd +role.owner=Kursbesitzer +role.group=Gruppenmitglied +server.overloaded=F\u00FCr das gew\u00E4hlten Datum/Uhrzeit ist kein Raum verf\u00FCgbar. W\u00E4hlen Sie ein anderes Datum/Uhrzeit oder eine andere Raumvorlage. +table.header.enabled=Aktiv +table.header.permanent=Ohne Datum table.header.system=System -table.header.max.concurrent.meetings=Gleichseitig Meetings -table.header.max.duration=Max. Dauer -table.header.max.participants=Max. Teilnehmer +table.header.max.concurrent.meetings=R\u00E4ume +table.header.max.duration=Dauer +table.header.max.participants=Teilnehmer table.header.recording.name=Name table.header.recording.type=Typ table.header.recording.open=\u00D6ffnen table.header.recording.start=Beginn -table.header.recording.end=End -table.header.template=Typ -table.header.webcams.only.moderator=Webcams Moderatoren -template.allowModsToUnmuteUsers=Allow moderators to unmute users -template.allowStartStopRecording=Allow to start / stop recording -template.autoStartRecording=Auto start recording -template.breakout=Breakout Meetings erlauben +table.header.recording.end=Ende +table.header.template=Raumvorlage +table.header.webcams.only.moderator=Nur Moderatorenkamera +template.allowModsToUnmuteUsers=Moderatoren d\u00FCrfen Teilnehmer-Mikrofon aktiveren +template.allowStartStopRecording=Starten und Stoppen von Aufzeichnungen zulassen +template.autoStartRecording=Aufzeichnung automatisch starten +template.breakout=Breakout-R\u00E4me zulassen template.description=Beschreibung -template.enabled=Vorlage einschalten -template.explain.max.participants=Max. Anzahl von Teilnehmer: {0} -template.explain.max.participants.with.webcams.mod=Max. Anzahl von Teilnehmer: {0}, Webcams f\u00FCr Moderatoren -template.guestPolicy=Guest policy -template.lockSettingsDisableCam=Lock settings disable camera -template.lockSettingsDisableMic=Lock settings disable micro -template.lockSettingsDisableNote=Lock settings disable note -template.lockSettingsDisablePrivateChat=Lock settings disable private chat -template.lockSettingsDisablePublicChat=Lock settings disable public chat -template.lockSettingsLockedLayout=Lock settings locked layout -template.lockSettingsHideUserList=Hide user list for locked users -template.lockSettingsLockOnJoin=Put viewer into lock mode on join -template.lockSettingsLockOnJoinConfigurable=Moderator cannot change setting above -template.maxDuration=Max. L\u00E4nge des Meeting (Minuten) -template.maxParticipants=Max. Teilnehmer -template.maxParticipants.default=Standard -template.max.concurrent.meetings=Max. gleichzeitige Meetings -template.muteOnStart=Mute on start -template.name=Name -template.record=Aufzeichnen -template.roles=Erlaubt Vorlage zu verwenden -template.webcamsOnlyForModerator=Webcams only for moderators -templates.title=Vorlagen +template.enabled=Raumvorlage aktivieren +template.explain.max.participants=Max. Anzahl Teilnehmer: {0} ({1} R\u00E4ume verf\u00FCgbar) +template.explain.max.participants.with.webcams.mod=Max. Anzahl Teilnehmer: {0}, nur Moderatorenkamera ({1} R\u00E4ume verf\u00FCgbar) +template.lock=F\u00FCr gesperrte Teilnehmer... +template.lockSettingsDisableCam=Kamera ausschalten +template.lockSettingsDisableMic=Mikrofon ausschalten +template.lockSettingsDisableNote=Gmeinsame Notizen ausschalten +template.lockSettingsDisablePrivateChat=Privater Chat ausschalten +template.lockSettingsDisablePublicChat=Öffentlicher Chat ausschalten +template.lockSettingsLockedLayout=Layoutanpassung ausschalten +template.lockSettingsHideUserList=Teilnehmerliste ausschalten +template.lockSettingsLockOnJoin=Teilnehmer bei Eintritt automatisch sperren +template.lockSettingsLockOnJoinConfigurable=Ausschalten der automatischen Sperre durch Moderator verhindern +template.maxDuration=Dauer (Minuten) +template.maxParticipants=Anzahl Teilnehmer +template.max.concurrent.meetings=Anzahl R\u00E4ume +template.muteOnStart=Teilnehmer-Mikrofon beim Eintritt deaktivieren +template.name=Raumname +template.record=Aufzeichnungen des Online-Termins zulassen +template.roles=Raumvorlage aktiviert f\u00FCr +template.webcamsOnlyForModerator=Nur Moderatorenkamera +templates.title=Raumvorlagen view=Ansehen -view.template=Vorlage "{0}" -warning.template.in.use=Die Vorlage kann nicht gel\u00F6scht werden weil sie nocht benutzt wird. +view.template=Raumvorlage "{0}" +warning.template.in.use=Die Raumvorlage kann nicht gel\u00F6scht werden da sie nocht benutzt wird. L\u00F6schschen Sie zuerst die entsprechenden Online-Termine oder deaktivieren Sie die Raumvorlage. diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties index e6e99d7b471..32d118f1c3f 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_en.properties @@ -1,63 +1,59 @@ #Thu Mar 19 21:29:07 CET 2020 account.configuration=Configuration -add.meeting=Add meeting -add.template=New template +add.meeting=Add online-meeting +add.template=New room template admin.menu.title=BigBlueButton -admin.menu.title.alt=BigBlueButton -bigbluebutton.intro=Configuration of BigBlueButton Web Conferencing +admin.menu.title.alt=BigBlueButton Web Conferencing +bigbluebutton.intro=BigBlueButton is an Open Source Web Conferencing System designed for learning. More information about BigBlueButton can be found on the <a href='https://bigbluebutton.org' target='_blank'>BigBlueButton web page</a> and the <a href='https://github.com/bigbluebutton' target='_blank'>BigBlueButton GitHub repository</a> bigbluebutton.module.enabled=Module "BigBlueButton" -bigbluebutton.module.enabled.for=Enable for +bigbluebutton.module.enabled.for=Activate for bigbluebutton.module.enabled.for.courses=Courses bigbluebutton.module.enabled.for.groups=Groups -bigbluebutton.title=BigBlueButton +bigbluebutton.title=Configuration of BigBlueButton Web Conferencing service calendar.open=Show room bookings calendar.title=Calendar -check=Check the connection -confirm.delete.meeting=Do you really want to delete the meeting "{0}"? -confirm.delete.meeting.title=Delete meeting "{0}" -confirm.delete.template=Do you really want to delete the template "{0}"? -confirm.delete.template.title=Delete template "{0}" -connection.failed=Login failed. -connection.successful=Login successful\! -edit.template=Edit template "{0}" -enable.permanent.meeting=Enable permanent meeting -enable.adhoc.meeting=Enable adhoc meeting -error.duration=Meeting is too long. Maximal duration is {0} minutes. -error.end.past=Meeting cannot be planned in the past. +check=Check server connection +confirm.delete.meeting=Do you really want to delete the online-meeting "{0}"? +confirm.delete.meeting.title=Delete online-meeting "{0}" +confirm.delete.template=Do you really want to delete the room-template "{0}"? +confirm.delete.template.title=Delete room-template "{0}" +connection.failed=BigBlueButton API login failed. +connection.successful=BigBlueButton API login successful\! +edit.template=Edit room-template "{0}" +enable.permanent.meeting=Online-Meetings without date +enable.adhoc.meeting=Adhoc online-meeting +error.duration=Meeting duration is too long. Maximal duration: {0} minutes. +error.end.past=Online-meeting cannot be planned in the past. error.prefix=An error happened\: error.server.raw={1} <small>Key {0}</small> -error.start.after.end=The end date of the meeting must not be before the start date. +error.start.after.end=The end date must not be before the start date. error.too.long.time=Time is too long. It is limited to {0} minutes. -guest.policy.always.accept=Always accept -guest.policy.always.deny=Always deny -guest.policy.ask.moderator=Ask moderator -meeting.create.intro=The meeting has not been opened, yet. Participants are not able to enter the classroom for a meeting. +meeting.create.intro=The meeting has not yet been started by the coach. Participants are not able to enter the classroom. meeting.description=Description meeting.end=End date -meeting.ended=Meeting already ended. +meeting.ended=The online-meeting has already ended. meeting.followupTime=Follow-up (min.) -meeting.go.button=Go to the meeting room +meeting.go.button=Go to the onlin-meeting room meeting.join.button=Join the meeting meeting.leadTime=Prep time (min.) meeting.name=Name -meeting.no.template=Default settings -meeting.permanent=Typ -meeting.permanent.on=Permanent -meeting.resource=Resource +meeting.permanent=Onine-Meeting scheduling +meeting.permanent.on=Without date +meeting.resource=Context meeting.start=Start date -meeting.start.button=Start the meeting -meeting.template=Template +meeting.start.button=Start the online-meeting +meeting.template=Room-template meeting.welcome=Welcome message -meetings.admin.title=Configuration -meetings.past=Old meetings -meetings.title=Meetings -meetings.upcoming=Upcoming meetings +meetings.admin.title=Meeting management +meetings.past=Past online-meetings +meetings.title=Online-meetings +meetings.upcoming=Current and upcoming onlin-meetings minutes={0} min. -no.meeting.configured=No meetings have been configured yet. -no.recordings=There is no recording available for the moment. -no.template.configured=No templates have been configured yet. -no.upcoming.meetings=You don't have any upcoming meeting. -option.baseurl=URL BigBlueButton Server +no.meeting.configured=There are no online-meetings available at this time. +no.recordings=There is no recording available for this online-meeting at this time. +no.template.configured=There are no active room-templates available. +no.upcoming.meetings=There are no current or upcoming meetings available at this time. +option.baseurl=BigBlueButton API URL option.baseurl.example=https\://bigbluebutton.openolat.com/bigbluebutton/ option.bigbluebutton.secret=Secret option.bigbluebutton.shared.secret=Shared secret @@ -68,50 +64,50 @@ recording.type.presentation=Presentation role.administrator=Administrator role.author=Author role.coach=Coach -role.owner=Kursbesitzer -server.overloaded=There is no place available on the server for the choosen dates. +role.owner=Course owner +role.group=Group user +server.overloaded=There is no room available for the choosen date/time. Choose another date/time or another room template. table.header.enabled=Enabled -table.header.permanent=Permanent +table.header.permanent=Withour date table.header.system=System -table.header.max.concurrent.meetings=Concurrent meetings -table.header.max.duration=Max. duration -table.header.max.participants=Max. participants +table.header.max.concurrent.meetings=Rooms +table.header.max.duration=Duration +table.header.max.participants=Participants table.header.recording.name=Name table.header.recording.type=Type table.header.recording.open=Open table.header.recording.start=Start table.header.recording.end=End -table.header.template=Type -table.header.webcams.only.moderator=Webcams moderators -template.allowModsToUnmuteUsers=Allow moderators to unmute users -template.allowStartStopRecording=Allow to start / stop recording -template.autoStartRecording=Auto start recording -template.breakout=Allow breakout meetings +table.header.template=Room-template +table.header.webcams.only.moderator=Webcams only for moderators +template.allowModsToUnmuteUsers=Allow moderators to activate the participants microphone +template.allowStartStopRecording=Allow to start / stop of recordings +template.autoStartRecording=Automatically start recording +template.breakout=Allow breakout rooms template.description=Description -template.enabled=Enable template -template.explain.max.participants=Max. number of participants: {0} -template.explain.max.participants.with.webcams.mod=Max. number of participants: {0}, webcams for moderators -template.guestPolicy=Guest policy -template.lockSettingsDisableCam=Lock settings disable camera -template.lockSettingsDisableMic=Lock settings disable micro -template.lockSettingsDisableNote=Lock settings disable note -template.lockSettingsDisablePrivateChat=Lock settings disable private chat -template.lockSettingsDisablePublicChat=Lock settings disable public chat -template.lockSettingsLockedLayout=Lock settings locked layout -template.lockSettingsHideUserList=Hide user list for locked users -template.lockSettingsLockOnJoin=Put viewer into lock mode on join -template.lockSettingsLockOnJoinConfigurable=Moderator cannot change setting above -template.maxDuration=Max. duration of the meeting (minutes) -template.maxParticipants=Max. participants -template.maxParticipants.default=Default -template.max.concurrent.meetings=Max. concurrent meetings -template.muteOnStart=Mute on start -template.name=Name -template.record=Record -template.roles=Allow to use the template +template.enabled=Enable room-template +template.explain.max.participants=Max. number of participants: {0} ({1} rooms available) +template.explain.max.participants.with.webcams.mod=Max. number of participants: {0}, only moderator webcam ({1} rooms available) +template.lock=For locked participants... +template.lockSettingsDisableCam=disable webcam +template.lockSettingsDisableMic=disable microphone +template.lockSettingsDisableNote=disable shared-notes +template.lockSettingsDisablePrivateChat=disable private chat +template.lockSettingsDisablePublicChat=disable public chat +template.lockSettingsLockedLayout=disable layout changes +template.lockSettingsHideUserList=disable participant list +template.lockSettingsLockOnJoin=Put participants into lock mode on join +template.lockSettingsLockOnJoinConfigurable=Prevent disabling of the automatic locking by the moderator +template.maxDuration=Duration (minutes) +template.maxParticipants=Number of participants +template.max.concurrent.meetings=Number of rooms +template.muteOnStart=Disable participant microphone on join +template.name=Room name +template.record=Allow meeting recording +template.roles=Room-template activated for template.webcamsOnlyForModerator=Webcams only for moderators -templates.title=Templates +templates.title=Room-templates view=View -view.template=Template "{0}" -warning.template.in.use=The template cannot be deleted. It's still used. +view.template=Room-template "{0}" +warning.template.in.use=The room-template cannot be deleted because it is used by online-meetings. Delete the corresponding online-meeting or de-activate the room-template. diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_fr.properties index 9f217247d3b..9aee62b80ba 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_i18n/LocalStrings_fr.properties @@ -21,9 +21,6 @@ edit.template=\u00C9diter le mod\u00E8le "{0}" error.prefix=Une erreur s'est produite\: error.server.raw={1} <small>Cl\u00E9\: {0}</small> error.start.after.end=La date de fin du rendez-vous ne peut se trouver avant la date de d\u00E9but. -guest.policy.always.accept=Toujours accepter -guest.policy.always.deny=Toujours refuser -guest.policy.ask.moderator=Demander au mod\u00E9rateur meeting.create.intro=Le meeting n'est pas encore disponible. Les participants \u00E0 cette classe ne peuvent pas encore y acc\u00E9der. meeting.description=Description meeting.end=Date de fin @@ -33,7 +30,6 @@ meeting.go.button=Aller \u00E0 la salle du meeting meeting.join.button=Rejoindre le meeting meeting.leadTime=Pr\u00E9paration (min.) meeting.name=Nom -meeting.no.template=Configuration par d\u00E9faut meeting.permanent=Type meeting.permanent.on=Permanent meeting.resource=Ressource @@ -59,7 +55,6 @@ table.header.permanent=Permanent table.header.system=Syst\u00E8me template.description=Description template.maxParticipants=Nombre max. de participants -template.maxParticipants.default=D\u00E9fault template.name=Nom templates.title=Mod\u00E8les warning.template.in.use=Le mod\u00E8le ne peut pas \u00EAtre effacer car il est encore utilis\u00E9. -- GitLab