diff --git a/app/assets/javascripts/room.js b/app/assets/javascripts/room.js
index 8137d0c6..8bd14f34 100644
--- a/app/assets/javascripts/room.js
+++ b/app/assets/javascripts/room.js
@@ -138,11 +138,11 @@ function showCreateRoom(target) {
$("#room_access_code").val(null)
$("#createRoomModal form").attr("action", $("body").data('relative-root'))
-
$("#room_mute_on_join").prop("checked", $("#room_mute_on_join").data("default"))
$("#room_require_moderator_approval").prop("checked", $("#room_require_moderator_approval").data("default"))
$("#room_anyone_can_start").prop("checked", $("#room_anyone_can_start").data("default"))
$("#room_all_join_moderator").prop("checked", $("#room_all_join_moderator").data("default"))
+ $("#room_recording").prop("checked", $("#room_recording").data("default"))
//show all elements & their children with a create-only class
$(".create-only").each(function() {
@@ -155,6 +155,9 @@ function showCreateRoom(target) {
$(this).attr('style',"display:none !important")
if($(this).children().length > 0) { $(this).children().attr('style',"display:none !important") }
})
+
+ runningSessionWarningVisibilty(false)
+
}
function showUpdateRoom(target) {
@@ -187,6 +190,9 @@ function showUpdateRoom(target) {
$("#create-room-access-code").text(getLocalizedString("modal.create_room.access_code_placeholder"))
$("#room_access_code").val(null)
}
+
+ runningSessionWarningVisibilty(false)
+
}
function showDeleteRoom(target) {
@@ -197,12 +203,15 @@ function showDeleteRoom(target) {
//Update the createRoomModal to show the correct current settings
function updateCurrentSettings(settings_path){
// Get current room settings and set checkbox
- $.get(settings_path, function(room_settings) {
- var settings = JSON.parse(room_settings)
+ $.get(settings_path, function(settings) {
$("#room_mute_on_join").prop("checked", $("#room_mute_on_join").data("default") || settings.muteOnStart)
$("#room_require_moderator_approval").prop("checked", $("#room_require_moderator_approval").data("default") || settings.requireModeratorApproval)
$("#room_anyone_can_start").prop("checked", $("#room_anyone_can_start").data("default") || settings.anyoneCanStart)
$("#room_all_join_moderator").prop("checked", $("#room_all_join_moderator").data("default") || settings.joinModerator)
+ $("#room_recording").prop("checked", $("#room_recording").data("default") || settings.recording)
+
+ runningSessionWarningVisibilty(settings.running)
+
})
}
@@ -264,3 +273,14 @@ function removeSharedUser(target) {
parentLI.classList.add("remove-shared")
}
}
+
+// Show a "Session Running warning" for each room setting, which cannot be changed during a running session
+function runningSessionWarningVisibilty(isRunning) {
+ if(isRunning) {
+ $(".running-only").show()
+ $(".not-running-only").hide()
+ } else {
+ $(".running-only").hide()
+ $(".not-running-only").show()
+ }
+}
diff --git a/app/controllers/concerns/joiner.rb b/app/controllers/concerns/joiner.rb
index 3295de21..b8d24878 100644
--- a/app/controllers/concerns/joiner.rb
+++ b/app/controllers/concerns/joiner.rb
@@ -87,7 +87,7 @@ module Joiner
{
user_is_moderator: false,
meeting_logout_url: request.base_url + logout_room_path(@room),
- meeting_recorded: true,
+ meeting_recorded: @room.recording?,
moderator_message: "#{invite_msg}\n\n#{request.base_url + room_path(@room)}",
host: request.host,
recording_default_visibility: @settings.get_value("Default Recording Visibility") == "public"
@@ -105,6 +105,8 @@ module Joiner
"Room Configuration All Join Moderator"
when "anyoneCanStart"
"Room Configuration Allow Any Start"
+ when "recording"
+ "Room Configuration Recording"
end
case @settings.get_value(config)
diff --git a/app/controllers/rooms_controller.rb b/app/controllers/rooms_controller.rb
index c9ef6417..13917aa7 100644
--- a/app/controllers/rooms_controller.rb
+++ b/app/controllers/rooms_controller.rb
@@ -171,7 +171,7 @@ class RoomsController < ApplicationController
@room_settings = JSON.parse(@room[:room_settings])
opts[:mute_on_start] = room_setting_with_config("muteOnStart")
opts[:require_moderator_approval] = room_setting_with_config("requireModeratorApproval")
-
+ opts[:record] = room_setting_with_config("recording")
begin
redirect_to join_path(@room, current_user.name, opts, current_user.uid)
rescue BigBlueButton::BigBlueButtonException => e
@@ -261,8 +261,10 @@ class RoomsController < ApplicationController
# GET /:room_uid/room_settings
def room_settings
# Respond with JSON object of the room_settings
+ status = { running: room_running?(@room.bbb_id) }
+ settings = @room.settings_hash
respond_to do |format|
- format.json { render body: @room.room_settings.to_json }
+ format.json { render body: status.merge(settings).to_json }
end
end
@@ -291,6 +293,7 @@ class RoomsController < ApplicationController
"requireModeratorApproval": options[:require_moderator_approval] == "1",
"anyoneCanStart": options[:anyone_can_start] == "1",
"joinModerator": options[:all_join_moderator] == "1",
+ "recording": options[:recording] == "1",
}
room_settings.to_json
@@ -298,7 +301,8 @@ class RoomsController < ApplicationController
def room_params
params.require(:room).permit(:name, :auto_join, :mute_on_join, :access_code,
- :require_moderator_approval, :anyone_can_start, :all_join_moderator)
+ :require_moderator_approval, :anyone_can_start, :all_join_moderator,
+ :recording)
end
# Find the room from the uid.
diff --git a/app/models/room.rb b/app/models/room.rb
index be585763..ab8e6d05 100644
--- a/app/models/room.rb
+++ b/app/models/room.rb
@@ -97,6 +97,14 @@ class Room < ApplicationRecord
table.order(Arel.sql(order_string))
end
+ def settings_hash
+ JSON.parse(room_settings || "{}")
+ end
+
+ def recording?
+ settings_hash["recording"]
+ end
+
private
# Generates a uid for the room and BigBlueButton.
diff --git a/app/models/setting.rb b/app/models/setting.rb
index 38b0a9b4..dd924af4 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -70,6 +70,8 @@ class Setting < ApplicationRecord
room_config_setting("anyone-can-start")
when "Room Configuration All Join Moderator"
room_config_setting("all-join-moderator")
+ when "Room Configuration Recording"
+ room_config_setting("recording")
end
end
diff --git a/app/views/admins/components/_room_settings.html.erb b/app/views/admins/components/_room_settings.html.erb
index 19a00959..d4f8835b 100644
--- a/app/views/admins/components/_room_settings.html.erb
+++ b/app/views/admins/components/_room_settings.html.erb
@@ -98,4 +98,31 @@
-
\ No newline at end of file
+
+
+
+
+
diff --git a/app/views/rooms/components/_room_event.html.erb b/app/views/rooms/components/_room_event.html.erb
index 45adc4da..bba7748c 100644
--- a/app/views/rooms/components/_room_event.html.erb
+++ b/app/views/rooms/components/_room_event.html.erb
@@ -18,6 +18,7 @@
<%= t("room.invited") %>
+ <%= t("room.recording_present") if @room.recording?%>
<%= @room.name %>
diff --git a/app/views/shared/modals/_create_room_modal.html.erb b/app/views/shared/modals/_create_room_modal.html.erb
index 2534d5b8..1244a940 100644
--- a/app/views/shared/modals/_create_room_modal.html.erb
+++ b/app/views/shared/modals/_create_room_modal.html.erb
@@ -69,7 +69,6 @@
<% end %>
-
<% moderator = room_configuration("Room Configuration All Join Moderator") %>
<% if moderator != "disabled" %>
<% end %>
-
+ <% recording = room_configuration("Room Configuration Recording") %>
+ <% if recording != "disabled" %>
+
+ <% end %>