Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into implement-multi-chat

This commit is contained in:
Richard Alam 2017-10-24 13:25:24 -07:00
commit c03c75b022
19 changed files with 382 additions and 460 deletions

View File

@ -203,10 +203,6 @@ phonecomponents|MuteMeButton {
icon : Embed(source="assets/swf/v2_skin.swf", symbol="Icon_Logout_RTL"); icon : Embed(source="assets/swf/v2_skin.swf", symbol="Icon_Logout_RTL");
} }
.settingsButtonStyle {
icon : Embed(source="assets/swf/v2_skin.swf", symbol="Icon_Settings");
}
.webcamDefaultButtonStyle, .webcamOnButtonStyle, .webcamOffButtonStyle, .webcamOverButtonStyle, .webcamDefaultButtonStyle, .webcamOnButtonStyle, .webcamOffButtonStyle, .webcamOverButtonStyle,
.deskshareDefaultButtonStyle, .deskshareOverButtonStyle, .deskshareOnButtonStyle, .deskshareOffButtonStyle, .deskshareDefaultButtonStyle, .deskshareOverButtonStyle, .deskshareOnButtonStyle, .deskshareOffButtonStyle,
.muteMeDefaultButtonStyle, .muteMeOnButtonStyle, .muteMeOffButtonStyle { .muteMeDefaultButtonStyle, .muteMeOnButtonStyle, .muteMeOffButtonStyle {
@ -831,10 +827,16 @@ presentation|FileExportWindow {
//------------------------------ //------------------------------
*/ */
views|BBBSettings { views|GuestSettingsWindow {
headerHeight : 0; headerHeight : 0;
} }
.guestListStyle {
borderStyle : none;
rollOverColor : #FFFFFF;
selectionColor : #FFFFFF;
}
.allowButtonStyle { .allowButtonStyle {
icon : Embed(source="assets/swf/v2_skin.swf", symbol="Icon_Allow"); icon : Embed(source="assets/swf/v2_skin.swf", symbol="Icon_Allow");
} }

View File

@ -120,17 +120,22 @@ bbb.mainToolbar.recordingLabel.notRecording = Not Recording
bbb.waitWindow.waitMessage.message = You are a guest, please wait moderator approval. bbb.waitWindow.waitMessage.message = You are a guest, please wait moderator approval.
bbb.waitWindow.waitMessage.title = Waiting bbb.waitWindow.waitMessage.title = Waiting
bbb.guests.title = Guests bbb.guests.title = Guests
bbb.guests.message.singular = {0} user wants to join this meeting bbb.guests.message.user.singular = {0} user wants to join this meeting
bbb.guests.message.plural = {0} users want to join this meeting bbb.guests.message.user.plural = {0} users want to join this meeting
bbb.guests.message.guest.singular = {0} guest wants to join this meeting
bbb.guests.message.guest.plural = {0} guests want to join this meeting
bbb.guests.allowBtn.toolTip = Allow bbb.guests.allowBtn.toolTip = Allow
bbb.guests.allowEveryoneBtn.text = Allow everyone bbb.guests.allowAllAuthenticated.label = Allow all authenticated
bbb.guests.denyBtn.toolTip = Deny bbb.guests.allowAllGuestsBtn.label = Allow all guests
bbb.guests.denyEveryoneBtn.text = Deny everyone bbb.guests.allowEveryone.label = Allow everyone
bbb.guests.rememberAction.text = Remember choice bbb.guests.denyEveryone.label = Deny everyone
bbb.guests.alwaysAccept = Always accept bbb.guests.rememberAction.label = Remember choice
bbb.guests.alwaysDeny = Always deny bbb.guests.alwaysAccept = Accept all users
bbb.guests.alwaysDeny = Deny everyone
bbb.guests.askModerator = Ask moderator bbb.guests.askModerator = Ask moderator
bbb.guests.Management = Guest management bbb.guests.alwaysAcceptAuth = Accept all autenticated users
bbb.guests.management.title = Guest settings
bbb.guests.pending.title = Review Pending Users
bbb.clientstatus.title = Configuration Notifications bbb.clientstatus.title = Configuration Notifications
bbb.clientstatus.notification = Unread notifications bbb.clientstatus.notification = Unread notifications
bbb.clientstatus.close = Close bbb.clientstatus.close = Close
@ -527,10 +532,8 @@ bbb.logour.breakoutRoomClose = Your browser window will be closed
bbb.logout.ejectedFromMeeting = A moderator has kicked you out of the meeting. bbb.logout.ejectedFromMeeting = A moderator has kicked you out of the meeting.
bbb.logout.refresh.message = If this logout was unexpected click the button below to reconnect. bbb.logout.refresh.message = If this logout was unexpected click the button below to reconnect.
bbb.logout.refresh.label = Reconnect bbb.logout.refresh.label = Reconnect
bbb.settings.title = Settings bbb.guest.settings.ok = OK
bbb.settings.ok = OK bbb.guest.settings.cancel = Cancel
bbb.settings.cancel = Cancel
bbb.settings.btn.toolTip = Open configuration window
bbb.logout.confirm.title = Confirm Logout bbb.logout.confirm.title = Confirm Logout
bbb.logout.confirm.message = Are you sure you want to log out? bbb.logout.confirm.message = Are you sure you want to log out?
bbb.logout.confirm.endMeeting = Yes and end the meeting bbb.logout.confirm.endMeeting = Yes and end the meeting
@ -813,6 +816,7 @@ bbb.users.settings.lockAll = Lock All Users
bbb.users.settings.lockAllExcept = Lock Users Except Presenter bbb.users.settings.lockAllExcept = Lock Users Except Presenter
bbb.users.settings.lockSettings = Lock Viewers ... bbb.users.settings.lockSettings = Lock Viewers ...
bbb.users.settings.breakoutRooms = Breakout Rooms ... bbb.users.settings.breakoutRooms = Breakout Rooms ...
bbb.users.settings.guestSettings = Guest settings ...
bbb.users.settings.sendBreakoutRoomsInvitations = Send Breakout Rooms Invitations ... bbb.users.settings.sendBreakoutRoomsInvitations = Send Breakout Rooms Invitations ...
bbb.users.settings.unlockAll = Unlock All Viewers bbb.users.settings.unlockAll = Unlock All Viewers
bbb.users.settings.roomIsLocked = Locked by default bbb.users.settings.roomIsLocked = Locked by default

View File

@ -1,39 +0,0 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2010 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 2.1 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*
*/
package org.bigbluebutton.common.events
{
import flash.events.Event;
import mx.core.UIComponent;
public class SettingsComponentEvent extends Event
{
public static const ADD:String = "Add Component Event";
public static const REMOVE:String = "Remove Component Event";
public var component:UIComponent;
public function SettingsComponentEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}

View File

@ -1,3 +1,21 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2017 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.core.model package org.bigbluebutton.core.model
{ {
import org.bigbluebutton.core.model.users.GuestsApp; import org.bigbluebutton.core.model.users.GuestsApp;

View File

@ -1,13 +1,32 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2017 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.core.model package org.bigbluebutton.core.model
{ {
import org.bigbluebutton.core.vo.LockSettingsVO; import org.bigbluebutton.core.vo.LockSettingsVO;
import org.bigbluebutton.main.model.GuestPolicy;
public class MeetingStatus public class MeetingStatus
{ {
public var permissions: Permission = new Permission(); public var permissions: Permission = new Permission();
public var isRecording: Boolean = false; public var isRecording: Boolean = false;
public var isMeetingMuted: Boolean = false; public var isMeetingMuted: Boolean = false;
public var guestPolicy: String = "ASK_MODERATOR"; public var guestPolicy: String = GuestPolicy.ASK_MODERATOR;
public var guestPolicySetBy: String = null; public var guestPolicySetBy: String = null;
public var lockSettings:LockSettingsVO = new LockSettingsVO(); public var lockSettings:LockSettingsVO = new LockSettingsVO();
} }

View File

@ -49,13 +49,9 @@ package org.bigbluebutton.main.events {
public static const JOIN_VOICE_FOCUS_HEAD:String = "JOIN_VOICE_FOCUS_HEAD"; public static const JOIN_VOICE_FOCUS_HEAD:String = "JOIN_VOICE_FOCUS_HEAD";
public static const CHANGE_RECORDING_STATUS:String = "CHANGE_RECORDING_STATUS"; public static const CHANGE_RECORDING_STATUS:String = "CHANGE_RECORDING_STATUS";
public static const SETTINGS_CONFIRMED:String = "BBB_SETTINGS_CONFIRMED";
public static const SETTINGS_CANCELLED:String = "BBB_SETTINGS_CANCELLED";
public static const ACCEPT_ALL_WAITING_GUESTS:String = "BBB_ACCEPT_ALL_WAITING_GUESTS"; public static const ACCEPT_ALL_WAITING_GUESTS:String = "BBB_ACCEPT_ALL_WAITING_GUESTS";
public static const DENY_ALL_WAITING_GUESTS:String = "BBB_DENY_ALL_WAITING_GUESTS"; public static const DENY_ALL_WAITING_GUESTS:String = "BBB_DENY_ALL_WAITING_GUESTS";
public static const BROADCAST_GUEST_POLICY:String = "BBB_BROADCAST_GUEST_POLICY"; public static const BROADCAST_GUEST_POLICY:String = "BBB_BROADCAST_GUEST_POLICY";
public static const RETRIEVE_GUEST_POLICY:String = "BBB_RETRIEVE_GUEST_POLICY";
public static const MODERATOR_ALLOWED_ME_TO_JOIN:String = "MODERATOR_ALLOWED_ME_TO_JOIN"; public static const MODERATOR_ALLOWED_ME_TO_JOIN:String = "MODERATOR_ALLOWED_ME_TO_JOIN";
public static const WAITING_FOR_MODERATOR_ACCEPTANCE:String = "WAITING_FOR_MODERATOR_ACCEPTANCE"; public static const WAITING_FOR_MODERATOR_ACCEPTANCE:String = "WAITING_FOR_MODERATOR_ACCEPTANCE";
public static const ADD_GUEST_TO_LIST:String = "ADD_GUEST_TO_LIST"; public static const ADD_GUEST_TO_LIST:String = "ADD_GUEST_TO_LIST";

View File

@ -0,0 +1,31 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2017 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.main.model {
public final class GuestPolicy {
public static const ALWAYS_ACCEPT:String = "ALWAYS_ACCEPT";
public static const ALWAYS_DENY:String = "ALWAYS_DENY";
public static const ASK_MODERATOR:String = "ASK_MODERATOR";
public static const ALWAYS_ACCEPT_AUTH:String = "ALWAYS_ACCEPT_AUTH";
}
}

View File

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:common="org.bigbluebutton.common.*"
xmlns:mate="http://mate.asfusion.com/"
implements="org.bigbluebutton.common.IKeyboardClose"
show="this.setFocus()"
layout="vertical"
horizontalAlign="center"
showCloseButton="false"
minWidth="250"
creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.managers.PopUpManager;
import org.bigbluebutton.common.IKeyboardClose;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.util.i18n.ResourceUtil;
private function init():void {
this.x = (this.parent.width - this.width) / 2;
this.y = (this.parent.height - this.height) / 2;
}
public function pushComponents(components:Array):void {
for (var i:int = 0; i < components.length; ++i) {
addedComponents.addChildAt(components[i] as UIComponent, 0);
}
}
private function onCancelClicked():void {
var event:BBBEvent = new BBBEvent(BBBEvent.SETTINGS_CANCELLED);
dispatchEvent(event);
close();
}
private function onOkClicked():void {
var event:BBBEvent = new BBBEvent(BBBEvent.SETTINGS_CONFIRMED);
dispatchEvent(event);
close();
}
private function close():void {
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<common:AdvancedLabel text="{ResourceUtil.getInstance().getString('bbb.settings.title')}"
styleName="titleWindowStyle"
width="{this.width - 40}" />
<mx:VBox id="addedComponents" paddingTop="12" height="100%" />
<mx:ControlBar width="100%" horizontalAlign="right">
<mx:Button id="okBtn" styleName="mainActionButton" label="{ResourceUtil.getInstance().getString('bbb.settings.ok')}" click="onOkClicked()"/>
<mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.settings.cancel')}" click="onCancelClicked()"/>
</mx:ControlBar>
</mx:TitleWindow>

View File

@ -22,7 +22,7 @@
<mx:HBox xmlns:mx="library://ns.adobe.com/flex/mx" <mx:HBox xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:fx="http://ns.adobe.com/mxml/2009"
verticalAlign="middle" width="100%" > width="90%" verticalAlign="middle">
<fx:Script> <fx:Script>
<![CDATA[ <![CDATA[
@ -33,14 +33,6 @@
private var dispatcher:Dispatcher = new Dispatcher(); private var dispatcher:Dispatcher = new Dispatcher();
[Bindable] private var username:String = "";
private var userid:String;
public function setUser(username:String, userid:String):void {
this.username = username;
this.userid = userid;
}
private function onRejectUserBtnClick():void { private function onRejectUserBtnClick():void {
sendResponseToServer(false); sendResponseToServer(false);
} }
@ -51,21 +43,19 @@
private function sendResponseToServer(accept:Boolean):void { private function sendResponseToServer(accept:Boolean):void {
var approvedGuests:Array = new Array(); var approvedGuests:Array = new Array();
approvedGuests.push(userid); approvedGuests.push(data.intId);
var respCommand:ResponseModeratorEvent = var respCommand:ResponseModeratorEvent = new ResponseModeratorEvent(approvedGuests, accept);
new ResponseModeratorEvent(approvedGuests, accept);
dispatcher.dispatchEvent(respCommand); dispatcher.dispatchEvent(respCommand);
} }
]]> ]]>
</fx:Script> </fx:Script>
<mx:Label text="{username}" maxWidth="150" /> <mx:Label text="{data.name}" width="{this.width-denyButton.width-allowButton.width-30}" />
<mx:Spacer width="100%" /> <mx:Button width="20" height="20" id="denyButton" styleName="denyButtonStyle"
<mx:Button styleName="denyButtonStyle" toolTip="{ResourceUtil.getInstance().getString('bbb.guests.denyBtn.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.guests.denyBtn.toolTip')}"
click="onRejectUserBtnClick()" /> click="onRejectUserBtnClick()" />
<mx:Button styleName="allowButtonStyle" toolTip="{ResourceUtil.getInstance().getString('bbb.guests.allowBtn.toolTip')}" <mx:Button width="20" height="20" id="allowButton" styleName="allowButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.guests.allowBtn.toolTip')}"
click="onAllowUserBtnClick()" /> click="onAllowUserBtnClick()" />
</mx:HBox> </mx:HBox>

View File

@ -1,106 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mate="http://mate.asfusion.com/"
horizontalGap="30"
width="400">
<fx:Declarations>
<mate:Listener type="{BBBEvent.RETRIEVE_GUEST_POLICY}" method="refreshGuestPolicy"/>
<mate:Listener type="{BBBEvent.SETTINGS_CONFIRMED}" method="onOkClicked"/>
<mate:Listener type="{BBBEvent.SETTINGS_CANCELLED}" method="onCancelClicked"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.asfusion.mate.events.Dispatcher;
import mx.events.ItemClickEvent;
import org.as3commons.logging.api.ILogger;
import org.as3commons.logging.api.getClassLogger;
import org.bigbluebutton.common.events.SettingsComponentEvent;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.util.i18n.ResourceUtil;
private static const LOGGER:ILogger = getClassLogger(GuestManagement);
private var option:Number = 0;
private var guestPolicy:String;
private function refreshGuestPolicy(event:BBBEvent):void {
setGuestPolicy(event.payload.guestPolicy);
}
public function setGuestPolicy(guestPolicy:String):void {
this.guestPolicy = guestPolicy;
if(guestPolicy == "ASK_MODERATOR") {
guestManagement.selectedValue = 0;
option = 0;
} else if(guestPolicy == "ALWAYS_ACCEPT") {
guestManagement.selectedValue = 1;
option = 1;
} else {
guestManagement.selectedValue = 2;
option = 2;
}
}
public function addToSettings():void {
var addGuestManagement:SettingsComponentEvent = new SettingsComponentEvent(SettingsComponentEvent.ADD);
addGuestManagement.component = this;
var dispatcher:Dispatcher = new Dispatcher();
dispatcher.dispatchEvent(addGuestManagement);
}
private function onCancelClicked(e:Event = null):void {
setGuestPolicy(guestPolicy);
}
private function handleGuestClick(event:ItemClickEvent):void {
option = event.currentTarget.selectedValue;
}
private function onOkClicked(e:Event = null):void {
var event:BBBEvent = new BBBEvent(BBBEvent.BROADCAST_GUEST_POLICY);
if(option == 0) {
event.payload['guestPolicy'] = "ASK_MODERATOR";
dispatchEvent(event);
}
else if(option == 1) {
event.payload['guestPolicy'] = "ALWAYS_ACCEPT";
dispatchEvent(event);
dispatchEvent(new BBBEvent(BBBEvent.ACCEPT_ALL_WAITING_GUESTS));
}
else {
event.payload['guestPolicy'] = "ALWAYS_DENY";
dispatchEvent(event);
dispatchEvent(new BBBEvent(BBBEvent.DENY_ALL_WAITING_GUESTS));
}
LOGGER.debug("SENDING TO SERVER POLICY");
}
]]>
</fx:Script>
<mx:VBox width="30%" horizontalAlign="right">
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.guests.Management')}"/>
</mx:VBox>
<mx:VBox width="70%">
<mx:RadioButtonGroup id="guestManagement" itemClick="handleGuestClick(event);"/>
<mx:RadioButton groupName="guestManagement"
id="askModerator"
label="{ResourceUtil.getInstance().getString('bbb.guests.askModerator')}"
value="0"
/>
<mx:RadioButton groupName="guestManagement"
id="alwaysAccept"
label="{ResourceUtil.getInstance().getString('bbb.guests.alwaysAccept')}"
value="1"
/>
<mx:RadioButton groupName="guestManagement"
id="AlwaysDeny"
label="{ResourceUtil.getInstance().getString('bbb.guests.alwaysDeny')}"
value="2"
/>
</mx:VBox>
</mx:HBox>

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:common="org.bigbluebutton.common.*"
xmlns:mate="http://mate.asfusion.com/"
implements="org.bigbluebutton.common.IKeyboardClose"
initialize="init()"
show="this.setFocus()"
layout="vertical"
horizontalAlign="center"
showCloseButton="false"
minWidth="480">
<fx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import org.as3commons.logging.api.ILogger;
import org.as3commons.logging.api.getClassLogger;
import org.bigbluebutton.common.IKeyboardClose;
import org.bigbluebutton.core.model.LiveMeeting;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.main.model.GuestPolicy;
import org.bigbluebutton.util.i18n.ResourceUtil;
private static const LOGGER:ILogger = getClassLogger(GuestSettingsWindow);
public function init():void {
guestManagement.selectedValue = LiveMeeting.inst().guestsWaiting.getGuestPolicy();
}
private function onOkClicked(e:Event = null):void {
var event:BBBEvent = new BBBEvent(BBBEvent.BROADCAST_GUEST_POLICY);
event.payload['guestPolicy'] = guestManagement.selectedValue;
dispatchEvent(event);
LOGGER.debug("Sending guest policy update to server");
close();
}
private function close():void {
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<common:AdvancedLabel text="{ResourceUtil.getInstance().getString('bbb.guests.management.title')}"
styleName="titleWindowStyle"
width="{this.width - 40}" />
<mx:RadioButtonGroup id="guestManagement"/>
<mx:HBox horizontalGap="30"
width="100%">
<mx:VBox width="50%">
<mx:RadioButton groupName="guestManagement"
id="askModerator"
width="100%"
label="{ResourceUtil.getInstance().getString('bbb.guests.askModerator')}"
value="{GuestPolicy.ASK_MODERATOR}"
/>
<mx:RadioButton groupName="guestManagement"
id="AlwaysDeny"
width="100%"
label="{ResourceUtil.getInstance().getString('bbb.guests.alwaysDeny')}"
value="{GuestPolicy.ALWAYS_DENY}"
/>
</mx:VBox>
<mx:VBox width="50%">
<mx:RadioButton groupName="guestManagement"
id="alwaysAccept"
width="100%"
label="{ResourceUtil.getInstance().getString('bbb.guests.alwaysAccept')}"
value="{GuestPolicy.ALWAYS_ACCEPT}"
/>
<mx:RadioButton groupName="guestManagement"
id="alwaysAcceptAuth"
width="100%"
label="{ResourceUtil.getInstance().getString('bbb.guests.alwaysAcceptAuth')}"
value="{GuestPolicy.ALWAYS_ACCEPT_AUTH}"
/>
</mx:VBox>
</mx:HBox>
<mx:HBox width="100%" paddingTop="20" horizontalAlign="right">
<mx:Button id="okBtn" styleName="mainActionButton" label="{ResourceUtil.getInstance().getString('bbb.guest.settings.ok')}" click="onOkClicked()"/>
<mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.guest.settings.cancel')}" click="close()"/>
</mx:HBox>
</mx:TitleWindow>

View File

@ -1,146 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
BigBlueButton open source conferencing system - http://www.bigbluebutton.org
Copyright (c) 2010 BigBlueButton Inc. and by respective authors (see below).
BigBlueButton is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 2.1 of the License, or (at your option) any later
version.
BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
$Id: $
-->
<mx:TitleWindow xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009"
title="{ResourceUtil.getInstance().getString('bbb.guests.title')}" showCloseButton="false" creationComplete="init()"
x="0" y="0" layout="vertical" width="320" horizontalAlign="center"
xmlns:mate="http://mate.asfusion.com/" >
<fx:Declarations>
<mate:Listener type="{BBBEvent.ACCEPT_ALL_WAITING_GUESTS}" method="acceptAllWaitingGuests" />
<mate:Listener type="{BBBEvent.DENY_ALL_WAITING_GUESTS}" method="denyAllWaitingGuests" />
<mate:Listener type="{RemoveGuestFromViewEvent.REMOVE_GUEST}" receive="{remove(event.userid)}" />
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.asfusion.mate.events.Dispatcher;
import mx.managers.PopUpManager;
import org.bigbluebutton.core.model.LiveMeeting;
import org.bigbluebutton.core.model.users.GuestWaiting;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.main.events.RemoveGuestEvent;
import org.bigbluebutton.main.events.RemoveGuestFromViewEvent;
import org.bigbluebutton.main.events.ResponseModeratorEvent;
import org.bigbluebutton.util.i18n.ResourceUtil;
private var guestButtons:Object = new Object();
[Bindable] private var numberOfGuests:Number = 0;
private var dispatcher:Dispatcher = new Dispatcher();
public function init():void {
//Uncomment this line to make titlewindow undraggable
//this.isPopUp = false;
}
public function refreshGuestView():void {
var _guests: Array = LiveMeeting.inst().guestsWaiting.getGuests();
for (var i:int = 0; i < _guests.length; i++) {
var _guest: GuestWaiting = _guests[i] as GuestWaiting;
if(guestButtons[_guest.intId] == null) {
var guestItem:GuestItem = new GuestItem();
guestItem.setUser(_guest.name, _guest.intId);
guestListBox.addChild(guestItem);
guestButtons[_guest.intId] = guestItem;
numberOfGuests++;
}
}
this.visible = true;
}
public function sendResponseToAllGuests(approved:Boolean):void {
removeAllGuests();
var _guests: Array = LiveMeeting.inst().guestsWaiting.getGuests();
var approvedGuests: Array = new Array();
for (var i:int = 0; i < _guests.length; i++) {
var _guest: GuestWaiting = _guests[i] as GuestWaiting;
approvedGuests.push(_guest.intId);
}
var respCommand:ResponseModeratorEvent =
new ResponseModeratorEvent(approvedGuests, approved);
dispatcher.dispatchEvent(respCommand);
}
public function sendResponseToAllGuestsCheckBox(resp:Boolean):void {
if(rememberCheckBox.selected) {
var event:BBBEvent = new BBBEvent(BBBEvent.BROADCAST_GUEST_POLICY);
if (resp) {
event.payload['guestPolicy'] = "ALWAYS_ACCEPT";
} else {
event.payload['guestPolicy'] = "ALWAYS_DENY";
}
dispatcher.dispatchEvent(event);
}
sendResponseToAllGuests(resp);
}
public function acceptAllWaitingGuests(event:BBBEvent):void {
sendResponseToAllGuests(true);
}
public function denyAllWaitingGuests(event:BBBEvent):void {
sendResponseToAllGuests(false);
}
public function removeAllGuests():void {
closeWindow();
}
public function remove(userid:String):void {
if (guestButtons[userid] != null) {
numberOfGuests = numberOfGuests - 1;
guestListBox.removeChild(guestButtons[userid]);
delete guestButtons[userid];
var removeGuestEvent:RemoveGuestEvent = new RemoveGuestEvent();
removeGuestEvent.userid = userid;
dispatcher.dispatchEvent(removeGuestEvent);
if (!hasGuest()) {
closeWindow();
}
}
}
public function hasGuest():Boolean {
return numberOfGuests > 0;
}
public function closeWindow():void {
this.visible = false;
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<mx:Label text="{numberOfGuests > 1? ResourceUtil.getInstance().getString('bbb.guests.message.plural', [String(numberOfGuests)]): ResourceUtil.getInstance().getString('bbb.guests.message.singular', [String(numberOfGuests)])}"/>
<mx:HRule width="100%"/>
<mx:Button id="allowEveryoneBtn" label="{ResourceUtil.getInstance().getString('bbb.guests.allowEveryoneBtn.text')}" width="70%" click="sendResponseToAllGuestsCheckBox(true)" toolTip="{allowEveryoneBtn.label}"/>
<mx:Button id="denyEveryoneBtn" label="{ResourceUtil.getInstance().getString('bbb.guests.denyEveryoneBtn.text')}" width="70%" click="sendResponseToAllGuestsCheckBox(false)" toolTip="{denyEveryoneBtn.label}"/>
<mx:CheckBox id="rememberCheckBox" label="{ResourceUtil.getInstance().getString('bbb.guests.rememberAction.text')}"/>
<mx:HRule width="100%"/>
<mx:VBox id="guestListBox" width="100%" height="100%" maxHeight="200" paddingLeft="10" paddingRight="10" paddingBottom="2" />
</mx:TitleWindow>

View File

@ -76,7 +76,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mate:Listener type="{LocaleChangeEvent.LOCALE_CHANGED}" method="onLocaleChanged" /> <mate:Listener type="{LocaleChangeEvent.LOCALE_CHANGED}" method="onLocaleChanged" />
<mate:Listener type="{NetworkStatsEvent.OPEN_NETSTATS_WIN}" method="openNetworkStatsWindow" /> <mate:Listener type="{NetworkStatsEvent.OPEN_NETSTATS_WIN}" method="openNetworkStatsWindow" />
<mate:Listener type="{BBBEvent.RETRIEVE_GUEST_POLICY}" method="setGuestPolicy"/>
<mate:Listener type="{ConnectionFailedEvent.MODERATOR_DENIED_ME}" method="handleLogout" /> <mate:Listener type="{ConnectionFailedEvent.MODERATOR_DENIED_ME}" method="handleLogout" />
<mate:Listener type="{BBBEvent.MODERATOR_ALLOWED_ME_TO_JOIN}" method="guestAllowed" /> <mate:Listener type="{BBBEvent.MODERATOR_ALLOWED_ME_TO_JOIN}" method="guestAllowed" />
<mate:Listener type="{NewGuestWaitingEvent.NEW_GUEST_WAITING}" method="refreshGuestView" /> <mate:Listener type="{NewGuestWaitingEvent.NEW_GUEST_WAITING}" method="refreshGuestView" />
@ -99,7 +98,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import mx.binding.utils.ChangeWatcher; import mx.binding.utils.ChangeWatcher;
import mx.collections.ArrayCollection; import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.core.FlexGlobals; import mx.core.FlexGlobals;
import mx.core.IFlexDisplayObject; import mx.core.IFlexDisplayObject;
import mx.core.UIComponent; import mx.core.UIComponent;
@ -138,6 +136,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import org.bigbluebutton.main.events.NetworkStatsEvent; import org.bigbluebutton.main.events.NetworkStatsEvent;
import org.bigbluebutton.main.events.ShortcutEvent; import org.bigbluebutton.main.events.ShortcutEvent;
import org.bigbluebutton.main.model.Guest; import org.bigbluebutton.main.model.Guest;
import org.bigbluebutton.main.model.GuestPolicy;
import org.bigbluebutton.main.model.ImageLoader; import org.bigbluebutton.main.model.ImageLoader;
import org.bigbluebutton.main.model.options.BrandingOptions; import org.bigbluebutton.main.model.options.BrandingOptions;
import org.bigbluebutton.main.model.options.BrowserVersionsOptions; import org.bigbluebutton.main.model.options.BrowserVersionsOptions;
@ -163,7 +162,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var stoppedModules:ArrayCollection; private var stoppedModules:ArrayCollection;
private var logWindow:LogWindow; private var logWindow:LogWindow;
private var waitWindow:WaitingWindow = null; private var waitWindow:WaitingWindow = null;
private var guestWindow:GuestWindow = null; private var guestWindow:PendingGuestsWindow = null;
private var scWindow:ShortcutHelpWindow; private var scWindow:ShortcutHelpWindow;
private var connectionLostWindow:ConnectionLostWindow; private var connectionLostWindow:ConnectionLostWindow;
@ -192,9 +191,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var isTunneling:Boolean = false; [Bindable] private var isTunneling:Boolean = false;
private var guestManagement:GuestManagement = null;
private var guest:Guest = new Guest(); private var guest:Guest = new Guest();
private var guestPolicy:String = "ASK_MODERATOR"; private var guestPolicy:String = GuestPolicy.ASK_MODERATOR;
private var confirmingLogout:Boolean = false; private var confirmingLogout:Boolean = false;
@ -297,16 +295,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
if (heightWatch != null) heightWatch.unwatch(); if (heightWatch != null) heightWatch.unwatch();
} }
private function setGuestPolicy(event:BBBEvent):void {
guestPolicy = event.payload.guestPolicy;
if(guestManagement == null) {
LOGGER.debug("ADD Guest Event");
guestManagement = new GuestManagement();
guestManagement.setGuestPolicy(guestPolicy);
guestManagement.addToSettings();
}
}
private function updateCopyrightLabelDimensions(e:Event = null):void { private function updateCopyrightLabelDimensions(e:Event = null):void {
var appWidth:Number = parentApplication.width; var appWidth:Number = parentApplication.width;
@ -374,7 +362,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
} }
if (guestWindow == null) { if (guestWindow == null) {
guestWindow = PopUpUtil.createModalPopUp( mdiCanvas, GuestWindow, false) as GuestWindow; guestWindow = PopUpUtil.createModalPopUp( mdiCanvas, PendingGuestsWindow, false) as PendingGuestsWindow;
guestWindow.addEventListener(Event.CLOSE, closeGuestWindow); guestWindow.addEventListener(Event.CLOSE, closeGuestWindow);
guestWindow.x = systemManager.screen.width - guestWindow.width - 20; guestWindow.x = systemManager.screen.width - guestWindow.width - 20;

View File

@ -44,8 +44,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mate:Listener type="{ShortcutEvent.FOCUS_LOGOUT_BUTTON}" method="focusLogoutButton" /> <mate:Listener type="{ShortcutEvent.FOCUS_LOGOUT_BUTTON}" method="focusLogoutButton" />
<mate:Listener type="{ConferenceCreatedEvent.CONFERENCE_CREATED_EVENT}" method="retrieveMeetingName" /> <mate:Listener type="{ConferenceCreatedEvent.CONFERENCE_CREATED_EVENT}" method="retrieveMeetingName" />
<mate:Listener type="{ConnectionFailedEvent.MODERATOR_DENIED_ME}" method="hideToolbar" /> <mate:Listener type="{ConnectionFailedEvent.MODERATOR_DENIED_ME}" method="hideToolbar" />
<mate:Listener type="{SettingsComponentEvent.ADD}" method="addSettingsComponent" />
<mate:Listener type="{SettingsComponentEvent.REMOVE}" method="removeSettingsComponent"/>
<mate:Listener type="{BBBEvent.CHANGE_RECORDING_STATUS}" method="onRecordingStatusChanged" /> <mate:Listener type="{BBBEvent.CHANGE_RECORDING_STATUS}" method="onRecordingStatusChanged" />
<mate:Listener type="{SuccessfulLoginEvent.USER_LOGGED_IN}" method="refreshModeratorButtonsVisibility" /> <mate:Listener type="{SuccessfulLoginEvent.USER_LOGGED_IN}" method="refreshModeratorButtonsVisibility" />
<mate:Listener type="{ChangeMyRole.CHANGE_MY_ROLE_EVENT}" method="refreshRole" /> <mate:Listener type="{ChangeMyRole.CHANGE_MY_ROLE_EVENT}" method="refreshRole" />
@ -63,7 +61,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import mx.core.UIComponent; import mx.core.UIComponent;
import mx.events.CloseEvent; import mx.events.CloseEvent;
import mx.events.ToolTipEvent; import mx.events.ToolTipEvent;
import mx.managers.PopUpManager;
import flashx.textLayout.formats.Direction; import flashx.textLayout.formats.Direction;
@ -71,7 +68,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import org.as3commons.logging.api.ILogger; import org.as3commons.logging.api.ILogger;
import org.as3commons.logging.api.getClassLogger; import org.as3commons.logging.api.getClassLogger;
import org.bigbluebutton.common.events.LocaleChangeEvent; import org.bigbluebutton.common.events.LocaleChangeEvent;
import org.bigbluebutton.common.events.SettingsComponentEvent;
import org.bigbluebutton.common.events.ToolbarButtonEvent; import org.bigbluebutton.common.events.ToolbarButtonEvent;
import org.bigbluebutton.core.BBB; import org.bigbluebutton.core.BBB;
import org.bigbluebutton.core.Options; import org.bigbluebutton.core.Options;
@ -106,7 +102,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var showHelpBtn:Boolean = false; [Bindable] private var showHelpBtn:Boolean = false;
[Bindable] private var showToolbar:Boolean = false; [Bindable] private var showToolbar:Boolean = false;
[Bindable] private var showGuestSettingsButton:Boolean = false;
[Bindable] private var showRecordButton:Boolean = false; [Bindable] private var showRecordButton:Boolean = false;
[Bindable] public var toolbarOptions:LayoutOptions; [Bindable] public var toolbarOptions:LayoutOptions;
[Bindable] private var brandingOptions:BrandingOptions; [Bindable] private var brandingOptions:BrandingOptions;
@ -129,7 +124,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var xml:XML; private var xml:XML;
private var settingsComponents:Array = new Array(); private var settingsComponents:Array = new Array();
private var settingsPopup:BBBSettings = null;
private function init():void{ private function init():void{
toolbarOptions = Options.getOptions(LayoutOptions) as LayoutOptions; toolbarOptions = Options.getOptions(LayoutOptions) as LayoutOptions;
@ -239,8 +233,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
} }
private function refreshModeratorButtonsVisibility(e:*):void { private function refreshModeratorButtonsVisibility(e:*):void {
showGuestSettingsButton = UsersUtil.amIModerator() && usersOptions.enableGuestUI;
showRecordButton = LiveMeeting.inst().meeting.recorded && UsersUtil.amIModerator(); showRecordButton = LiveMeeting.inst().meeting.recorded && UsersUtil.amIModerator();
} }
@ -517,20 +509,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
logoSperatator.visible = logo.includeInLayout = false; logoSperatator.visible = logo.includeInLayout = false;
} }
private function addSettingsComponent(e:SettingsComponentEvent = null):void {
settingsComponents.push(e.component);
}
private function removeSettingsComponent(e:SettingsComponentEvent = null):void {
throw("Not implemented");
}
private function onSettingsButtonClick():void {
settingsPopup = PopUpUtil.createModalPopUp(this.parent, BBBSettings, true) as BBBSettings;
settingsPopup.pushComponents(settingsComponents);
PopUpManager.centerPopUp(settingsPopup);
}
private function refreshRole(e:ChangeMyRole):void { private function refreshRole(e:ChangeMyRole):void {
refreshModeratorButtonsVisibility(null); refreshModeratorButtonsVisibility(null);
} }
@ -573,15 +551,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<views:RecordButton id="recordBtn" visible="{showRecordButton}" includeInLayout="{showRecordButton}"/> <views:RecordButton id="recordBtn" visible="{showRecordButton}" includeInLayout="{showRecordButton}"/>
<views:WebRTCAudioStatus id="webRTCAudioStatus" height="30"/> <views:WebRTCAudioStatus id="webRTCAudioStatus" height="30"/>
<mx:Button
id="bbbSettings"
visible="{showGuestSettingsButton}"
includeInLayout="{showGuestSettingsButton}"
toolTip="{ResourceUtil.getInstance().getString('bbb.settings.btn.toolTip')}"
click="onSettingsButtonClick()"
styleName="settingsButtonStyle"
height="30"
/>
<!-- <!--
<mx:Button label="DISCONNECT!" click="BBB.initConnectionManager().forceClose()" height="22" toolTip="Click to simulate disconnection" /> <mx:Button label="DISCONNECT!" click="BBB.initConnectionManager().forceClose()" height="22" toolTip="Click to simulate disconnection" />
--> -->

View File

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
BigBlueButton open source conferencing system - http://www.bigbluebutton.org
Copyright (c) 2010 BigBlueButton Inc. and by respective authors (see below).
BigBlueButton is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License as published by the Free Software
Foundation; either version 2.1 of the License, or (at your option) any later
version.
BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
$Id: $
-->
<mx:TitleWindow xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:common="org.bigbluebutton.common.*"
title="{ResourceUtil.getInstance().getString('bbb.guests.title')}"
showCloseButton="false"
layout="absolute" width="600" minHeight="400"
verticalScrollPolicy="off" horizontalScrollPolicy="off"
xmlns:mate="http://mate.asfusion.com/" >
<fx:Declarations>
<mate:Listener type="{BBBEvent.ACCEPT_ALL_WAITING_GUESTS}" method="acceptAllWaitingGuests" />
<mate:Listener type="{BBBEvent.DENY_ALL_WAITING_GUESTS}" method="denyAllWaitingGuests" />
<mate:Listener type="{RemoveGuestFromViewEvent.REMOVE_GUEST}" receive="{remove(event.userid)}" />
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.asfusion.mate.events.Dispatcher;
import mx.collections.ArrayCollection;
import mx.managers.PopUpManager;
import org.bigbluebutton.core.model.LiveMeeting;
import org.bigbluebutton.core.model.users.GuestWaiting;
import org.bigbluebutton.main.events.BBBEvent;
import org.bigbluebutton.main.events.RemoveGuestEvent;
import org.bigbluebutton.main.events.RemoveGuestFromViewEvent;
import org.bigbluebutton.main.events.ResponseModeratorEvent;
import org.bigbluebutton.main.model.GuestPolicy;
import org.bigbluebutton.util.i18n.ResourceUtil;
[Bindable]
private var guestUsers:ArrayCollection = new ArrayCollection();
[Bindable]
private var authUsers:ArrayCollection = new ArrayCollection();
private var dispatcher:Dispatcher = new Dispatcher();
public function refreshGuestView():void {
guestUsers = new ArrayCollection(LiveMeeting.inst().guestsWaiting.getGuests());
}
public function sendResponseToAllGuests(approved:Boolean):void {
removeAllGuests();
var _guests: Array = LiveMeeting.inst().guestsWaiting.getGuests();
var approvedGuests: Array = new Array();
for (var i:int = 0; i < _guests.length; i++) {
var _guest: GuestWaiting = _guests[i] as GuestWaiting;
approvedGuests.push(_guest.intId);
}
var respCommand:ResponseModeratorEvent =
new ResponseModeratorEvent(approvedGuests, approved);
dispatcher.dispatchEvent(respCommand);
}
public function sendResponseToAllGuestsCheckBox(resp:Boolean):void {
if(rememberCheckBox.selected) {
var event:BBBEvent = new BBBEvent(BBBEvent.BROADCAST_GUEST_POLICY);
if (resp) {
event.payload['guestPolicy'] = GuestPolicy.ALWAYS_ACCEPT;
} else {
event.payload['guestPolicy'] = GuestPolicy.ALWAYS_DENY;
}
dispatcher.dispatchEvent(event);
}
sendResponseToAllGuests(resp);
}
public function acceptAllWaitingGuests(event:BBBEvent):void {
sendResponseToAllGuests(true);
}
public function denyAllWaitingGuests(event:BBBEvent):void {
sendResponseToAllGuests(false);
}
public function removeAllGuests():void {
closeWindow();
}
public function remove(userid:String):void {
refreshGuestView();
var removeGuestEvent:RemoveGuestEvent = new RemoveGuestEvent();
removeGuestEvent.userid = userid;
dispatcher.dispatchEvent(removeGuestEvent);
if (guestUsers.length == 0) {
closeWindow();
}
}
public function closeWindow():void {
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<mx:VBox height="100%" width="100%" paddingTop="15" paddingBottom="15" verticalGap="15" horizontalAlign="center">
<common:AdvancedLabel text="{ResourceUtil.getInstance().getString('bbb.guests.pending.title')}"
styleName="titleWindowStyle"
width="{this.width - 40}" />
<mx:HBox paddingLeft="20" paddingRight="20" horizontalGap="20" width="100%" height="100%">
<mx:VBox width="200" height="100%">
<mx:VBox width="100%">
<mx:Button id="allowAllAuthBtn" styleName="mainActionButton"
label="{ResourceUtil.getInstance().getString('bbb.guests.allowAllAuthenticated.label')}"
width="100%" click="sendResponseToAllGuestsCheckBox(true)" toolTip="{allowEveryoneBtn.label}"/>
<mx:Button id="allowAllGuestsBtn" styleName="mainActionButton"
label="{ResourceUtil.getInstance().getString('bbb.guests.allowAllGuestsBtn.label')}"
width="100%" click="sendResponseToAllGuestsCheckBox(true)" toolTip="{allowEveryoneBtn.label}"/>
</mx:VBox>
<mx:VBox width="100%" paddingTop="20" paddingBottom="20">
<mx:Button id="allowEveryoneBtn" styleName="mainActionButton"
label="{ResourceUtil.getInstance().getString('bbb.guests.allowEveryone.label')}"
width="100%" click="sendResponseToAllGuestsCheckBox(true)" toolTip="{allowEveryoneBtn.label}"/>
<mx:Button id="denyEveryoneBtn" styleName="mainActionButton"
label="{ResourceUtil.getInstance().getString('bbb.guests.denyEveryone.label')}"
width="100%" click="sendResponseToAllGuestsCheckBox(false)" toolTip="{denyEveryoneBtn.label}"/>
</mx:VBox>
<mx:CheckBox id="rememberCheckBox" label="{ResourceUtil.getInstance().getString('bbb.guests.rememberAction.label')}"/>
</mx:VBox>
<mx:VRule height="100%"/>
<mx:VBox width="100%" height="100%">
<mx:Label text="{authUsers.length > 1 ? ResourceUtil.getInstance().getString('bbb.guests.message.user.plural', [String(authUsers.length)]): ResourceUtil.getInstance().getString('bbb.guests.message.user.singular', [String(authUsers.length)])}"
width="100%"/>
<mx:List id="authUsersList" styleName="guestListStyle" itemRenderer="org.bigbluebutton.main.views.GuestItemRenderer"
rowCount="4" width="100%" paddingLeft="0" paddingRight="0" dataProvider="{authUsers}" />
<mx:Label text="{guestUsers.length > 1 ? ResourceUtil.getInstance().getString('bbb.guests.message.guest.plural', [String(guestUsers.length)]): ResourceUtil.getInstance().getString('bbb.guests.message.guest.singular', [String(guestUsers.length)])}"
width="100%"/>
<mx:List id="guestList" styleName="guestListStyle" itemRenderer="org.bigbluebutton.main.views.GuestItemRenderer"
rowCount="4" width="100%" paddingLeft="0" paddingRight="0" dataProvider="{guestUsers}" />
</mx:VBox>
</mx:HBox>
</mx:VBox>
<mx:Button id="closeButton" click="closeWindow()" styleName="titleWindowCloseButton"
toolTip="{ResourceUtil.getInstance().getString('bbb.guests.pending.close')}"
right="10" top="15"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.guests.pending.close.toolTip')}" />
</mx:TitleWindow>

View File

@ -885,9 +885,7 @@ package org.bigbluebutton.modules.users.services
var body: Object = msg.body as Object; var body: Object = msg.body as Object;
var policy: String = body.policy as String; var policy: String = body.policy as String;
var policyEvent:BBBEvent = new BBBEvent(BBBEvent.RETRIEVE_GUEST_POLICY); LiveMeeting.inst().guestsWaiting.setGuestPolicy(policy);
policyEvent.payload['guestPolicy'] = policy;
dispatcher.dispatchEvent(policyEvent);
} }
public function handleGetGuestPolicyReply(msg:Object):void { public function handleGetGuestPolicyReply(msg:Object):void {
@ -896,10 +894,6 @@ package org.bigbluebutton.modules.users.services
var policy: String = body.policy as String; var policy: String = body.policy as String;
LiveMeeting.inst().guestsWaiting.setGuestPolicy(policy); LiveMeeting.inst().guestsWaiting.setGuestPolicy(policy);
var policyEvent:BBBEvent = new BBBEvent(BBBEvent.RETRIEVE_GUEST_POLICY);
policyEvent.payload['guestPolicy'] = policyEvent;
dispatcher.dispatchEvent(policyEvent);
} }
public function handleGuestAccessDenied(msg:Object):void { public function handleGuestAccessDenied(msg:Object):void {

View File

@ -117,6 +117,7 @@ $Id: $
import org.bigbluebutton.main.model.users.events.StreamStoppedEvent; import org.bigbluebutton.main.model.users.events.StreamStoppedEvent;
import org.bigbluebutton.main.model.users.events.UserAddedToPresenterGroupEvent; import org.bigbluebutton.main.model.users.events.UserAddedToPresenterGroupEvent;
import org.bigbluebutton.main.model.users.events.UserRemovedFromPresenterGroupEvent; import org.bigbluebutton.main.model.users.events.UserRemovedFromPresenterGroupEvent;
import org.bigbluebutton.main.views.GuestSettingsWindow;
import org.bigbluebutton.main.views.MainCanvas; import org.bigbluebutton.main.views.MainCanvas;
import org.bigbluebutton.main.views.WellPositionedMenu; import org.bigbluebutton.main.views.WellPositionedMenu;
import org.bigbluebutton.modules.users.events.MeetingMutedEvent; import org.bigbluebutton.modules.users.events.MeetingMutedEvent;
@ -414,6 +415,9 @@ $Id: $
paramsMenuData.push({label: ResourceUtil.getInstance().getString('bbb.users.settings.sendBreakoutRoomsInvitations'), handler: sendBreakoutRoomsInvitations}); paramsMenuData.push({label: ResourceUtil.getInstance().getString('bbb.users.settings.sendBreakoutRoomsInvitations'), handler: sendBreakoutRoomsInvitations});
} }
} }
if (partOptions.enableGuestUI) {
paramsMenuData.push({label: ResourceUtil.getInstance().getString('bbb.users.settings.guestSettings'), handler: guestSettings});
}
// make sure the previous menu is closed before opening a new one // make sure the previous menu is closed before opening a new one
// This could be improved to include a flag that tells if the menu is open, // This could be improved to include a flag that tells if the menu is open,
@ -449,6 +453,10 @@ $Id: $
dispatcher.dispatchEvent(event); dispatcher.dispatchEvent(event);
} }
private function guestSettings():void {
PopUpUtil.createModalPopUp(this.parent, GuestSettingsWindow, true) as GuestSettingsWindow;
}
private function sendBreakoutRoomsInvitations():void { private function sendBreakoutRoomsInvitations():void {
var event:BreakoutRoomEvent = new BreakoutRoomEvent(BreakoutRoomEvent.OPEN_BREAKOUT_ROOMS_PANEL); var event:BreakoutRoomEvent = new BreakoutRoomEvent(BreakoutRoomEvent.OPEN_BREAKOUT_ROOMS_PANEL);
event.joinMode = "invite"; event.joinMode = "invite";