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