Upstream sync
This commit is contained in:
@@ -1,29 +1,31 @@
|
||||
<% if recordings.present? %>
|
||||
<div class="list-group">
|
||||
<% recordings.each do |recording| %>
|
||||
<div class="list-group-item list-group-item-action">
|
||||
<div class="d-flex align-items-start">
|
||||
<% if policy(BroadcastRecording).update? %>
|
||||
<%= link_to fa_icon("#{recording.starred ? 'star' : 'star-o'} fw"), [broadcast.project, broadcast, recording, :broadcast_recording_starrings], method: :post, class: "text-warning mr-3", remote: true %>
|
||||
<% end %>
|
||||
<%= image_tag(recording.thumbnail_url, class: 'img-thumbnail img-fluid max-w-75', data: { behavior: "play_recording", playback_url: recording.playback_url, id: dom_id(recording) }) %>
|
||||
<div class="ml-auto">
|
||||
<% if policy(BroadcastRecording).edit? %>
|
||||
<%= link_to fa_icon('edit'), [:edit, broadcast.project, broadcast, recording], remote: true %>
|
||||
<% end %>
|
||||
<%= link_to(fa_icon('download'), recording.download_url, target: "_blank") %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex flex-column align-items-start justify-content-start p-4">
|
||||
<h5><%= recording.name %></h5>
|
||||
<p><%= recording.description %></p>
|
||||
</div>
|
||||
<ul class="list-unstyled">
|
||||
<% recordings.each do |recording| %>
|
||||
<li class="media p-3">
|
||||
<% if policy(BroadcastRecording).update? %>
|
||||
<%= link_to fa_icon("#{recording.starred ? 'star' : 'star-o'} fw"), [broadcast.project, broadcast, recording, :broadcast_recording_starrings], method: :post, class: "text-warning mr-2", remote: true %>
|
||||
<% end %>
|
||||
|
||||
<div class="play-thumbnail">
|
||||
<%= image_tag(recording.thumbnail_url, class: 'mr-2', size: "64x64") %>
|
||||
<%= content_tag :div, class: "play-btn", data: { behavior: "play_recording", playback_url: recording.playback_url, id: dom_id(recording) } do %>
|
||||
<%= render "broadcasts/play_button_svg" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div id="recordings_pagination" class="row mt-5 justify-content-center">
|
||||
<%= will_paginate(recordings, params: {controller: "broadcasts", action: "show", project_id: broadcast.project_id, id: broadcast.id, page: params[:page], active_tab: 'recordings'}) %>
|
||||
</div>
|
||||
<% else %>
|
||||
<p class="mt-4">Recording of the live stream will appear here.</p>
|
||||
<% end %>
|
||||
|
||||
<div class="media-body">
|
||||
<h5 class="mt-0 mb-1"><%= recording.name %></h5>
|
||||
<small class="text-muted"><%= recording.description %></small>
|
||||
</div>
|
||||
|
||||
<% if policy(BroadcastRecording).edit? %>
|
||||
<%= link_to fa_icon('edit'), [:edit, broadcast.project, broadcast, recording], class: "mr-3", remote: true %>
|
||||
<% end %>
|
||||
|
||||
<%= link_to(fa_icon('download'), recording.download_url, target: "_blank") %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
|
||||
<div id="recordings_pagination" class="row mt-5 justify-content-center">
|
||||
<%= will_paginate(recordings, params: {controller: "broadcasts", action: "show", project_id: broadcast.project_id, id: broadcast.id, page: params[:page], active_tab: 'recordings'}) %>
|
||||
</div>
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
<% if broadcast.streamer_connected? || (broadcast.streamer_recording? && !broadcast.active?) %>
|
||||
<p class="mb-1">Live stream has connected successfully and will be available soon.</p>
|
||||
<div class="badge badge-pill badge-success mb-2 text-uppercase">Connected</div>
|
||||
<% elsif broadcast.streamer_recording? && broadcast.active? %>
|
||||
<p class="mb-1">Live stream has begun, click play to watch it.</p>
|
||||
<div class="badge badge-pill badge-danger mb-2 text-uppercase">Live</div>
|
||||
<% elsif broadcast.streamer_disconnected? %>
|
||||
<p class="mb-1">Live stream got disconnected.</p>
|
||||
<div class="badge badge-pill badge-warning mb-2 text-uppercase">Disconnected</div>
|
||||
<% elsif (broadcast.idle? && broadcast.streamer_idle?) || (broadcast.created? && broadcast.streamer_idle?) %>
|
||||
<p class="mb-1">Live stream is waiting to begin.</p>
|
||||
<div class="badge badge-pill badge-primary mb-2 text-uppercase">Idle</div>
|
||||
<% end %>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="text-center pb-2" id="broadcast_file_form_<%= broadcast.token %>">
|
||||
<div class="text-center p-3" id="broadcast_file_form_<%= broadcast.token %>">
|
||||
<% if controller.class.module_parent.to_s == "Public" %>
|
||||
<%= render partial: "public/broadcasts/file_form", locals: { model: [broadcast], token: broadcast.token } %>
|
||||
<% else %>
|
||||
|
||||
@@ -1,12 +1,35 @@
|
||||
<div class="list-group">
|
||||
<div class="list-group-item list-group-item-action flex-column align-items-start">
|
||||
<div class="d-flex w-100 justify-content-between mb-1">
|
||||
<h5 class="mb-1"><%= broadcast.name %></h5>
|
||||
<small>Created - <%= time_ago_in_words(broadcast.created_at) + " ago" %></small>
|
||||
</div>
|
||||
<div id="broadcast_updates">
|
||||
<% # TODO: Refactor this %>
|
||||
<% if params[:director_mode] %>
|
||||
<% if controller.class.module_parent.to_s == "Public" %>
|
||||
<% live_take_url = url_for(params.permit!.merge(director_mode: true, token: broadcast.token)) %>
|
||||
<% else %>
|
||||
<% live_take_url = url_for(params.permit!.merge(director_mode: true, id: broadcast.id)) %>
|
||||
<% end %>
|
||||
<hr/>
|
||||
<% else %>
|
||||
<% if controller.class.module_parent.to_s == "Public" %>
|
||||
<% live_take_url = url_for(params.permit!.merge(token: broadcast.token).except(:director_mode)) %>
|
||||
<% else %>
|
||||
<% live_take_url = url_for(params.permit!.merge(id: broadcast.id).except(:director_mode)) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<div id="live-take" class="media p-3 playing-highlight">
|
||||
<div id="recording_status">
|
||||
<%= render 'broadcasts/recording_status', broadcast: broadcast %>
|
||||
</div>
|
||||
|
||||
<div class="play-thumbnail">
|
||||
<%= image_tag "live_icon.png", class: "mr-2", width: 64, alt: "Live stream thumbnail" %>
|
||||
<%= link_to live_take_url, class: "play-btn", data: { behavior: "play_stream" } do %>
|
||||
<%= render "broadcasts/play_button_svg" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="media-body">
|
||||
<h5 class="mt-0"><%= broadcast.name %></h5>
|
||||
<small id="broadcast_updates" class="text-muted">
|
||||
<%= render partial: 'broadcasts/broadcast_status', locals: { broadcast: broadcast } %>
|
||||
</div>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
3
app/views/broadcasts/_play_button_svg.html.erb
Normal file
3
app/views/broadcasts/_play_button_svg.html.erb
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 26">
|
||||
<polygon class="play-btn-svg" points="9.33 6.69 9.33 19.39 19.3 13.04 9.33 6.69"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 153 B |
1
app/views/broadcasts/_recording_status.html.erb
Normal file
1
app/views/broadcasts/_recording_status.html.erb
Normal file
@@ -0,0 +1 @@
|
||||
<%= fa_icon "circle fw", class: class_string('mr-2', 'text-danger' => broadcast.streamer_recording? && broadcast.active?) %>
|
||||
@@ -13,12 +13,18 @@
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<style>
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
</style>
|
||||
|
||||
<% content_for :header do %>
|
||||
<header></header>
|
||||
<% end %>
|
||||
|
||||
<div class="row no-gutters m-n3">
|
||||
<div class="col-lg-8 col-md-12 bg-black">
|
||||
<div class="col-lg-9 col-md-12 bg-black vh-100">
|
||||
<div class="d-flex justify-content-start align-items-center flex-row p-3 mb-5 bg-dark">
|
||||
<%= product_wordmark(:direct_me, class: 'navbar-brand text-white') %>
|
||||
<div class="ml-4 dropdown">
|
||||
@@ -85,32 +91,34 @@
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-12 bg-white p-3 min-vh-100 overflow-auto">
|
||||
<% unless controller.class.module_parent.to_s == "Public" %>
|
||||
<% if @multi_view_broadcasts.present? %>
|
||||
<% tokens = @multi_view_broadcasts.map(&:token) %>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary" id="broadcast_share_url" data-behavior="clipboard" href="<%= broadcast_url(@broadcast.token, multi_view_tokens: tokens) %>">Share URL</button>
|
||||
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "dropdown-item" %>
|
||||
<div class="col-lg-3 col-md-12 bg-white vh-100 overflow-auto">
|
||||
<div class="px-3 pt-3">
|
||||
<% unless controller.class.module_parent.to_s == "Public" %>
|
||||
<% if @multi_view_broadcasts.present? %>
|
||||
<% tokens = @multi_view_broadcasts.map(&:token) %>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary" id="broadcast_share_url" data-behavior="clipboard" href="<%= broadcast_url(@broadcast.token, multi_view_tokens: tokens) %>">Share URL</button>
|
||||
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "dropdown-item" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary" id="broadcast_share_url" data-behavior="clipboard" href="<%= broadcast_url(@broadcast.token) %>">Share URL</button>
|
||||
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "dropdown-item" %>
|
||||
<% else %>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary" id="broadcast_share_url" data-behavior="clipboard" href="<%= broadcast_url(@broadcast.token) %>">Share URL</button>
|
||||
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "dropdown-item" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= link_to 'Video Conference', @conference_url, class: 'btn btn-primary', target: '_blank' %>
|
||||
<%= link_to 'Video Conference', @conference_url, class: 'btn btn-primary', target: '_blank' %>
|
||||
</div>
|
||||
<hr/>
|
||||
<ul class="nav nav-tabs override-nav-tabs mb-3">
|
||||
<li class="nav-item">
|
||||
@@ -125,21 +133,6 @@
|
||||
<div id="live_take">
|
||||
<%= render partial: 'broadcasts/live_take', locals: { broadcast: @broadcast } %>
|
||||
</div>
|
||||
<% if params[:director_mode] %>
|
||||
<% if controller.class.module_parent.to_s == "Public" %>
|
||||
<%= link_to "Play #{@broadcast.name.titleize}", url_for(params.permit!.merge(director_mode: true, token: @broadcast.token)), data: { behavior: "play_stream"}, class: "mt-2 btn btn-primary" %>
|
||||
<% else %>
|
||||
<%= link_to "Play #{@broadcast.name.titleize}", url_for(params.permit!.merge(director_mode: true, id: @broadcast.id)), data: { behavior: "play_stream"}, class: "mt-2 btn btn-primary" %>
|
||||
<% end %>
|
||||
<hr/>
|
||||
<% else %>
|
||||
<% if controller.class.module_parent.to_s == "Public" %>
|
||||
<%= link_to "Play #{@broadcast.name.titleize}", url_for(params.permit!.merge(token: @broadcast.token).except(:director_mode)), data: { behavior: "play_stream"}, class: "mt-2 btn btn-primary" %>
|
||||
<% else %>
|
||||
<%= link_to "Play #{@broadcast.name.titleize}", url_for(params.permit!.merge(id: @broadcast.id).except(:director_mode)), data: { behavior: "play_stream"}, class: "mt-2 btn btn-primary" %>
|
||||
<% end %>
|
||||
<hr/>
|
||||
<% end %>
|
||||
<div id="broadcast_recordings">
|
||||
<%= render partial: 'broadcasts/broadcast_recordings', locals: { recordings: @recordings, broadcast: @broadcast } %>
|
||||
</div>
|
||||
@@ -153,12 +146,12 @@
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="tab-content pt-4">
|
||||
<div class="tab-content">
|
||||
<% @multi_view_broadcasts.each_with_index do |mvb, index| %>
|
||||
<div class="<%= class_string("tab-pane fade show", "active" => (params[:active_files_tab] == mvb.token || (params[:active_files_tab].nil? && index == 0))) %>" id="files_broadcast_<%= mvb.token %>">
|
||||
<%= render partial: 'broadcasts/files_section', locals: { broadcast: mvb, files: mvb.files } %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% else %>
|
||||
<%= render partial: 'broadcasts/files_section', locals: { broadcast: @broadcast, files: @files } %>
|
||||
|
||||
Reference in New Issue
Block a user