diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FormLink.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FormLink.java index 7cc9b21961a7fd61abbd3ad93a08a35a7c1ec4ed..27c91daa46761eb49cbcdd6ffa37f9aabcbcae3d 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FormLink.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FormLink.java @@ -39,6 +39,8 @@ public interface FormLink extends FormItem { public boolean isNewWindowAfterDispatchUrl(); + public boolean isNewWindowWithSubmit(); + /** * Specify if the link open a new window. This is not equivalent to the * method setUrl to open the link in a new window with Ctrl + click. The @@ -54,8 +56,9 @@ public interface FormLink extends FormItem { * @param openInNewWindow Open a new window * @param afterDispatchUrl true if the URL will be send after the * link is clicked with a JS command. + * @param withSubmit Form is submitted by the button */ - public void setNewWindow(boolean openInNewWindow, boolean afterDispatchUrl); + public void setNewWindow(boolean openInNewWindow, boolean afterDispatchUrl, boolean withSubmit); public boolean isPopup(); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java index 41668dc123f99862f64ac68ec66f5f452720b718..628ebb2ba86ad09789004ebdbead17bae8ba5ef3 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormJSHelper.java @@ -29,12 +29,12 @@ import java.io.IOException; import java.util.Iterator; import java.util.Set; +import org.apache.logging.log4j.Logger; import org.json.JSONException; import org.json.JSONObject; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.render.StringOutput; import org.olat.core.logging.OLATRuntimeException; -import org.apache.logging.log4j.Logger; import org.olat.core.logging.Tracing; /** @@ -135,8 +135,8 @@ public class FormJSHelper { * @param pairs Additional name value pairs send by the link * @return */ - public static String getXHRFnCallFor(FormItem item, boolean dirtyCheck, boolean pushState, NameValuePair... pairs) { - return getXHRFnCallFor(item.getRootForm(), item.getFormDispatchId(), 1, dirtyCheck, pushState, false, pairs); + public static String getXHRFnCallFor(FormItem item, boolean dirtyCheck, boolean pushState, boolean submit, NameValuePair... pairs) { + return getXHRFnCallFor(item.getRootForm(), item.getFormDispatchId(), 1, dirtyCheck, pushState, submit, pairs); } /** diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/FormLinkImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/FormLinkImpl.java index f88e5a8fa45f462be465192f016121304cafdf73..2282d1af71d341076a4fdd638b9269fb8fbd4e9a 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/FormLinkImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/FormLinkImpl.java @@ -67,6 +67,7 @@ public class FormLinkImpl extends FormItemImpl implements FormLink { private boolean ownDirtyFormWarning = false; private boolean newWindow; private boolean newWindowAfterDispatchUrl; + private boolean newWindowWithSubmit; private LinkPopupSettings popup; private String iconLeftCSS; private String iconRightCSS; @@ -149,8 +150,14 @@ public class FormLinkImpl extends FormItemImpl implements FormLink { } @Override - public void setNewWindow(boolean openInNewWindow, boolean afterDispatchUrl) { + public boolean isNewWindowWithSubmit() { + return newWindowWithSubmit; + } + + @Override + public void setNewWindow(boolean openInNewWindow, boolean afterDispatchUrl, boolean withSubmit) { newWindow = openInNewWindow; + newWindowWithSubmit = withSubmit; newWindowAfterDispatchUrl = afterDispatchUrl; if(component != null) { component.setNewWindow(openInNewWindow, afterDispatchUrl); diff --git a/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java b/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java index 6b2bd37271746a22ed8ea0db2127e863dda3c2c5..f89bc9c205ed75e995d614237d5cf9c3e4d318bf 100644 --- a/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java +++ b/src/main/java/org/olat/core/gui/components/link/LinkRenderer.java @@ -362,7 +362,8 @@ public class LinkRenderer extends DefaultComponentRenderer { boolean hasUrl = StringHelper.containsNonWhitespace(link.getUrl()); String href = hasUrl ? link.getUrl() : "javascript:;"; sb.append("href=\"").append(href).append("\" onclick=\"") - .append(FormJSHelper.getXHRFnCallFor(flexiLink, false, false, new NameValuePair("oo-opennewwindow-oo", "true"))) + .append(FormJSHelper.getXHRFnCallFor(flexiLink, false, false, flexiLink.isNewWindowWithSubmit(), + new NameValuePair("oo-opennewwindow-oo", "true"))) .append("; return false;\""); } else { String dispatchUri = flexiLink.getFormDispatchId(); diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java index 654186f1ed452a5ba666989c7a92e702afc6c1ae..9f225075ed6086be147daaf0c83210208f53a92d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java @@ -641,7 +641,7 @@ public class AssessmentTestComponentRenderer extends AssessmentObjectComponentRe sb.append("<li class='o_assessmentitem'>"); sb.append("<button type='button' "); String key = itemNode.getKey().toString(); - sb.onClickKeyEnter(FormJSHelper.getXHRFnCallFor(component.getQtiItem(), true, true, + sb.onClickKeyEnter(FormJSHelper.getXHRFnCallFor(component.getQtiItem(), true, true, false, new NameValuePair("cid", Event.reviewItem.name()), new NameValuePair("item", key))) .append(" class='btn btn-default' ").append(" disabled", !reviewable).append("><span class='questionTitle'>") .append(StringHelper.escapeHtml(itemNode.getSectionPartTitle())).append("</span>"); diff --git a/src/main/java/org/olat/modules/appointments/ui/AppointmentListController.java b/src/main/java/org/olat/modules/appointments/ui/AppointmentListController.java index 4398c0ca93ae1d98d6f4fdbe5ff5f6e02f74db86..541230b0550ec9c8cc7aaf2d46a8387327d238f0 100644 --- a/src/main/java/org/olat/modules/appointments/ui/AppointmentListController.java +++ b/src/main/java/org/olat/modules/appointments/ui/AppointmentListController.java @@ -432,7 +432,7 @@ public abstract class AppointmentListController extends FormBasicController impl name = name + " "; link.setI18nKey(name); link.setIconLeftCSS("o_icon o_icon_lg o_vc_icon"); - link.setNewWindow(true, true); + link.setNewWindow(true, true, false); link.setUserObject(recording); recordingLinks.add(link); } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java index 8f61b7b0e553e224e74258a259d18851fa5204b9..cfc709f47d589966c8ee623a225cf3d167d80b5b 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonGuestJoinController.java @@ -25,11 +25,13 @@ import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; 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.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; @@ -76,6 +78,7 @@ public class BigBlueButtonGuestJoinController extends FormBasicController implem private TextElement nameEl; private FormLink joinButton; + private MultipleSelectionElement acknowledgeRecordingEl; private boolean readOnly = false; private boolean moderatorStartMeeting; @@ -146,6 +149,12 @@ public class BigBlueButtonGuestJoinController extends FormBasicController implem joinButton.setElementCssClass("o_sel_bbb_guest_join"); joinButton.setVisible(!end); joinButton.setTextReasonForDisabling(translate("warning.no.access")); + + KeyValues acknowledgeKeyValue = new KeyValues(); + acknowledgeKeyValue.add(KeyValues.entry("agree", translate("meeting.acknowledge.recording.agree"))); + acknowledgeRecordingEl = uifactory.addCheckboxesHorizontal("meeting.acknowledge.recording", null, formLayout, + acknowledgeKeyValue.keys(), acknowledgeKeyValue.values()); + acknowledgeRecordingEl.setVisible(!end && BigBlueButtonUIHelper.isRecord(meeting)); } private void reloadButtonsAndStatus() { @@ -182,6 +191,7 @@ public class BigBlueButtonGuestJoinController extends FormBasicController implem } // update button style to indicate that the user must now press to start joinButton.setPrimary(joinButton.isEnabled()); + acknowledgeRecordingEl.setVisible(joinButton.isEnabled() && BigBlueButtonUIHelper.isRecord(meeting)); } @@ -277,6 +287,13 @@ public class BigBlueButtonGuestJoinController extends FormBasicController implem allOk &= false; } + acknowledgeRecordingEl.clearError(); + if(acknowledgeRecordingEl.isVisible() + && acknowledgeRecordingEl.isEnabled() && !acknowledgeRecordingEl.isAtLeastSelected(1)) { + acknowledgeRecordingEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + return allOk; } 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 1ff808d6935d8e024a31d699d088a5ac06a429d9..640b77f4f82716a9be3940fdf9e6f6fcdcc1a5fd 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonMeetingController.java @@ -26,11 +26,11 @@ import java.util.TimerTask; import org.olat.core.commons.services.taskexecutor.TaskExecutorManager; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; @@ -40,9 +40,8 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent; import org.olat.core.gui.components.form.flexible.impl.elements.table.StaticFlexiCellRenderer; -import org.olat.core.gui.components.link.ExternalLink; import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.link.LinkFactory; +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; @@ -50,8 +49,6 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowC import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.gui.control.winmgr.CommandFactory; -import org.olat.core.gui.media.MediaResource; -import org.olat.core.gui.media.RedirectMediaResource; import org.olat.core.helpers.Settings; import org.olat.core.id.OLATResourceable; import org.olat.core.util.Formatter; @@ -91,8 +88,9 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen private final boolean moderatorStartMeeting; private final OLATResourceable meetingOres; - private Link joinButton; - private ExternalLink guestJoinButton; + private FormLink joinButton; + private FormLink guestJoinButton; + private MultipleSelectionElement acknowledgeRecordingEl; private FlexiTableElement tableEl; private BigBlueButtonRecordingTableModel recordingTableModel; @@ -167,19 +165,22 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen } } - joinButton = LinkFactory.createButtonLarge("meeting.join.button", flc.getFormItemComponent(), this); + joinButton = uifactory.addFormLink("meeting.join.button", translate("meeting.join.button"), null, + formLayout, Link.BUTTON | Link.NONTRANSLATED); joinButton.setElementCssClass("o_sel_bbb_join"); - joinButton.setTarget("_blank"); + joinButton.setNewWindow(true, true, true); joinButton.setVisible(!ended && !guest); joinButton.setTextReasonForDisabling(translate("warning.no.access")); - String url = Settings.getServerContextPathURI() + "/bigbluebutton/" + meeting.getIdentifier(); - guestJoinButton = LinkFactory.createExternalLink("meeting.guest.join.button", "meeting.guest.join.button", url); + guestJoinButton = uifactory.addFormLink("meeting.guest.join.button", formLayout, Link.BUTTON); guestJoinButton.setElementCssClass("btn btn-lg btn-default o_sel_bbb_guest_join"); - guestJoinButton.setName(translate("meeting.guest.join.button")); - guestJoinButton.setTarget("_blank"); + guestJoinButton.setNewWindow(true, true, true); guestJoinButton.setVisible(!ended && guest); - flc.getFormItemComponent().put("meeting.guest.join.button", guestJoinButton); + + KeyValues acknowledgeKeyValue = new KeyValues(); + acknowledgeKeyValue.add(KeyValues.entry("agree", translate("meeting.acknowledge.recording.agree"))); + acknowledgeRecordingEl = uifactory.addCheckboxesHorizontal("meeting.acknowledge.recording", null, formLayout, + acknowledgeKeyValue.keys(), acknowledgeKeyValue.values()); } private void initRecordings(FormItemContainer formLayout) { @@ -303,9 +304,9 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen if(moderator || administrator) { flc.contextPut("notStarted", Boolean.FALSE); if(!running && moderatorStartMeeting) { - joinButton.setCustomDisplayText(translate("meeting.start.button")); + joinButton.setI18nKey(translate("meeting.start.button")); } else { - joinButton.setCustomDisplayText(translate("meeting.join.button")); + joinButton.setI18nKey(translate("meeting.join.button")); } } else if(!running && moderatorStartMeeting) { flc.contextPut("notStarted", Boolean.TRUE); @@ -327,6 +328,9 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen guestJoinButton.setElementCssClass("btn btn-lg btn-default o_sel_bbb_guest_join"); } joinButton.setPrimary(joinButton.isEnabled()); + acknowledgeRecordingEl.setVisible(BigBlueButtonUIHelper.isRecord(meeting) + && ((joinButton.isVisible() && joinButton.isEnabled()) + || (guestJoinButton.isEnabled() && guestJoinButton.isVisible()))); } @Override @@ -344,14 +348,6 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen } } - @Override - public void event(UserRequest ureq, Component source, Event event) { - if(joinButton == source) { - doJoin(ureq); - } - super.event(ureq, source, event); - } - @Override protected void event(UserRequest ureq, Controller source, Event event) { if(confirmDeleteRecordingDialog == source) { @@ -381,9 +377,29 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen publishCtrl = null; } + @Override + protected boolean validateFormLogic(UserRequest ureq) { + boolean allOk = super.validateFormLogic(ureq); + + if(acknowledgeRecordingEl != null) { + acknowledgeRecordingEl.clearError(); + if(acknowledgeRecordingEl.isVisible() + && acknowledgeRecordingEl.isEnabled() && !acknowledgeRecordingEl.isAtLeastSelected(1)) { + acknowledgeRecordingEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + } + + return allOk; + } + @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - if(tableEl == source) { + if(joinButton == source) { + doJoin(ureq); + } else if(this.guestJoinButton == source) { + doGuestJoin(ureq); + } else if(tableEl == source) { if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; if("delete".equals(se.getCommand())) { @@ -415,12 +431,28 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen listenTo(publishCalloutCtrl); publishCalloutCtrl.activate(); } + + private void doGuestJoin(UserRequest ureq) { + if(!validateFormLogic(ureq)) { + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowCancelRedirectTo()); + return; + } + + String meetingUrl = Settings.getServerContextPathURI() + "/bigbluebutton/" + meeting.getIdentifier(); + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowRedirectTo(meetingUrl)); + } private void doJoin(UserRequest ureq) { + if(!validateFormLogic(ureq)) { + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowCancelRedirectTo()); + return; + } + meeting = bigBlueButtonManager.getMeeting(meeting); if(meeting == null) { showWarning("warning.no.meeting"); fireEvent(ureq, Event.BACK_EVENT); + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowCancelRedirectTo()); return; } @@ -436,16 +468,16 @@ public class BigBlueButtonMeetingController extends FormBasicController implemen BigBlueButtonAttendeeRoles role = guest ? BigBlueButtonAttendeeRoles.guest : BigBlueButtonAttendeeRoles.viewer; meetingUrl = bigBlueButtonManager.join(meeting, getIdentity(), null, role, Boolean.TRUE, errors); } - redirectTo(ureq, meetingUrl, errors); + redirectTo(meetingUrl, errors); } - private void redirectTo(UserRequest ureq, String meetingUrl, BigBlueButtonErrors errors) { + private void redirectTo(String meetingUrl, BigBlueButtonErrors errors) { if(errors.hasErrors()) { - getWindowControl().setError(BigBlueButtonErrorHelper.formatErrors(getTranslator(), errors)); + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowCancelRedirectTo()); } else if(StringHelper.containsNonWhitespace(meetingUrl)) { - MediaResource redirect = new RedirectMediaResource(meetingUrl); - ureq.getDispatchResult().setResultingMediaResource(redirect); + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowRedirectTo(meetingUrl)); } else { + getWindowControl().getWindowBackOffice().sendCommandTo(CommandFactory.createNewWindowCancelRedirectTo()); showWarning("warning.no.access"); } } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java index 9dc917213963fc3869a3c286ac5502b92dbc52c3..a1b896ec1e98925d1603a36b633517022a3dc76b 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/BigBlueButtonUIHelper.java @@ -240,6 +240,12 @@ public class BigBlueButtonUIHelper { return followupTime; } + public static boolean isRecord(BigBlueButtonMeeting meeting) { + return meeting != null && meeting.getTemplate() != null + && meeting.getTemplate().getRecord() != null + && meeting.getTemplate().getRecord().booleanValue(); + } + private static BigBlueButtonManager getBigBlueButtonManager() { return CoreSpringFactory.getImpl(BigBlueButtonManager.class); } diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html index a56d296686ec0b11a899f2f2820783021076e78d..df47a6c9329492f9e25ed81918d50f1a5381b9c2 100644 --- a/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html +++ b/src/main/java/org/olat/modules/bigbluebutton/ui/_content/guest_join.html @@ -31,6 +31,18 @@ </div> #end </div> + + #if($r.visible("meeting.acknowledge.recording")) + <div class="o_warning"> + <h4>$r.translate("meeting.acknowledge.recording.explain.title")</h4> + <p>$r.translate("meeting.acknowledge.recording.explain")</p> + $r.render("meeting.acknowledge.recording") + #if($f.hasError("meeting.acknowledge.recording")) + $r.render("meeting.acknowledge.recording_ERROR") + #end + </div> + #end + <div class=o_button_group> $r.render("meeting.join.button") </div> 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 76be8c6d270cc4be4b0c79aff1a019f2b7958dde..15cea5366ef4a6d917be41bbd01b5ad5222279ad 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 @@ -34,10 +34,18 @@ <div class="o_block_large o_info">$r.translate("meeting.create.intro")</div> #end -<div class="o_button_group"> -#if($r.available("meeting.start.button") && $r.visible("meeting.start.button")) - $r.render("meeting.start.button") +#if($r.visible("meeting.acknowledge.recording")) +<div class="o_warning"> + <h4>$r.translate("meeting.acknowledge.recording.explain.title")</h4> + <p>$r.translate("meeting.acknowledge.recording.explain")</p> + $r.render("meeting.acknowledge.recording") + #if($f.hasError("meeting.acknowledge.recording")) + $r.render("meeting.acknowledge.recording_ERROR") + #end +</div> #end + +<div class="o_button_group"> #if($r.available("meeting.join.button") && $r.visible("meeting.join.button")) $r.render("meeting.join.button") #end 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 aaa6235274290e8d512f6ce3ebe5742bd2b92cda..6564961420b672626fd1aa05d8e1b47537385a69 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 @@ -62,6 +62,9 @@ filter.all.instances=Alle OpenOlats filter.this.instance=Dieses OpenOlat layout.standard=Standard layout.webcam=Webcam Termin +meeting.acknowledge.recording.agree=Ich bin einverstanden +meeting.acknowledge.recording.explain=Dieses Meeting mit allen Video-, Audio-, Chat-Nachrichten- und Whiteboard-Anmerkungen wird aufgezeichnet und kann nach dem Meeting ver\u00F6ffentlicht werden. +meeting.acknowledge.recording.explain.title=Aufzeichnungen meeting.create.intro=Der Online-Termin wurde vom Betreuer noch nicht er\u00f6ffnet. Teilnehmer k\u00f6nnen den Raum noch nicht betreten. meeting.creator=Erstellt durch meeting.day=Datum des Meetings 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 8b2d070941e53b5c07970ed602df98e47248ad1d..99867cf0eedbf79f0701db2f5edb68d06119cc04 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 @@ -62,6 +62,9 @@ filter.all.instances=All OpenOlats filter.this.instance=This OpenOlat layout.standard=Standard layout.webcam=Webcam meeting +meeting.acknowledge.recording.agree=I agree +meeting.acknowledge.recording.explain=This meeting including all video, audio, chat message and whiteboard annotations will be recorded and can be published after the meeting. +meeting.acknowledge.recording.explain.title=Meeting recording meeting.create.intro=The meeting has not yet been started by the coach. Participants are not able to enter the classroom. meeting.creator=Creator meeting.day=Date of the meeting