diff --git a/.travis.yml b/.travis.yml index 75fcb60e67df034ff606da90e18d145994fba99d..12a35f6bf6bfcdd646c520ddae4dad3d1d90b545 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ env: - BBB_SERVER_URL=http://localhost/bigbluebutton/api script: - - bash ./build_script.sh + - travis_wait bash ./build_script.sh after_script: - docker stop $docker diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx index b93c8ec8c378f29419c62fabd885096ffb590e31..176c59251e84856595577eda03fae70906d7c6fc 100755 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/actions-dropdown/component.jsx @@ -109,7 +109,6 @@ class ActionsDropdown extends Component { togglePollMenu, meetingIsBreakout, hasBreakoutRoom, - meetingName, } = this.props; return _.compact([ @@ -142,7 +141,7 @@ class ActionsDropdown extends Component { onClick={toggleRecording} /> : null), - (isUserPresenter && !meetingIsBreakout && !hasBreakoutRoom ? + (isUserModerator && !meetingIsBreakout && !hasBreakoutRoom ? <DropdownListItem icon="rooms" label={intl.formatMessage(intlMessages.createBreakoutRoom)} diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx index 4c6678e06846ef8a2b59fc64bb3bb8bb7b190186..d47f1fbc211ee9c00080d8549d24ce167b940124 100644 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/create-breakout-room/component.jsx @@ -36,9 +36,8 @@ const intlMessages = defineMessages({ description: 'room intl to name the breakout meetings', }, }); -const BREAKOUT_CONFIG = Meteor.settings.public.breakout; -const MIN_BREAKOUT_ROOMS = BREAKOUT_CONFIG.rooms.min; -const MAX_BREAKOUT_ROOMS = BREAKOUT_CONFIG.rooms.max; +const MIN_BREAKOUT_ROOMS = 2; +const MAX_BREAKOUT_ROOMS = 8; class BreakoutRoom extends Component { constructor(props) { @@ -60,7 +59,7 @@ class BreakoutRoom extends Component { const { createBreakoutRoom, meetingName, - intl + intl, } = this.props; const { numberOfRooms, durationTime } = this.state; @@ -113,7 +112,12 @@ class BreakoutRoom extends Component { <div className={styles.breakoutSettings}> <label> <p className={styles.labelText}>{intl.formatMessage(intlMessages.numberOfRooms)}</p> - <select name="numberOfRooms" className={styles.inputRooms} value={this.state.numberOfRooms} onChange={this.changeNumberOfRooms}> + <select + name="numberOfRooms" + className={styles.inputRooms} + value={this.state.numberOfRooms} + onChange={this.changeNumberOfRooms} + > { _.range(MIN_BREAKOUT_ROOMS, MAX_BREAKOUT_ROOMS + 1).map(item => (<option key={_.uniqueId('value-')}>{item}</option>)) } @@ -122,7 +126,13 @@ class BreakoutRoom extends Component { <label > <p className={styles.labelText}>{intl.formatMessage(intlMessages.duration)}</p> <div className={styles.durationArea}> - <input type="number" className={styles.duration} min={MIN_BREAKOUT_ROOMS} value={this.state.durationTime} onChange={this.changeDurationTime} /> + <input + type="number" + className={styles.duration} + min={MIN_BREAKOUT_ROOMS} + value={this.state.durationTime} + onChange={this.changeDurationTime} + /> <span> <HoldButton key="decrease-breakout-time" diff --git a/bigbluebutton-html5/imports/ui/components/app/component.jsx b/bigbluebutton-html5/imports/ui/components/app/component.jsx index c9debb7b04953bcb35f39e07a1e4d03e46fcbbbc..865c0278339cdf30936bc7ab442068cf668c3b89 100755 --- a/bigbluebutton-html5/imports/ui/components/app/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/app/component.jsx @@ -6,8 +6,8 @@ import Modal from 'react-modal'; import cx from 'classnames'; import Resizable from 're-resizable'; import browser from 'browser-detect'; +import BreakoutRoomContainer from '/imports/ui/components/breakout-room/container'; import PollingContainer from '/imports/ui/components/polling/container'; -import BreakoutRoomContainer from '/imports/ui/components/Breakout-room/container'; import ToastContainer from '../toast/container'; import ModalContainer from '../modal/container'; import NotificationsBarContainer from '../notifications-bar/container'; diff --git a/bigbluebutton-html5/imports/ui/components/Breakout-room/breakout-remaining-time/component.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/breakout-remaining-time/component.jsx similarity index 100% rename from bigbluebutton-html5/imports/ui/components/Breakout-room/breakout-remaining-time/component.jsx rename to bigbluebutton-html5/imports/ui/components/breakout-room/breakout-remaining-time/component.jsx diff --git a/bigbluebutton-html5/imports/ui/components/Breakout-room/breakout-remaining-time/container.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/breakout-remaining-time/container.jsx similarity index 100% rename from bigbluebutton-html5/imports/ui/components/Breakout-room/breakout-remaining-time/container.jsx rename to bigbluebutton-html5/imports/ui/components/breakout-room/breakout-remaining-time/container.jsx diff --git a/bigbluebutton-html5/imports/ui/components/Breakout-room/component.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx similarity index 96% rename from bigbluebutton-html5/imports/ui/components/Breakout-room/component.jsx rename to bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx index bec70d1a661906939b80885064678033107ddd54..0d580c41156efc9c4861af7aac207415949f8bf0 100644 --- a/bigbluebutton-html5/imports/ui/components/Breakout-room/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/breakout-room/component.jsx @@ -92,8 +92,8 @@ class BreakoutRoom extends Component { } transferUserToBreakoutRoom(breakoutId) { - const { transferToBreakout, meetingId } = this.props; - transferToBreakout(meetingId, breakoutId); + const { transferToBreakout } = this.props; + transferToBreakout(breakoutId); this.setState({ joinedAudioOnly: true, breakoutId }); } returnBackToMeeeting(breakoutId) { @@ -105,7 +105,7 @@ class BreakoutRoom extends Component { renderUserActions(breakoutId) { const { isMicrophoneUser, - isPresenter, + isModerator, intl, } = this.props; @@ -117,7 +117,7 @@ class BreakoutRoom extends Component { waiting, } = this.state; - const presenterJoinedAudio = isMicrophoneUser && isPresenter; + const moderatorJoinedAudio = isMicrophoneUser && isModerator; const disable = waiting && requestedBreakoutId !== breakoutId; const audioAction = joinedAudioOnly ? () => this.returnBackToMeeeting(breakoutId) : @@ -133,13 +133,13 @@ class BreakoutRoom extends Component { className={styles.joinButton} /> { - presenterJoinedAudio ? + moderatorJoinedAudio ? [ ('|'), ( <Button label={ - presenterJoinedAudio && + moderatorJoinedAudio && stateBreakoutId === breakoutId && joinedAudioOnly ? diff --git a/bigbluebutton-html5/imports/ui/components/Breakout-room/container.jsx b/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx similarity index 97% rename from bigbluebutton-html5/imports/ui/components/Breakout-room/container.jsx rename to bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx index 7473df4d0d32d9f019a3be30d4ffa39cc6b7f61e..11eef08d0026a0e1740b3a55a52ee487fde2731d 100644 --- a/bigbluebutton-html5/imports/ui/components/Breakout-room/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/breakout-room/container.jsx @@ -21,7 +21,6 @@ export default withTracker((props) => { closeBreakoutPanel, } = Service; const breakoutRooms = findBreakouts(); - const isMicrophoneUser = AudioService.isConnected() && !AudioService.isListenOnly(); return { @@ -33,7 +32,7 @@ export default withTracker((props) => { transferUserToMeeting, transferToBreakout, isMicrophoneUser, - meetingId, + meetingId: meetingId(), isPresenter: isPresenter(), isModerator: isModerator(), closeBreakoutPanel, diff --git a/bigbluebutton-html5/imports/ui/components/Breakout-room/service.js b/bigbluebutton-html5/imports/ui/components/breakout-room/service.js similarity index 93% rename from bigbluebutton-html5/imports/ui/components/Breakout-room/service.js rename to bigbluebutton-html5/imports/ui/components/breakout-room/service.js index 18d4f432095aa5a7046c4f08c2323574e94a40e9..9158ea9d373006c61e678152d7f8264f6d502198 100644 --- a/bigbluebutton-html5/imports/ui/components/Breakout-room/service.js +++ b/bigbluebutton-html5/imports/ui/components/breakout-room/service.js @@ -38,7 +38,7 @@ const requestJoinURL = (breakoutId) => { const transferUserToMeeting = (fromMeetingId, toMeetingId) => makeCall('transferUser', fromMeetingId, toMeetingId); -const transferToBreakout = (fromMeetingId, breakoutId) => { +const transferToBreakout = (breakoutId) => { const breakoutRooms = findBreakouts(); const breakoutRoom = breakoutRooms.filter(breakout => breakout.breakoutId === breakoutId).shift(); const breakoutMeeting = Meetings.findOne({ @@ -48,7 +48,7 @@ const transferToBreakout = (fromMeetingId, breakoutId) => { { 'meetingProp.isBreakout': true }, ], }); - transferUserToMeeting(fromMeetingId, breakoutMeeting.meetingId); + transferUserToMeeting(Auth.meetingID, breakoutMeeting.meetingId); }; const isPresenter = () => { @@ -63,6 +63,7 @@ const isModerator = () => { return mappedUser.isModerator; }; + const closeBreakoutPanel = () => Session.set('breakoutRoomIsOpen', false); export default { @@ -72,7 +73,7 @@ export default { breakoutRoomUser, transferUserToMeeting, transferToBreakout, - meetingId: Auth.meetingID, + meetingId: () => Auth.meetingID, isPresenter, closeBreakoutPanel, isModerator, diff --git a/bigbluebutton-html5/imports/ui/components/Breakout-room/styles.scss b/bigbluebutton-html5/imports/ui/components/breakout-room/styles.scss similarity index 100% rename from bigbluebutton-html5/imports/ui/components/Breakout-room/styles.scss rename to bigbluebutton-html5/imports/ui/components/breakout-room/styles.scss diff --git a/bigbluebutton-html5/imports/ui/components/meeting-ended/component.jsx b/bigbluebutton-html5/imports/ui/components/meeting-ended/component.jsx index 1bf42a86cb06be8ac7ee6b17e2d1313aeb723f9a..7ab4b952328325d1a92ec4649778395156f9af32 100755 --- a/bigbluebutton-html5/imports/ui/components/meeting-ended/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/meeting-ended/component.jsx @@ -23,6 +23,10 @@ const intlMessage = defineMessages({ id: 'app.error.meeting.ended', description: 'user logged conference', }, + 'acl-not-allowed': { + id: 'app.error.removed', + description: 'Message to display when user is removed from the conference', + }, messageEnded: { id: 'app.meeting.endedMessage', description: 'message saying to go back to home screen', diff --git a/bigbluebutton-html5/private/config/settings.yml b/bigbluebutton-html5/private/config/settings.yml index 91d0a536c1f7594bb2dfe3da13a67c5b62a4b485..006e607b622227623234808f5f7d9e17dda6fbea 100644 --- a/bigbluebutton-html5/private/config/settings.yml +++ b/bigbluebutton-html5/private/config/settings.yml @@ -99,10 +99,6 @@ public: enableVideoStats: false enableListenOnly: false autoShareWebcam: false - breakout: - rooms: - min: 2 - max: 8 poll: max_custom: 5 chat: