master #1

Merged
lino.jorzick merged 203 commits from External/greenlight:master into master 2021-10-02 18:19:43 +00:00
6 changed files with 61 additions and 10 deletions
Showing only changes of commit 0f90c4e873 - Show all commits

View File

@ -108,6 +108,16 @@ module BbbServer
bbb_server.send_api_request("updateRecordings", meta) bbb_server.send_api_request("updateRecordings", meta)
end end
# Update a recording from a room
def publish_recording(record_id)
bbb_server.publish_recordings(record_id, true)
end
# Update a recording from a room
def unpublish_recording(record_id)
bbb_server.publish_recordings(record_id, false)
end
# Deletes a recording from a room. # Deletes a recording from a room.
def delete_recording(record_id) def delete_recording(record_id)
bbb_server.delete_recordings(record_id) bbb_server.delete_recordings(record_id)

View File

@ -28,6 +28,12 @@ class RecordingsController < ApplicationController
"meta_#{META_LISTED}" => (params[:state] == "public"), "meta_#{META_LISTED}" => (params[:state] == "public"),
} }
if params[:state] == "inaccessible"
unpublish_recording(params[:record_id])
else
publish_recording(params[:record_id])
end
res = update_recording(params[:record_id], meta) res = update_recording(params[:record_id], meta)
# Redirects to the page that made the initial request # Redirects to the page that made the initial request

View File

@ -42,6 +42,8 @@
<div class="dropdown"> <div class="dropdown">
<% if recording[:metadata][:"gl-listed"] == "true" %> <% if recording[:metadata][:"gl-listed"] == "true" %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-globe px-2"></i> <%= t("recording.visibility.public") %></button> <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-globe px-2"></i> <%= t("recording.visibility.public") %></button>
<% elsif recording[:state] == "unpublished" %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-lock px-2"></i> <%= t("recording.visibility.inaccessible") %></button>
<% else %> <% else %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-link px-2"></i> <%= t("recording.visibility.unlisted") %></button> <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-link px-2"></i> <%= t("recording.visibility.unlisted") %></button>
<% end %> <% end %>
@ -52,13 +54,18 @@
<%= button_to update_recording_path(meetingID: recording[:meetingID], record_id: recording[:recordID], state: "unlisted"), class: "dropdown-item", "data-disable": "" do %> <%= button_to update_recording_path(meetingID: recording[:meetingID], record_id: recording[:recordID], state: "unlisted"), class: "dropdown-item", "data-disable": "" do %>
<i class="dropdown-icon fas fa-link"></i> <%= t("recording.visibility.unlisted") %> <i class="dropdown-icon fas fa-link"></i> <%= t("recording.visibility.unlisted") %>
<% end %> <% end %>
<%= button_to update_recording_path(meetingID: recording[:meetingID], record_id: recording[:recordID], state: "inaccessible"), class: "dropdown-item", "data-disable": "" do %>
<i class="dropdown-icon fas fa-lock"></i> <%= t("recording.visibility.inaccessible") %>
<% end %>
</div> </div>
</div> </div>
</td> </td>
<td> <td>
<% sorted_formats = recording[:playbacks].sort_by! { |p| p[:type] } %> <% unless recording[:state] == "unpublished" %>
<% sorted_formats.each do |p| %> <% sorted_formats = recording[:playbacks].sort_by! { |p| p[:type] } %>
<%= link_to t("recording.format.#{p[:type]}"), p[:url], class: "btn btn-sm btn-primary", target: "_blank" %> <% sorted_formats.each do |p| %>
<%= link_to t("recording.format.#{p[:type]}"), p[:url], class: "btn btn-sm btn-primary", target: "_blank" %>
<% end %>
<% end %> <% end %>
</td> </td>
<td class="text-center"> <td class="text-center">

View File

@ -32,10 +32,12 @@
</td> </td>
<% if recording_thumbnails? %> <% if recording_thumbnails? %>
<td class="overflow-hidden"> <td class="overflow-hidden">
<% p = recording[:playbacks].find do |p| p.key?(:preview) end %> <% if recording[:state] != "unpublished" %>
<% if p %> <% p = recording[:playbacks].find do |p| p.key?(:preview) end %>
<% safe_recording_images(p[:preview][:images][:image]).each do |img| %> <% if p %>
<%= image_tag(img[:content].strip, class: "thumbnail px-2") %> <% safe_recording_images(p[:preview][:images][:image]).each do |img| %>
<%= image_tag(img[:content].strip, class: "thumbnail px-2") %>
<% end %>
<% end %> <% end %>
<% end %> <% end %>
</td> </td>
@ -50,6 +52,8 @@
<div class="dropdown"> <div class="dropdown">
<% if recording[:metadata][:"gl-listed"] == "true" %> <% if recording[:metadata][:"gl-listed"] == "true" %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-globe px-2"></i> <%= t("recording.visibility.public") %></button> <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-globe px-2"></i> <%= t("recording.visibility.public") %></button>
<% elsif recording[:state] == "unpublished" %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-lock px-2"></i> <%= t("recording.visibility.inaccessible") %></button>
<% else %> <% else %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-link px-2"></i> <%= t("recording.visibility.unlisted") %></button> <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-link px-2"></i> <%= t("recording.visibility.unlisted") %></button>
<% end %> <% end %>
@ -60,13 +64,18 @@
<%= button_to update_recording_path(meetingID: recording[:meetingID], record_id: recording[:recordID], state: "unlisted"), class: "dropdown-item", "data-disable": "" do %> <%= button_to update_recording_path(meetingID: recording[:meetingID], record_id: recording[:recordID], state: "unlisted"), class: "dropdown-item", "data-disable": "" do %>
<i class="dropdown-icon fas fa-link"></i> <%= t("recording.visibility.unlisted") %> <i class="dropdown-icon fas fa-link"></i> <%= t("recording.visibility.unlisted") %>
<% end %> <% end %>
<%= button_to update_recording_path(meetingID: recording[:meetingID], record_id: recording[:recordID], state: "inaccessible"), class: "dropdown-item", "data-disable": "" do %>
<i class="dropdown-icon fas fa-lock"></i> <%= t("recording.visibility.inaccessible") %>
<% end %>
</div> </div>
</div> </div>
</td> </td>
<td> <td>
<% sorted_formats = recording[:playbacks].sort_by! { |p| p[:type] } %> <% unless recording[:state] == "unpublished" %>
<% sorted_formats.each do |p| %> <% sorted_formats = recording[:playbacks].sort_by! { |p| p[:type] } %>
<%= link_to t("recording.format.#{p[:type]}"), p[:url], class: "btn btn-sm btn-primary", target: "_blank" %> <% sorted_formats.each do |p| %>
<%= link_to t("recording.format.#{p[:type]}"), p[:url], class: "btn btn-sm btn-primary", target: "_blank" %>
<% end %>
<% end %> <% end %>
</td> </td>
<td class="text-center"> <td class="text-center">

View File

@ -510,6 +510,7 @@ en:
visibility: Visibility visibility: Visibility
formats: Formats formats: Formats
visibility: visibility:
inaccessible: Inaccessible
public: Public public: Public
unlisted: Unlisted unlisted: Unlisted
format: format:

View File

@ -82,6 +82,24 @@ describe BbbServer do
end end
context "#recordings" do context "#recordings" do
it "publishes a recording" do
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:publish_recordings).and_return(
returncode: true, published: true
)
expect(publish_recording(Faker::IDNumber.valid))
.to contain_exactly([:returncode, true], [:published, true])
end
it "unpublishes a recording" do
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:publish_recordings).and_return(
returncode: true, published: false
)
expect(unpublish_recording(Faker::IDNumber.valid))
.to contain_exactly([:returncode, true], [:published, false])
end
it "deletes the recording" do it "deletes the recording" do
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:delete_recordings).and_return( allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:delete_recordings).and_return(
returncode: true, deleted: true returncode: true, deleted: true