From ffc448f9485a687ddb517499cab920e70f502a19 Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Mon, 18 Dec 2017 12:16:15 -0800 Subject: [PATCH 1/8] - fix issue https://github.com/bigbluebutton/bigbluebutton/issues/4660 --- .../web-app/WEB-INF/freemarker/get-meeting-info.ftlx | 2 +- bigbluebutton-web/web-app/WEB-INF/freemarker/get-meetings.ftlx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meeting-info.ftlx b/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meeting-info.ftlx index c3ba00308d..d7aebe3e2f 100755 --- a/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meeting-info.ftlx +++ b/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meeting-info.ftlx @@ -27,7 +27,7 @@ <#list meeting.getUsers() as att> - ${att.getInternalUserId()} + ${att.getExternalUserId()} ${att.getFullname()?html} ${att.getRole()} ${att.isPresenter()?c} diff --git a/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meetings.ftlx b/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meetings.ftlx index bcc231f5ff..a43bfaea9c 100755 --- a/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meetings.ftlx +++ b/bigbluebutton-web/web-app/WEB-INF/freemarker/get-meetings.ftlx @@ -32,7 +32,7 @@ <#list meetingDetail.meeting.getUsers() as att> - ${att.getInternalUserId()} + ${att.getExternalUserId()} ${att.getFullname()?html} ${att.getRole()} ${att.isPresenter()?c} From 8223a0802925841a54729271efe525cb574f70a3 Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Mon, 18 Dec 2017 12:52:33 -0800 Subject: [PATCH 2/8] - hardcode logoutTimer to zero as we don't use this feature in the release - substitute keyworks in moderatorOnlyMessage --- .../java/org/bigbluebutton/api/ParamsProcessorUtil.java | 7 ++++++- .../org/bigbluebutton/web/controllers/ApiController.groovy | 4 ---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java index c449b15ade..1f584869a8 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java @@ -352,6 +352,9 @@ public class ParamsProcessorUtil { int meetingDuration = processMeetingDuration(params.get("duration")); int logoutTimer = processMeetingDuration(params.get("logoutTimer")); + // Hardcode to zero as we don't use this feature in 2.0.x (ralam dec 18, 2017) + logoutTimer = 0; + // set is breakout room property boolean isBreakout = false; if (!StringUtils.isEmpty(params.get("isBreakout"))) { @@ -463,7 +466,9 @@ public class ParamsProcessorUtil { meeting.storeConfig(true, configXML); if (!StringUtils.isEmpty(params.get("moderatorOnlyMessage"))) { - String moderatorOnlyMessage = params.get("moderatorOnlyMessage"); + String moderatorOnlyMessageTemplate = params.get("moderatorOnlyMessage"); + String moderatorOnlyMessage = substituteKeywords(moderatorOnlyMessageTemplate, + dialNumber, telVoice, meetingName); meeting.setModeratorOnlyMessage(moderatorOnlyMessage); } diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy index 6b00d4467e..e73472fe9c 100755 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy @@ -162,10 +162,6 @@ class ApiController { Meeting newMeeting = paramsProcessorUtil.processCreateParams(params); - if (! StringUtils.isEmpty(params.moderatorOnlyMessage)) { - newMeeting.setModeratorOnlyMessage(params.moderatorOnlyMessage); - } - if (meetingService.createMeeting(newMeeting)) { // See if the request came with pre-uploading of presentation. uploadDocuments(newMeeting); From 276e9e2f5f486bebd64baa81a7362379a84a6622 Mon Sep 17 00:00:00 2001 From: Ghazi Triki Date: Wed, 20 Dec 2017 17:32:10 +0100 Subject: [PATCH 3/8] Fix put meeting and at muted status. --- .../UserJoinMeetingAfterReconnectReqMsgHdlr.scala | 1 - .../apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala | 14 ++++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserJoinMeetingAfterReconnectReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserJoinMeetingAfterReconnectReqMsgHdlr.scala index b53f1dcffe..7d3c61bea7 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserJoinMeetingAfterReconnectReqMsgHdlr.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UserJoinMeetingAfterReconnectReqMsgHdlr.scala @@ -4,7 +4,6 @@ import org.bigbluebutton.common2.msgs.UserJoinMeetingAfterReconnectReqMsg import org.bigbluebutton.core.apps.breakout.BreakoutHdlrHelpers import org.bigbluebutton.core.apps.voice.UserJoinedVoiceConfEvtMsgHdlr import org.bigbluebutton.core.domain.MeetingState2x -import org.bigbluebutton.core.models.VoiceUsers import org.bigbluebutton.core.running.{ BaseMeetingActor, HandlerHelpers, LiveMeeting, OutMsgRouter } trait UserJoinMeetingAfterReconnectReqMsgHdlr extends HandlerHelpers with BreakoutHdlrHelpers with UserJoinedVoiceConfEvtMsgHdlr { diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala index 15e35a59bf..6541dd7d50 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala @@ -5,6 +5,7 @@ import org.bigbluebutton.core.apps.breakout.BreakoutHdlrHelpers import org.bigbluebutton.core.models.{ VoiceUserState, VoiceUsers } import org.bigbluebutton.core.running.{ BaseMeetingActor, LiveMeeting, OutMsgRouter } import org.bigbluebutton.core2.MeetingStatus2x +import org.bigbluebutton.core2.message.senders.MsgBuilder trait UserJoinedVoiceConfEvtMsgHdlr extends BreakoutHdlrHelpers { this: BaseMeetingActor => @@ -24,13 +25,11 @@ trait UserJoinedVoiceConfEvtMsgHdlr extends BreakoutHdlrHelpers { def broadcastEvent(voiceUserState: VoiceUserState): Unit = { val routing = Routing.addMsgToClientRouting( MessageTypes.BROADCAST_TO_MEETING, - liveMeeting.props.meetingProp.intId, voiceUserState.intId - ) + liveMeeting.props.meetingProp.intId, voiceUserState.intId) val envelope = BbbCoreEnvelope(UserJoinedVoiceConfToClientEvtMsg.NAME, routing) val header = BbbClientMsgHeader( UserJoinedVoiceConfToClientEvtMsg.NAME, - liveMeeting.props.meetingProp.intId, voiceUserState.intId - ) + liveMeeting.props.meetingProp.intId, voiceUserState.intId) val body = UserJoinedVoiceConfToClientEvtMsgBody(voiceConf, voiceUserState.intId, voiceUserState.voiceUserId, voiceUserState.callerName, voiceUserState.callerNum, voiceUserState.muted, voiceUserState.talking, @@ -46,6 +45,12 @@ trait UserJoinedVoiceConfEvtMsgHdlr extends BreakoutHdlrHelpers { val voiceUserState = VoiceUserState(intId, voiceUserId, callingWith, callerIdName, callerIdNum, muted, talking, listenOnly = isListenOnly) VoiceUsers.add(liveMeeting.voiceUsers, voiceUserState) + if (MeetingStatus2x.isMeetingMuted(liveMeeting.status) || muted) { + val event = MsgBuilder.buildMuteUserInVoiceConfSysMsg(liveMeeting.props.meetingProp.intId, liveMeeting.props.voiceProp.voiceConf, + voiceUserId, true) + outGW.send(event) + } + broadcastEvent(voiceUserState) if (liveMeeting.props.meetingProp.isBreakout) { @@ -80,4 +85,5 @@ trait UserJoinedVoiceConfEvtMsgHdlr extends BreakoutHdlrHelpers { val event = StartRecordingVoiceConfSysMsg(header, body) BbbCommonEnvCoreMsg(envelope, event) } + } From f5502a1a2ad2c7ad4ad4e220b35753fcd7ae5394 Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Wed, 20 Dec 2017 11:06:00 -0800 Subject: [PATCH 4/8] - allow passing of custom param (logo) to override default logo --- .../org/bigbluebutton/api/ParamsProcessorUtil.java | 4 ++++ .../java/org/bigbluebutton/api/domain/Meeting.java | 11 ++++++++++- .../src/org/bigbluebutton/core/model/Meeting.as | 1 + .../main/model/users/EnterApiResponse.as | 4 ++-- .../org/bigbluebutton/main/model/users/JoinService.as | 7 +++++-- .../org/bigbluebutton/main/model/users/UserService.as | 4 +++- .../src/org/bigbluebutton/main/views/MainToolbar.mxml | 6 ++++++ .../web/controllers/ApiController.groovy | 2 ++ 8 files changed, 33 insertions(+), 6 deletions(-) diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java index 1f584869a8..b5ba4c75f1 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java @@ -483,6 +483,10 @@ public class ParamsProcessorUtil { meeting.setParentMeetingId(parentMeetingId); } + if (!StringUtils.isEmpty(params.get("logo"))) { + meeting.setCustomLogoURL(params.get("logo")); + } + return meeting; } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java index cd0fd6c939..f13e222443 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java @@ -63,6 +63,7 @@ public class Meeting { private final ConcurrentMap configs; private final Boolean isBreakout; private final List breakoutRooms = new ArrayList(); + private String customLogoURL = ""; private Integer maxInactivityTimeoutMinutes = 120; private Integer warnMinutesBeforeMax = 5; @@ -292,7 +293,15 @@ public class Meeting { public boolean hasUserJoined() { return userHasJoined; } - + + public String getCustomLogoURL() { + return customLogoURL; + } + + public void setCustomLogoURL(String url) { + customLogoURL = url; + } + public void userJoined(User user) { userHasJoined = true; this.users.put(user.getInternalUserId(), user); diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as b/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as index bcb722efa2..89bb5c4a1b 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as +++ b/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as @@ -17,6 +17,7 @@ package org.bigbluebutton.core.model public var webcamsOnlyForModerator:Boolean = false; public var metadata:Object = null; public var muteOnStart:Boolean = false; + public var customLogo:String = ""; } } \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as index 75e82373b0..01e7af0ca0 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as @@ -11,13 +11,13 @@ package org.bigbluebutton.main.model.users public var authToken: String; public var customdata:Object = new Object(); public var logoutUrl: String; - public var logoutTimer : int; + public var logoutTimer : int; public var defaultLayout: String; public var avatarURL: String; public var dialnumber: String; public var voiceConf: String; public var welcome: String; - + public var customLogo:String; public var meetingName: String; public var extMeetingId: String; public var intMeetingId: String; diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as index 4123ea0506..5b790362ff 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as @@ -158,9 +158,10 @@ package org.bigbluebutton.main.model.users apiResponse.welcome = result.response.welcome; apiResponse.logoutUrl = processLogoutUrl(result.response); - apiResponse.logoutTimer = result.response.logoutTimer; + apiResponse.logoutTimer = result.response.logoutTimer; apiResponse.defaultLayout = result.response.defaultLayout; - apiResponse.avatarURL = result.response.avatarURL + apiResponse.avatarURL = result.response.avatarURL; + apiResponse.customdata = new Object(); if (result.response.customdata) { @@ -178,6 +179,8 @@ package org.bigbluebutton.main.model.users if (result.response.hasOwnProperty("modOnlyMessage")) { apiResponse.modOnlyMessage = result.response.modOnlyMessage; } + + apiResponse.customLogo = result.response.customLogoURL; if (_resultListener != null) _resultListener(true, apiResponse); } diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as index 65d1389400..3b74bd4bd9 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as @@ -22,6 +22,7 @@ package org.bigbluebutton.main.model.users import flash.external.ExternalInterface; import flash.net.NetConnection; + import org.as3commons.logging.api.ILogger; import org.as3commons.logging.api.getClassLogger; import org.bigbluebutton.core.BBB; @@ -129,7 +130,8 @@ package org.bigbluebutton.main.model.users LiveMeeting.inst().meeting.webcamsOnlyForModerator = result.webcamsOnlyForModerator; LiveMeeting.inst().meeting.metadata = result.metadata; LiveMeeting.inst().meeting.muteOnStart = meetingOptions.muteOnStart; - + LiveMeeting.inst().meeting.customLogo = result.customLogo; + // assign the meeting name to the document title ExternalInterface.call("setTitle", result.meetingName); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml index 6f02545753..d6c11afce1 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainToolbar.mxml @@ -211,6 +211,12 @@ with BigBlueButton; if not, see . } } + var customLogo: String = LiveMeeting.inst().meeting.customLogo; + + if (customLogo != "") { + logo.source = LiveMeeting.inst().meeting.customLogo; + } + if (UsersUtil.isBreakout()) { breakoutRibbon.visible = breakoutRibbon.includeInLayout = true; var sequence:String = StringUtils.substringAfterLast(UsersUtil.getMeetingName(), " "); diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy index e73472fe9c..e2987e3108 100755 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy @@ -1377,6 +1377,8 @@ class ApiController { welcome = us.welcome if (! StringUtils.isEmpty(meeting.moderatorOnlyMessage)) modOnlyMessage = meeting.moderatorOnlyMessage + + customLogoURL = meeting.getCustomLogoURL() logoutUrl = us.logoutUrl defaultLayout = us.defaultLayout avatarURL = us.avatarURL From 64a9cbfea1708ae58c75f35e0ff0ec0fa95ef5bf Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Wed, 20 Dec 2017 13:30:35 -0800 Subject: [PATCH 5/8] - users come in as always unmuted, so no need to check muted flag --- .../core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala index 6541dd7d50..33b0d4cbc5 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/voice/UserJoinedVoiceConfEvtMsgHdlr.scala @@ -25,11 +25,13 @@ trait UserJoinedVoiceConfEvtMsgHdlr extends BreakoutHdlrHelpers { def broadcastEvent(voiceUserState: VoiceUserState): Unit = { val routing = Routing.addMsgToClientRouting( MessageTypes.BROADCAST_TO_MEETING, - liveMeeting.props.meetingProp.intId, voiceUserState.intId) + liveMeeting.props.meetingProp.intId, voiceUserState.intId + ) val envelope = BbbCoreEnvelope(UserJoinedVoiceConfToClientEvtMsg.NAME, routing) val header = BbbClientMsgHeader( UserJoinedVoiceConfToClientEvtMsg.NAME, - liveMeeting.props.meetingProp.intId, voiceUserState.intId) + liveMeeting.props.meetingProp.intId, voiceUserState.intId + ) val body = UserJoinedVoiceConfToClientEvtMsgBody(voiceConf, voiceUserState.intId, voiceUserState.voiceUserId, voiceUserState.callerName, voiceUserState.callerNum, voiceUserState.muted, voiceUserState.talking, @@ -45,7 +47,7 @@ trait UserJoinedVoiceConfEvtMsgHdlr extends BreakoutHdlrHelpers { val voiceUserState = VoiceUserState(intId, voiceUserId, callingWith, callerIdName, callerIdNum, muted, talking, listenOnly = isListenOnly) VoiceUsers.add(liveMeeting.voiceUsers, voiceUserState) - if (MeetingStatus2x.isMeetingMuted(liveMeeting.status) || muted) { + if (MeetingStatus2x.isMeetingMuted(liveMeeting.status)) { val event = MsgBuilder.buildMuteUserInVoiceConfSysMsg(liveMeeting.props.meetingProp.intId, liveMeeting.props.voiceProp.voiceConf, voiceUserId, true) outGW.send(event) From d09abe92e4fc26e95a62ac13fec7185845682589 Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Wed, 20 Dec 2017 14:28:01 -0800 Subject: [PATCH 6/8] - allow to pass custom copyright text using create API --- .../org/bigbluebutton/api/ParamsProcessorUtil.java | 4 ++++ .../java/org/bigbluebutton/api/domain/Meeting.java | 9 +++++++++ .../src/org/bigbluebutton/core/model/Meeting.as | 4 ++-- .../main/model/users/EnterApiResponse.as | 1 + .../org/bigbluebutton/main/model/users/JoinService.as | 3 ++- .../org/bigbluebutton/main/model/users/UserService.as | 2 +- .../main/views/MainApplicationShell.mxml | 11 +++++++++++ .../web/controllers/ApiController.groovy | 1 + 8 files changed, 31 insertions(+), 4 deletions(-) diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java index b5ba4c75f1..d8d6bc963b 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java @@ -487,6 +487,10 @@ public class ParamsProcessorUtil { meeting.setCustomLogoURL(params.get("logo")); } + if (!StringUtils.isEmpty(params.get("copyright"))) { + meeting.setCustomCopyright(params.get("copyright")); + } + return meeting; } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java index f13e222443..39c5ab8dfb 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java @@ -64,6 +64,7 @@ public class Meeting { private final Boolean isBreakout; private final List breakoutRooms = new ArrayList(); private String customLogoURL = ""; + private String customCopyright = ""; private Integer maxInactivityTimeoutMinutes = 120; private Integer warnMinutesBeforeMax = 5; @@ -302,6 +303,14 @@ public class Meeting { customLogoURL = url; } + public void setCustomCopyright(String copyright) { + customCopyright = copyright; + } + + public String getCustomCopyright() { + return customCopyright; + } + public void userJoined(User user) { userHasJoined = true; this.users.put(user.getInternalUserId(), user); diff --git a/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as b/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as index 89bb5c4a1b..4e830b5aaa 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as +++ b/bigbluebutton-client/src/org/bigbluebutton/core/model/Meeting.as @@ -17,7 +17,7 @@ package org.bigbluebutton.core.model public var webcamsOnlyForModerator:Boolean = false; public var metadata:Object = null; public var muteOnStart:Boolean = false; - public var customLogo:String = ""; - + public var customLogo:String = ""; + public var customCopyright:String = ""; } } \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as index 01e7af0ca0..625e9547fb 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as @@ -18,6 +18,7 @@ package org.bigbluebutton.main.model.users public var voiceConf: String; public var welcome: String; public var customLogo:String; + public var customCopyright:String; public var meetingName: String; public var extMeetingId: String; public var intMeetingId: String; diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as index 5b790362ff..d1feb7206a 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as @@ -181,7 +181,8 @@ package org.bigbluebutton.main.model.users } apiResponse.customLogo = result.response.customLogoURL; - + apiResponse.customCopyright = result.response.customCopyright; + if (_resultListener != null) _resultListener(true, apiResponse); } diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as index 3b74bd4bd9..1c4bbde45d 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as @@ -131,7 +131,7 @@ package org.bigbluebutton.main.model.users LiveMeeting.inst().meeting.metadata = result.metadata; LiveMeeting.inst().meeting.muteOnStart = meetingOptions.muteOnStart; LiveMeeting.inst().meeting.customLogo = result.customLogo; - + LiveMeeting.inst().meeting.customCopyright = result.customCopyright; // assign the meeting name to the document title ExternalInterface.call("setTitle", result.meetingName); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml index 0e83c132d6..4e34c66377 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml @@ -84,6 +84,7 @@ with BigBlueButton; if not, see . + @@ -125,6 +126,7 @@ with BigBlueButton; if not, see . import org.bigbluebutton.core.events.NewGuestWaitingEvent; import org.bigbluebutton.core.events.RoundTripLatencyReceivedEvent; import org.bigbluebutton.core.events.SwitchedLayoutEvent; + import org.bigbluebutton.core.model.LiveMeeting; import org.bigbluebutton.core.vo.LockSettingsVO; import org.bigbluebutton.main.events.AppVersionEvent; import org.bigbluebutton.main.events.BBBEvent; @@ -143,6 +145,7 @@ with BigBlueButton; if not, see . import org.bigbluebutton.main.model.options.BrowserVersionsOptions; import org.bigbluebutton.main.model.options.LanguageOptions; import org.bigbluebutton.main.model.options.LayoutOptions; + import org.bigbluebutton.main.model.users.events.ConferenceCreatedEvent; import org.bigbluebutton.main.model.users.events.ConnectionFailedEvent; import org.bigbluebutton.modules.phone.events.AudioSelectionWindowEvent; import org.bigbluebutton.modules.phone.events.FlashMicSettingsEvent; @@ -245,12 +248,20 @@ with BigBlueButton; if not, see . _respTimer.start(); } + private function handleConferenceCreatedEvent(event:ConferenceCreatedEvent):void { + updateCopyrightText(); + } + private function updateCopyrightText():void { if (StringUtils.isEmpty(brandingOptions.copyright)) { copyrightText = ResourceUtil.getInstance().getString('bbb.mainshell.copyrightLabel2',[appVersion]); } else { copyrightText = String(brandingOptions.copyright).replace("{0}", appVersion); } + + if (!StringUtils.isEmpty(LiveMeeting.inst().meeting.customCopyright)) { + copyrightText = LiveMeeting.inst().meeting.customCopyright; + } } private function initQuote() : void { diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy index e2987e3108..5be1a10c16 100755 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy @@ -1379,6 +1379,7 @@ class ApiController { modOnlyMessage = meeting.moderatorOnlyMessage customLogoURL = meeting.getCustomLogoURL() + customCopyright = meeting.getCustomCopyright() logoutUrl = us.logoutUrl defaultLayout = us.defaultLayout avatarURL = us.avatarURL From 78afb91562d92f8e06c109c84221e55f2c59e21f Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Thu, 21 Dec 2017 10:40:44 -0800 Subject: [PATCH 7/8] - implement muteOnstart by passing on create API or using bigbluebutton.properties in bbb-web instead of setting it in config.xml --- .../core/running/MeetingActor.scala | 7 +++++ .../common2/domain/Meeting2x.scala | 2 +- .../org/bigbluebutton/api/MeetingService.java | 3 +- .../api/ParamsProcessorUtil.java | 15 +++++++++ .../org/bigbluebutton/api/domain/Meeting.java | 9 ++++++ .../bigbluebutton/api2/IBbbWebApiGWApp.java | 3 +- .../bigbluebutton/api2/BbbWebApiGWApp.scala | 5 +-- .../resources/config.xml.template | 1 - .../main/model/options/MeetingOptions.as | 31 ------------------- .../main/model/users/EnterApiResponse.as | 1 + .../main/model/users/JoinService.as | 3 +- .../main/model/users/UserService.as | 12 ++++--- .../grails-app/conf/bigbluebutton.properties | 7 +++-- .../grails-app/conf/spring/resources.xml | 1 + .../web/controllers/ApiController.groovy | 1 + 15 files changed, 56 insertions(+), 45 deletions(-) delete mode 100644 bigbluebutton-client/src/org/bigbluebutton/main/model/options/MeetingOptions.as diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala index 6bd0ddf833..86351c0c36 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/MeetingActor.scala @@ -131,6 +131,13 @@ class MeetingActor( var lastRttTestSentOn = System.currentTimeMillis() + // Initialize if the meeting is muted on start + if (props.voiceProp.muteOnStart) { + MeetingStatus2x.muteMeeting(liveMeeting.status) + } else { + MeetingStatus2x.unmuteMeeting(liveMeeting.status) + } + /*******************************************************************/ //object FakeTestData extends FakeTestData //FakeTestData.createFakeUsers(liveMeeting) diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/domain/Meeting2x.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/domain/Meeting2x.scala index d12fb9c7f8..b4e0e92aa2 100755 --- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/domain/Meeting2x.scala +++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/domain/Meeting2x.scala @@ -16,7 +16,7 @@ case class RecordProp(record: Boolean, autoStartRecording: Boolean, allowStartSt case class WelcomeProp(welcomeMsgTemplate: String, welcomeMsg: String, modOnlyMessage: String) -case class VoiceProp(telVoice: String, voiceConf: String, dialNumber: String) +case class VoiceProp(telVoice: String, voiceConf: String, dialNumber: String, muteOnStart: Boolean) case class UsersProp(maxUsers: Int, webcamsOnlyForModerator: Boolean, guestPolicy: String) diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java index 9e5a6e40ef..b698ec2bdf 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/MeetingService.java @@ -266,7 +266,8 @@ public class MeetingService implements MessageListener { m.isBreakout(), m.getSequence(), m.getMetadata(), m.getGuestPolicy(), m.getWelcomeMessageTemplate(), m.getWelcomeMessage(), m.getModeratorOnlyMessage(), m.getDialNumber(), m.getMaxUsers(), m.getMaxInactivityTimeoutMinutes(), m.getWarnMinutesBeforeMax(), - m.getMeetingExpireIfNoUserJoinedInMinutes(), m.getmeetingExpireWhenLastUserLeftInMinutes()); + m.getMeetingExpireIfNoUserJoinedInMinutes(), m.getmeetingExpireWhenLastUserLeftInMinutes(), + m.getMuteOnStart()); } diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java index d8d6bc963b..cea7051f80 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/ParamsProcessorUtil.java @@ -81,6 +81,7 @@ public class ParamsProcessorUtil { private boolean autoStartRecording; private boolean allowStartStopRecording; private boolean webcamsOnlyForModerator; + private boolean defaultMuteOnStart = false; private String defaultConfigXML = null; @@ -490,6 +491,11 @@ public class ParamsProcessorUtil { if (!StringUtils.isEmpty(params.get("copyright"))) { meeting.setCustomCopyright(params.get("copyright")); } + Boolean muteOnStart = defaultMuteOnStart; + if (!StringUtils.isEmpty(params.get("muteOnStart"))) { + muteOnStart = Boolean.parseBoolean(params.get("muteOnStart")); + meeting.setMuteOnStart(muteOnStart); + } return meeting; } @@ -905,6 +911,15 @@ public class ParamsProcessorUtil { meetingExpireIfNoUserJoinedInMinutes = value; } + public void setMuteOnStart(Boolean mute) { + defaultMuteOnStart = mute; + } + + public Boolean getMuteOnStart() { + return defaultMuteOnStart; + } + + public ArrayList decodeIds(String encodeid) { ArrayList ids=new ArrayList(); try { diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java b/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java index 39c5ab8dfb..bfb4322877 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api/domain/Meeting.java @@ -65,6 +65,7 @@ public class Meeting { private final List breakoutRooms = new ArrayList(); private String customLogoURL = ""; private String customCopyright = ""; + private Boolean muteOnStart = false; private Integer maxInactivityTimeoutMinutes = 120; private Integer warnMinutesBeforeMax = 5; @@ -311,6 +312,14 @@ public class Meeting { return customCopyright; } + public void setMuteOnStart(Boolean mute) { + muteOnStart = mute; + } + + public Boolean getMuteOnStart() { + return muteOnStart; + } + public void userJoined(User user) { userHasJoined = true; this.users.put(user.getInternalUserId(), user); diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java b/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java index d40b7de845..aa1bb8f499 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/api2/IBbbWebApiGWApp.java @@ -19,7 +19,8 @@ public interface IBbbWebApiGWApp { String dialNumber, Integer maxUsers, Integer maxInactivityTimeoutMinutes, Integer warnMinutesBeforeMax, Integer meetingExpireIfNoUserJoinedInMinutes, - Integer meetingExpireWhenLastUserLeftInMinutes); + Integer meetingExpireWhenLastUserLeftInMinutes, + Boolean muteOnStart); void registerUser(String meetingID, String internalUserId, String fullname, String role, String externUserID, String authToken, String avatarURL, Boolean guest, Boolean authed); diff --git a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala index 231b511c3d..d05ba5f789 100755 --- a/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala +++ b/bbb-common-web/src/main/scala/org/bigbluebutton/api2/BbbWebApiGWApp.scala @@ -87,7 +87,8 @@ class BbbWebApiGWApp(val oldMessageReceivedGW: OldMessageReceivedGW, dialNumber: String, maxUsers: java.lang.Integer, maxInactivityTimeoutMinutes: java.lang.Integer, warnMinutesBeforeMax: java.lang.Integer, meetingExpireIfNoUserJoinedInMinutes: java.lang.Integer, - meetingExpireWhenLastUserLeftInMinutes: java.lang.Integer): Unit = { + meetingExpireWhenLastUserLeftInMinutes: java.lang.Integer, + muteOnStart: java.lang.Boolean): Unit = { val meetingProp = MeetingProp(name = meetingName, extId = extMeetingId, intId = meetingId, isBreakout = isBreakout.booleanValue()) @@ -104,7 +105,7 @@ class BbbWebApiGWApp(val oldMessageReceivedGW: OldMessageReceivedGW, val breakoutProps = BreakoutProps(parentId = parentMeetingId, sequence = sequence.intValue(), breakoutRooms = Vector()) val welcomeProp = WelcomeProp(welcomeMsgTemplate = welcomeMsgTemplate, welcomeMsg = welcomeMsg, modOnlyMessage = modOnlyMessage) - val voiceProp = VoiceProp(telVoice = voiceBridge, voiceConf = voiceBridge, dialNumber = dialNumber) + val voiceProp = VoiceProp(telVoice = voiceBridge, voiceConf = voiceBridge, dialNumber = dialNumber, muteOnStart = muteOnStart.booleanValue()) val usersProp = UsersProp(maxUsers = maxUsers.intValue(), webcamsOnlyForModerator = webcamsOnlyForModerator.booleanValue(), guestPolicy = guestPolicy) val metadataProp = MetadataProp(mapAsScalaMap(metadata).toMap) diff --git a/bigbluebutton-client/resources/config.xml.template b/bigbluebutton-client/resources/config.xml.template index 0ddab1bbc7..cc0b56fd9c 100755 --- a/bigbluebutton-client/resources/config.xml.template +++ b/bigbluebutton-client/resources/config.xml.template @@ -16,7 +16,6 @@ showToolbar="true" showFooter="true" showMeetingName="true" showHelpButton="true" showLogoutWindow="true" showLayoutTools="true" confirmLogout="true" showNetworkMonitor="false" showRecordingNotification="true" logoutOnStopRecording="false"/> - . - * - */ -package org.bigbluebutton.main.model.options { - import org.bigbluebutton.core.Options; - - public class MeetingOptions extends Options { - - [Bindable] - public var muteOnStart:Boolean = false; - - public function MeetingOptions() { - name = "meeting"; - } - } -} diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as index 625e9547fb..9f64e43ab0 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/EnterApiResponse.as @@ -29,5 +29,6 @@ package org.bigbluebutton.main.model.users public var webcamsOnlyForModerator: Boolean; public var metadata: Object = new Object(); public var modOnlyMessage: String; + public var muteOnStart:Boolean = false; } } \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as index d1feb7206a..cae0f8b186 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/JoinService.as @@ -118,7 +118,7 @@ package org.bigbluebutton.main.model.users private function handleComplete(e:Event):void { var result:Object = JSON.parse(e.target.data); - + var logData:Object = UsersUtil.initLogData(); logData.tags = ["initialization"]; @@ -182,6 +182,7 @@ package org.bigbluebutton.main.model.users apiResponse.customLogo = result.response.customLogoURL; apiResponse.customCopyright = result.response.customCopyright; + apiResponse.muteOnStart = result.response.muteOnStart as Boolean; if (_resultListener != null) _resultListener(true, apiResponse); } diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as index 1c4bbde45d..5011a5a141 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/main/model/users/UserService.as @@ -41,7 +41,6 @@ package org.bigbluebutton.main.model.users import org.bigbluebutton.main.events.SuccessfulLoginEvent; import org.bigbluebutton.main.events.UserServicesEvent; import org.bigbluebutton.main.model.options.ApplicationOptions; - import org.bigbluebutton.main.model.options.MeetingOptions; import org.bigbluebutton.main.model.users.events.BroadcastStartedEvent; import org.bigbluebutton.main.model.users.events.BroadcastStoppedEvent; import org.bigbluebutton.main.model.users.events.ChangeRoleEvent; @@ -50,8 +49,9 @@ package org.bigbluebutton.main.model.users import org.bigbluebutton.main.model.users.events.KickUserEvent; import org.bigbluebutton.main.model.users.events.RoleChangeEvent; import org.bigbluebutton.main.model.users.events.UsersConnectionEvent; + import org.bigbluebutton.modules.users.events.MeetingMutedEvent; import org.bigbluebutton.modules.users.services.MessageReceiver; - import org.bigbluebutton.modules.users.services.MessageSender; + import org.bigbluebutton.modules.users.services.MessageSender; public class UserService { private static const LOGGER:ILogger = getClassLogger(UserService); @@ -97,8 +97,7 @@ package org.bigbluebutton.main.model.users private function joinListener(success:Boolean, result: EnterApiResponse):void { if (success) { - var meetingOptions : MeetingOptions = Options.getOptions(MeetingOptions) as MeetingOptions; - + LiveMeeting.inst().me.id = result.intUserId LiveMeeting.inst().me.name = result.username; LiveMeeting.inst().me.externalId = result.extUserId; @@ -129,7 +128,8 @@ package org.bigbluebutton.main.model.users LiveMeeting.inst().meeting.allowStartStopRecording = result.allowStartStopRecording; LiveMeeting.inst().meeting.webcamsOnlyForModerator = result.webcamsOnlyForModerator; LiveMeeting.inst().meeting.metadata = result.metadata; - LiveMeeting.inst().meeting.muteOnStart = meetingOptions.muteOnStart; + LiveMeeting.inst().meeting.muteOnStart = result.muteOnStart; + LiveMeeting.inst().meetingStatus.isMeetingMuted = result.muteOnStart; LiveMeeting.inst().meeting.customLogo = result.customLogo; LiveMeeting.inst().meeting.customCopyright = result.customCopyright; @@ -139,6 +139,8 @@ package org.bigbluebutton.main.model.users var e:ConferenceCreatedEvent = new ConferenceCreatedEvent(ConferenceCreatedEvent.CONFERENCE_CREATED_EVENT); dispatcher.dispatchEvent(e); + // Send event to trigger meeting muted initialization of meeting (ralam dec 21, 2017) + dispatcher.dispatchEvent(new MeetingMutedEvent()); connect(); } } diff --git a/bigbluebutton-web/grails-app/conf/bigbluebutton.properties b/bigbluebutton-web/grails-app/conf/bigbluebutton.properties index c2356afc61..575d87026d 100755 --- a/bigbluebutton-web/grails-app/conf/bigbluebutton.properties +++ b/bigbluebutton-web/grails-app/conf/bigbluebutton.properties @@ -153,10 +153,13 @@ allowStartStopRecording=true # Allow webcams streaming reception only to and from moderators webcamsOnlyForModerator=false +# Mute the meeting on start +muteOnStart=false + #---------------------------------------------------- # This URL is where the BBB client is accessible. When a user sucessfully # enters a name and password, she is redirected here to load the client. -bigbluebutton.web.serverURL=http://192.168.246.131 +bigbluebutton.web.serverURL=http://10.130.218.160 #---------------------------------------------------- @@ -190,7 +193,7 @@ defaultConfigURL=${bigbluebutton.web.serverURL}/client/conf/config.xml apiVersion=1.1 # Salt which is used by 3rd-party apps to authenticate api calls -securitySalt=3895c0fc987abdd47edf0352fea2a458 +securitySalt=2ff5336294114f9ee7ff4596203f2a53 # Directory where we drop the .done file recordStatusDir=/var/bigbluebutton/recording/status/recorded diff --git a/bigbluebutton-web/grails-app/conf/spring/resources.xml b/bigbluebutton-web/grails-app/conf/spring/resources.xml index c8cc421648..3ae6da0d11 100755 --- a/bigbluebutton-web/grails-app/conf/spring/resources.xml +++ b/bigbluebutton-web/grails-app/conf/spring/resources.xml @@ -137,6 +137,7 @@ with BigBlueButton; if not, see . + diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy index 5be1a10c16..9e4c2c3bfb 100755 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy @@ -1380,6 +1380,7 @@ class ApiController { customLogoURL = meeting.getCustomLogoURL() customCopyright = meeting.getCustomCopyright() + muteOnStart = meeting.getMuteOnStart() logoutUrl = us.logoutUrl defaultLayout = us.defaultLayout avatarURL = us.avatarURL From d13b01def73f92abb64c59a5d088311aa9ec941e Mon Sep 17 00:00:00 2001 From: Richard Alam Date: Thu, 21 Dec 2017 11:11:32 -0800 Subject: [PATCH 8/8] - change all kick works to remove --- bigbluebutton-client/locale/en_US/bbbResources.properties | 6 +++--- .../org/bigbluebutton/main/views/MainApplicationShell.mxml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bigbluebutton-client/locale/en_US/bbbResources.properties b/bigbluebutton-client/locale/en_US/bbbResources.properties index 4b2c016458..2df94b0491 100755 --- a/bigbluebutton-client/locale/en_US/bbbResources.properties +++ b/bigbluebutton-client/locale/en_US/bbbResources.properties @@ -215,7 +215,7 @@ bbb.users.usersGrid.mediaItemRenderer.pushToTalk = Unmute {0} bbb.users.usersGrid.mediaItemRenderer.pushToMute = Mute {0} bbb.users.usersGrid.mediaItemRenderer.pushToLock = Lock {0} bbb.users.usersGrid.mediaItemRenderer.pushToUnlock = Unlock {0} -bbb.users.usersGrid.mediaItemRenderer.kickUser = Kick {0} +bbb.users.usersGrid.mediaItemRenderer.kickUser = Remove {0} bbb.users.usersGrid.mediaItemRenderer.webcam = Webcam shared bbb.users.usersGrid.mediaItemRenderer.micOff = Microphone off bbb.users.usersGrid.mediaItemRenderer.micOn = Microphone on @@ -513,7 +513,7 @@ bbb.logout.unknown = Your client has lost connection with the server bbb.logout.guestkickedout = The moderator didn't allow you to join this meeting bbb.logout.usercommand = You have logged out of the conference bbb.logour.breakoutRoomClose = Your browser window will be closed -bbb.logout.ejectedFromMeeting = A moderator has kicked you out of the meeting. +bbb.logout.ejectedFromMeeting = You have been removed from the meeting. bbb.logout.refresh.message = If this logout was unexpected click the button below to reconnect. bbb.logout.refresh.label = Reconnect bbb.settings.title = Settings @@ -711,7 +711,7 @@ bbb.shortcutkey.present.fitPage.function = Fit slides to page bbb.shortcutkey.users.makePresenter = 89 bbb.shortcutkey.users.makePresenter.function = Make selected person presenter bbb.shortcutkey.users.kick = 69 -bbb.shortcutkey.users.kick.function = Kick selected person from the meeting +bbb.shortcutkey.users.kick.function = Remove selected person from the meeting bbb.shortcutkey.users.mute = 83 bbb.shortcutkey.users.mute.function = Mute or unmute selected person bbb.shortcutkey.users.muteall = 65 diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml index 4e34c66377..2d95510db4 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/MainApplicationShell.mxml @@ -696,7 +696,7 @@ with BigBlueButton; if not, see . if (e is ConnectionFailedEvent) { showlogoutWindow((e as ConnectionFailedEvent).type); } else - showlogoutWindow("You have logged out of the conference"); + showlogoutWindow(ConnectionFailedEvent.USER_EJECTED_FROM_MEETING); } private function handleExitApplicationEvent(e:ExitApplicationEvent = null):void {