diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/BreakoutRoomSettings.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/BreakoutRoomSettings.mxml index 7465c056b4473d8ea055c92feca63a971adc52ff..4124aa814db25d2eea23d90c42d946037196c2bf 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/BreakoutRoomSettings.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/users/views/BreakoutRoomSettings.mxml @@ -46,13 +46,16 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. private var roomsProvider:Array; private var dispatcher:Dispatcher; - + [Bindable] private var mode:String; + private static var assignement : Dictionary; + private function onCloseClicked():void { PopUpManager.removePopUp(this); } + /** * Dispatches a BreakoutRoomEvent to start creating breakout rooms */ @@ -70,7 +73,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. room.name = UserManager.getInstance().getConference().meetingName + " (" + ResourceUtil.getInstance().getString('bbb.users.breakout.room') - + " - " + (i + 1).toString() + ")";; + + " - " + (i + 1).toString() + ")"; for (var j:int = 0; j < users.length; j++) { room.users.push(users[j].userID); } @@ -80,6 +83,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. event.durationInMinutes = durationStepper.value; event.record = recordCheckbox.selected; dispatcher.dispatchEvent(event); + storeAssignement(); PopUpManager.removePopUp(this); } else { Alert.show(ResourceUtil.getInstance().getString('bbb.users.breakout.insufficientUsers')); @@ -149,6 +153,33 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. startButton.enabled = true; } + protected function loadAssignement():void { + var rooms:int = assignement['rooms']; + roomsCombo.selectedIndex = assignement['rooms'] - 2; + recordCheckbox.selected = assignement['record']; + durationStepper.value = assignement['duration']; + var user:BBBUser; + var currentUsers:ArrayCollection = UserManager.getInstance().getConference().users; + // Create breakout rooms boxes + for (var r:int = 1; r <= rooms; r++) { + var list:BreakoutList = roomsContainer.addChild(new BreakoutList()) as BreakoutList; + list.users = new ArrayCollection(); + list.roomName = ResourceUtil.getInstance().getString('bbb.users.breakout.room') + " " + (r).toString(); + } + // Load user assignment from the previous action + var unassignedUsers:ArrayCollection = new ArrayCollection(); + for (var u:int = 0; u < currentUsers.length; u++) { + user = currentUsers.getItemAt(u) as BBBUser; + if (assignement.hasOwnProperty(user.userID)) { + BreakoutList(roomsContainer.getChildAt(assignement[user.userID])).users.addItem(BBBUser.copy(user)); + } else { + unassignedUsers.addItem(BBBUser.copy(user)); + } + } + // Create not assigned users list + createUnassignedList(unassignedUsers); + } + protected function assignUsersForInvitation():void { var originalUsers:ArrayCollection = UserManager.getInstance().getConference().users; var users:ArrayCollection = new ArrayCollection(); @@ -177,12 +208,31 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. unassignedUsers.addItem(user); } } + createUnassignedList(unassignedUsers); + startButton.enabled = true; + } + + private function createUnassignedList(dataProvider:ArrayCollection):void { var unassignedList:BreakoutList = roomsContainer.addChild(new BreakoutList()) as BreakoutList; - unassignedList.users = unassignedUsers; + unassignedList.users = dataProvider; unassignedList.roomName = ResourceUtil.getInstance().getString('bbb.users.breakout.notAssigned'); unassignedList.notAssignedUsers = true; - startButton.enabled = true; } + + private function storeAssignement():void { + assignement = new Dictionary(true); + assignement['rooms'] = roomsCombo.selectedIndex + 2; + assignement['record'] = recordCheckbox.selected; + assignement['duration'] = durationStepper.value; + for (var r:int = 0; r < assignement['rooms']; r++) { + var users:ArrayCollection = BreakoutList(roomsContainer.getChildAt(r)).users; + for (var u:int = 0; u < users.length; u++) { + // We store pairs { userID : roomNumber } to be easier to check later + assignement[BBBUser(users[u]).userID] = r; + } + } + } + public function initCreateBreakoutRooms(mode:String):void { dispatcher = new Dispatcher(); roomsProvider = new Array(); @@ -194,7 +244,11 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. if (this.mode == "create") { startButton.label = ResourceUtil.getInstance().getString('bbb.users.breakout.start'); textArea.text = ResourceUtil.getInstance().getString('bbb.users.breakout.breakoutRooms'); - assignUsersForCreation(); + if (assignement == null) { + assignUsersForCreation(); + } else { + loadAssignement(); + } visible = true; } else { startButton.label = ResourceUtil.getInstance().getString('bbb.users.breakout.invite');