diff --git a/app/assets/javascripts/landing.js b/app/assets/javascripts/landing.js index eb38db9d..1444c839 100644 --- a/app/assets/javascripts/landing.js +++ b/app/assets/javascripts/landing.js @@ -134,19 +134,6 @@ } }); - $('.center-panel-wrapper').on('keyup', '.meeting-name', function (event, msg) { - var newId = $(this).val(); - Meeting.getInstance().setMeetingId(newId); - $(".page-wrapper.meetings").data('id', newId); - $('.meeting-url').val(Meeting.getInstance().getURL()); - $('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId)); - if (newId === '') { - $('.invite-join-wrapper').addClass('hidden'); - } else { - $('.invite-join-wrapper').removeClass('hidden'); - } - }); - // enable tooltips var options = { selector: '.has-tooltip', @@ -172,6 +159,19 @@ var initIndex = function() { + $('.center-panel-wrapper').on('keyup', '.meeting-name', function (event, msg) { + var newId = $(this).val(); + Meeting.getInstance().setMeetingId(newId); + $(".page-wrapper.meetings").data('id', newId); + $('.meeting-url').val(Meeting.getInstance().getURL()); + $('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId)); + if (newId === '') { + $('.invite-join-wrapper').addClass('hidden'); + } else { + $('.invite-join-wrapper').removeClass('hidden'); + } + }); + $('ul.previously-joined').empty(); var joinedMeetings = localStorage.getItem('joinedMeetings'); if (joinedMeetings && joinedMeetings.length > 0) { @@ -191,6 +191,15 @@ var initRooms = function() { displayRoomURL(); + $('.center-panel-wrapper').on('keyup', '.meeting-name', function (event, msg) { + var newName = $(this).val(); + // Meeting.getInstance().setMeetingId(newId); + Meeting.getInstance().setMeetingName(newName); + // $(".page-wrapper.meetings").data('id', newId); + // $('.meeting-url').val(Meeting.getInstance().getURL()); + // $('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId)); + }); + Recordings.getInstance().refresh(); Recordings.getInstance().setupActionHandlers(); }; diff --git a/app/assets/javascripts/meeting.coffee b/app/assets/javascripts/meeting.coffee index b0a6e193..45b03ef4 100644 --- a/app/assets/javascripts/meeting.coffee +++ b/app/assets/javascripts/meeting.coffee @@ -19,7 +19,7 @@ _meetingInstance = null class @Meeting - constructor: (@meetingId, @type, @userName) -> + constructor: (@meetingId, @type, @userName, @meetingName) -> # Gets the current instance or creates a new one @getInstance: -> @@ -35,8 +35,12 @@ class @Meeting @clear: -> _meetingInstance = null - @buildMeetingURL: (id, type) -> - return @buildFullDomainURL() + '/' + type + '/' + encodeURIComponent(id) + @buildMeetingURL: (id, type, name) -> + if name + name = '/' + encodeURIComponent(name) + else + name = '' + return @buildFullDomainURL() + '/' + type + '/' + encodeURIComponent(id) + name @buildFullDomainURL: -> url = location.protocol + '//' + location.hostname @@ -80,6 +84,10 @@ class @Meeting @meetingId = id return this + setMeetingName: (name) -> + @meetingName = name + return this + getType: -> return @type @@ -88,7 +96,7 @@ class @Meeting return this getURL: -> - return Meeting.buildMeetingURL(@meetingId, @type) + return Meeting.buildMeetingURL(@meetingId, @type, @meetingName) getUserName: -> return @userName diff --git a/app/controllers/bbb_controller.rb b/app/controllers/bbb_controller.rb index 4c55f241..ab0b2d65 100644 --- a/app/controllers/bbb_controller.rb +++ b/app/controllers/bbb_controller.rb @@ -26,15 +26,34 @@ class BbbController < ApplicationController # GET /:resource/:id/join def join if params[:name].blank? - render_bbb_response("missing_parameter", "user name was not included", :unprocessable_entity) + return render_bbb_response( + messageKey: "missing_parameter", + message: "user name was not included", + status: :unprocessable_entity + ) else - user = User.find_by encrypted_id: params[:id] + if params[:room_id] + user = User.find_by encrypted_id: params[:room_id] + if !user + return render_bbb_response( + messageKey: "not_found", + message: "User Not Found", + status: :not_found + ) + end + + meeting_id = params[:room_id] + meeting_name = params[:id] + else + meeting_id = params[:id] + user = User.find_by encrypted_id: params[:id] + end options = if user { wait_for_moderator: true, meeting_recorded: true, - meeting_name: user.name, + meeting_name: meeting_name, user_is_moderator: current_user == user } else @@ -42,23 +61,24 @@ class BbbController < ApplicationController user_is_moderator: true } end - base_url = "#{request.base_url}/#{params[:resource]}/#{params[:id]}" + + base_url = "#{request.base_url}/#{params[:resource]}/#{meeting_id}" options[:meeting_logout_url] = base_url options[:hook_url] = "#{base_url}/callback" bbb_res = bbb_join_url( - params[:id], + meeting_id, params[:name], options ) # the user can join the meeting if bbb_res[:returncode] && current_user && current_user == user - JoinMeetingJob.perform_later(params[:id]) + JoinMeetingJob.perform_later(meeting_id) # user will be waiting for a moderator else - NotifyUserWaitingJob.perform_later(params[:id], params[:name]) + NotifyUserWaitingJob.perform_later(meeting_id, params[:name]) end render_bbb_response bbb_res, bbb_res[:response] diff --git a/app/views/landing/_rooms_center_panel.html.erb b/app/views/landing/_rooms_center_panel.html.erb index 47fa3252..5321a4f4 100644 --- a/app/views/landing/_rooms_center_panel.html.erb +++ b/app/views/landing/_rooms_center_panel.html.erb @@ -30,10 +30,23 @@ with BigBlueButton; if not, see . <%= render layout: 'shared/center_panel' do %>
<% if admin? %> - <%= render 'shared/meeting_url', hidden: false %> + <%= render 'shared/meeting_name_form' %> +
+
+ <%= render 'shared/title', title: t('invite') do %> + <%= t('invite_description') %> + <% end %> + <%= render 'shared/meeting_url', hidden: false %> +
+
+
+ <%= render 'shared/title', title: t('join'), title_class: 'join-meeting-title' %> + <%= render 'shared/join_form' %> +
+
<% else %> <%= render 'shared/meeting_url', hidden: true %> + <%= render 'shared/join_form' %> <% end %> - <%= render 'shared/join_form' %>
<% end %> diff --git a/config/routes.rb b/config/routes.rb index 83d238c0..056ba8ab 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -34,6 +34,7 @@ Rails.application.routes.draw do get '/:resource/:id/session_status_refresh', to: 'landing#session_status_refresh' post '/:resource/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'} delete '/rooms/:id/end', to: 'bbb#end', defaults: {format: 'json'} + get '/:resource/:room_id/:id/join', to: 'bbb#join', defaults: {format: 'json'} get '/rooms/:id/recordings', to: 'bbb#recordings', defaults: {format: 'json'} patch '/rooms/:id/recordings/:record_id', to: 'bbb#update_recordings', defaults: {format: 'json'} delete '/rooms/:id/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {format: 'json'}