forked from External/greenlight
commit
0ce2a226a7
|
@ -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
|
// enable tooltips
|
||||||
var options = {
|
var options = {
|
||||||
selector: '.has-tooltip',
|
selector: '.has-tooltip',
|
||||||
|
@ -172,6 +159,19 @@
|
||||||
|
|
||||||
var initIndex = function() {
|
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();
|
$('ul.previously-joined').empty();
|
||||||
var joinedMeetings = localStorage.getItem('joinedMeetings');
|
var joinedMeetings = localStorage.getItem('joinedMeetings');
|
||||||
if (joinedMeetings && joinedMeetings.length > 0) {
|
if (joinedMeetings && joinedMeetings.length > 0) {
|
||||||
|
@ -191,6 +191,15 @@
|
||||||
var initRooms = function() {
|
var initRooms = function() {
|
||||||
displayRoomURL();
|
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().refresh();
|
||||||
Recordings.getInstance().setupActionHandlers();
|
Recordings.getInstance().setupActionHandlers();
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
_meetingInstance = null
|
_meetingInstance = null
|
||||||
|
|
||||||
class @Meeting
|
class @Meeting
|
||||||
constructor: (@meetingId, @type, @userName) ->
|
constructor: (@meetingId, @type, @userName, @meetingName) ->
|
||||||
|
|
||||||
# Gets the current instance or creates a new one
|
# Gets the current instance or creates a new one
|
||||||
@getInstance: ->
|
@getInstance: ->
|
||||||
|
@ -35,8 +35,12 @@ class @Meeting
|
||||||
@clear: ->
|
@clear: ->
|
||||||
_meetingInstance = null
|
_meetingInstance = null
|
||||||
|
|
||||||
@buildMeetingURL: (id, type) ->
|
@buildMeetingURL: (id, type, name) ->
|
||||||
return @buildFullDomainURL() + '/' + type + '/' + encodeURIComponent(id)
|
if name
|
||||||
|
name = '/' + encodeURIComponent(name)
|
||||||
|
else
|
||||||
|
name = ''
|
||||||
|
return @buildFullDomainURL() + '/' + type + '/' + encodeURIComponent(id) + name
|
||||||
|
|
||||||
@buildFullDomainURL: ->
|
@buildFullDomainURL: ->
|
||||||
url = location.protocol + '//' + location.hostname
|
url = location.protocol + '//' + location.hostname
|
||||||
|
@ -80,6 +84,10 @@ class @Meeting
|
||||||
@meetingId = id
|
@meetingId = id
|
||||||
return this
|
return this
|
||||||
|
|
||||||
|
setMeetingName: (name) ->
|
||||||
|
@meetingName = name
|
||||||
|
return this
|
||||||
|
|
||||||
getType: ->
|
getType: ->
|
||||||
return @type
|
return @type
|
||||||
|
|
||||||
|
@ -88,7 +96,7 @@ class @Meeting
|
||||||
return this
|
return this
|
||||||
|
|
||||||
getURL: ->
|
getURL: ->
|
||||||
return Meeting.buildMeetingURL(@meetingId, @type)
|
return Meeting.buildMeetingURL(@meetingId, @type, @meetingName)
|
||||||
|
|
||||||
getUserName: ->
|
getUserName: ->
|
||||||
return @userName
|
return @userName
|
||||||
|
|
|
@ -26,15 +26,34 @@ class BbbController < ApplicationController
|
||||||
# GET /:resource/:id/join
|
# GET /:resource/:id/join
|
||||||
def join
|
def join
|
||||||
if params[:name].blank?
|
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
|
else
|
||||||
|
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]
|
user = User.find_by encrypted_id: params[:id]
|
||||||
|
end
|
||||||
|
|
||||||
options = if user
|
options = if user
|
||||||
{
|
{
|
||||||
wait_for_moderator: true,
|
wait_for_moderator: true,
|
||||||
meeting_recorded: true,
|
meeting_recorded: true,
|
||||||
meeting_name: user.name,
|
meeting_name: meeting_name,
|
||||||
user_is_moderator: current_user == user
|
user_is_moderator: current_user == user
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -42,23 +61,24 @@ class BbbController < ApplicationController
|
||||||
user_is_moderator: true
|
user_is_moderator: true
|
||||||
}
|
}
|
||||||
end
|
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[:meeting_logout_url] = base_url
|
||||||
options[:hook_url] = "#{base_url}/callback"
|
options[:hook_url] = "#{base_url}/callback"
|
||||||
|
|
||||||
bbb_res = bbb_join_url(
|
bbb_res = bbb_join_url(
|
||||||
params[:id],
|
meeting_id,
|
||||||
params[:name],
|
params[:name],
|
||||||
options
|
options
|
||||||
)
|
)
|
||||||
|
|
||||||
# the user can join the meeting
|
# the user can join the meeting
|
||||||
if bbb_res[:returncode] && current_user && current_user == user
|
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
|
# user will be waiting for a moderator
|
||||||
else
|
else
|
||||||
NotifyUserWaitingJob.perform_later(params[:id], params[:name])
|
NotifyUserWaitingJob.perform_later(meeting_id, params[:name])
|
||||||
end
|
end
|
||||||
|
|
||||||
render_bbb_response bbb_res, bbb_res[:response]
|
render_bbb_response bbb_res, bbb_res[:response]
|
||||||
|
|
|
@ -30,10 +30,23 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
<%= render layout: 'shared/center_panel' do %>
|
<%= render layout: 'shared/center_panel' do %>
|
||||||
<div class="center-block center-panel-content-size col-xs-12">
|
<div class="center-block center-panel-content-size col-xs-12">
|
||||||
<% if admin? %>
|
<% if admin? %>
|
||||||
<%= render 'shared/meeting_url', hidden: false %>
|
<%= render 'shared/meeting_name_form' %>
|
||||||
<% else %>
|
<div class="invite-join-wrapper">
|
||||||
<%= render 'shared/meeting_url', hidden: true %>
|
<div class="col-xs-6">
|
||||||
|
<%= render 'shared/title', title: t('invite') do %>
|
||||||
|
<span><%= t('invite_description') %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= render 'shared/meeting_url', hidden: false %>
|
||||||
|
</div>
|
||||||
|
<div class="verticle-line"></div>
|
||||||
|
<div class="col-xs-6">
|
||||||
|
<%= render 'shared/title', title: t('join'), title_class: 'join-meeting-title' %>
|
||||||
<%= render 'shared/join_form' %>
|
<%= render 'shared/join_form' %>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<% else %>
|
||||||
|
<%= render 'shared/meeting_url', hidden: true %>
|
||||||
|
<%= render 'shared/join_form' %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -34,6 +34,7 @@ Rails.application.routes.draw do
|
||||||
get '/:resource/:id/session_status_refresh', to: 'landing#session_status_refresh'
|
get '/:resource/:id/session_status_refresh', to: 'landing#session_status_refresh'
|
||||||
post '/:resource/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'}
|
post '/:resource/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'}
|
||||||
delete '/rooms/:id/end', to: 'bbb#end', 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'}
|
get '/rooms/:id/recordings', to: 'bbb#recordings', defaults: {format: 'json'}
|
||||||
patch '/rooms/:id/recordings/:record_id', to: 'bbb#update_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'}
|
delete '/rooms/:id/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {format: 'json'}
|
||||||
|
|
Loading…
Reference in New Issue