Compare commits

..

2 Commits

Author SHA1 Message Date
Bilal
cc30262811 add splash page for directME 2020-07-01 12:58:03 +02:00
Bilal
252501f789 rebase; sort translations 2020-07-01 12:18:24 +02:00
9 changed files with 111 additions and 112 deletions

View File

@@ -5,6 +5,7 @@ class BroadcastsController < ApplicationController
before_action :build_broadcast, only: [:new, :create] before_action :build_broadcast, only: [:new, :create]
before_action :set_broadcast, only: [:show, :destroy, :update] before_action :set_broadcast, only: [:show, :destroy, :update]
before_action :set_multi_view_broadcasts, only: [:show] before_action :set_multi_view_broadcasts, only: [:show]
before_action :show_splash_screen, only: :index
def index def index
@broadcasts = filtered_broadcasts.order_by_recent.paginate(page: params[:page]) @broadcasts = filtered_broadcasts.order_by_recent.paginate(page: params[:page])
@@ -49,6 +50,10 @@ class BroadcastsController < ApplicationController
private private
def show_splash_screen
render :splash if broadcasts.count.zero?
end
def broadcast_params def broadcast_params
params.require(:broadcast).permit(:name, files: []) params.require(:broadcast).permit(:name, files: [])
end end

View File

@@ -3,7 +3,6 @@ class VideosController < ApplicationController
before_action :set_project, only: [:index, :new, :create, :landing] before_action :set_project, only: [:index, :new, :create, :landing]
before_action :set_video, only: [:edit, :update] before_action :set_video, only: [:edit, :update]
before_action :show_splash_screen, only: :index
def landing def landing
authorize Video, :new? authorize Video, :new?
@@ -61,10 +60,6 @@ class VideosController < ApplicationController
private private
def show_splash_screen
render :splash if videos.count.zero?
end
def set_project def set_project
@project = policy_scope(Project).find(params[:project_id]) @project = policy_scope(Project).find(params[:project_id])
end end

View File

@@ -1,12 +1,12 @@
<div class="d-flex flex-row"> <div class="d-flex flex-row">
<div class="d-flex flex-column"> <div class="d-flex flex-column">
<%= product_wordmark :deliver_me, prefix: t('.headings.welcome'), class: "h2" %> <%= product_wordmark :direct_me, prefix: t('.headings.welcome'), class: "h2" %>
<p class="text-muted"><%= t '.headings.subtitle' %> <p class="text-muted"><%= t '.headings.subtitle' %>
</div> </div>
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %> <%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
<% if policy(Video).new? %> <% if policy(Broadcast).new? %>
<%= link_to t(".actions.upload_video"), [:new, @project, :video], class: "btn btn-success border align-self-center h-50 pb-2" %> <%= link_to t(".actions.create_stream"), [:new, @project, :broadcast], class: "btn btn-success border align-self-center h-50 pb-2" %>
<% end %> <% end %>
</div> </div>
@@ -36,10 +36,10 @@
<div class="col"> <div class="col">
<h3><%= t '.headings.how_it_works' %></h3> <h3><%= t '.headings.how_it_works' %></h3>
<ol> <ol>
<li><%= t '.list_items.import_video' %></li> <li><%= t '.list_items.create_stream' %></li>
<li><%= t '.list_items.import_EDLs' %></li> <li><%= t '.list_items.share_stream' %></li>
<li><%= t '.list_items.AI_generates_documents' %></li> <li><%= t '.list_items.launch_video_conference' %></li>
<li><%= t '.list_items.download_documents' %></li> <li><%= t '.list_items.share_files' %></li>
</ol> </ol>
</div> </div>
</div> </div>
@@ -47,13 +47,13 @@
<div class="col"> <div class="col">
<h3><%= t '.headings.benefits' %></h3> <h3><%= t '.headings.benefits' %></h3>
<ul class="fa-ul ml-5"> <ul class="fa-ul ml-5">
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_labor_cost'))) %> <%= content_tag(:li, fa_icon("check li", text: t('.list_items.stream_from_mobile_app'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.more_accurate'))) %> <%= content_tag(:li, fa_icon("check li", text: t('.list_items.direct_shoots_anywhere'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.simplifies_cue_sheets'))) %> <%= content_tag(:li, fa_icon("check li", text: t('.list_items.share_live_stream'))) %>
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.production_elements_logs'))) %> <%= content_tag(:li, fa_icon("check li", text: t('.list_items.stream_multiple_cameras'))) %>
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -207,6 +207,24 @@ en:
new: new:
heading: heading:
Create Live Stream Create Live Stream
splash:
actions:
book_demo: Schedule a Demo
create_stream: Create New Live Stream
headings:
benefits: Benefits
how_it_works: How It Works
subtitle: Remote directing and video village solution
welcome: Welcome to
list_items:
create_stream: Create a live stream
direct_shoots_anywhere: Direct shoots anywhere around the world
launch_video_conference: Launch Video Conference using plugin
share_files: Share files via the ME Suite mobile app
share_live_stream: Share live stream with clients all over the the world
share_stream: Share live stream link with clients
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
stream_multiple_cameras: Stream multiple cameras at one time
bulk_taggings: bulk_taggings:
new_bulk_tag_modal: new_bulk_tag_modal:
submit: Add submit: Add
@@ -1273,24 +1291,6 @@ en:
new: new:
heading: Upload Video heading: Upload Video
subheading: 2 of 2 Files subheading: 2 of 2 Files
splash:
actions:
book_demo: Schedule a Demo
upload_video: Upload New Video
headings:
benefits: Benefits
how_it_works: How It Works
subtitle: Automate your deliverable documents
welcome: Welcome to
list_items:
AI_generates_documents: AI generates deliverable documents
download_documents: Download deliverable documents
import_EDLs: Import your EDLs
import_video: Import your video
more_accurate: More accurate than human-generated reports
production_elements_logs: Production Elements Logs, and more
reduces_labor_cost: Reduces labor costs
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets
update: update:
notice: The video has been updated notice: The video has been updated
video: video:

View File

@@ -57,6 +57,25 @@ es:
pdf: pdf:
do_not_copy_warning: "Do not copy (ES)" do_not_copy_warning: "Do not copy (ES)"
serial_number_label: "Serial Number (ES)" serial_number_label: "Serial Number (ES)"
broadcasts:
splash:
actions:
book_demo: Schedule a Demo
create_stream: Create New Live Stream
headings:
benefits: Benefits
how_it_works: How It Works
subtitle: Remote directing and video village solution
welcome: Welcome to
list_items:
create_stream: Create a live stream
direct_shoots_anywhere: Direct shoots anywhere around the world
launch_video_conference: Launch Video Conference using plugin
share_files: Share files via the ME Suite mobile app
share_live_stream: Share live stream with clients all over the the world
share_stream: Share live stream link with clients
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
stream_multiple_cameras: Stream multiple cameras at one time
contract_templates: contract_templates:
blank_contracts: blank_contracts:
create: create:
@@ -363,22 +382,3 @@ es:
manage: Manage (ES) manage: Manage (ES)
open_deliverable: Open Deliverable (ES) open_deliverable: Open Deliverable (ES)
read_more: read more (ES) read_more: read more (ES)
videos:
splash:
actions:
book_demo: Schedule a Demo (ES)
upload_video: Upload New Video (ES)
headings:
benefits: Benefits (ES)
how_it_works: How It Works (ES)
subtitle: Automate your deliverable documents (ES)
welcome: Welcome to (ES)
list_items:
AI_generates_documents: AI generates deliverable documents (ES)
download_documents: Download deliverable documents (ES)
import_EDLs: Import your EDLs (ES)
import_video: Import your video (ES)
more_accurate: More accurate than human-generated reports (ES)
production_elements_logs: Production Elements Logs, and more (ES)
reduces_labor_cost: Reduces labor costs (ES)
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES)

View File

@@ -22,7 +22,7 @@ RSpec.describe BroadcastsController, type: :controller do
expect(response).to be_successful expect(response).to be_successful
end end
it "renders content" do it "renders content if theere are existing broadcasts" do
create(:broadcast, project: project, name: "Another Broadcast") create(:broadcast, project: project, name: "Another Broadcast")
get :index, params: { project_id: project } get :index, params: { project_id: project }
@@ -34,12 +34,13 @@ RSpec.describe BroadcastsController, type: :controller do
end end
context "when there are no active broadcasts" do context "when there are no active broadcasts" do
it "renders an empty message" do it "renders splash screen" do
Broadcast.destroy_all Broadcast.destroy_all
get :index, params: { project_id: project } get :index, params: { project_id: project }
expect(response.body).to have_content("Live streams will appear here") expect(response.body).to have_link create_stream
expect(response.body).to have_link schedule_demo
end end
end end
@@ -55,10 +56,8 @@ RSpec.describe BroadcastsController, type: :controller do
context "for xhr request" do context "for xhr request" do
it "filters the broadcasts by a query param" do it "filters the broadcasts by a query param" do
appearance_releases = [ create(:broadcast, project: project, skip_create_callback: true, name: "Stream by Adam")
create(:broadcast, skip_create_callback: true, name: "Stream by Adam"), create(:broadcast, project: project, skip_create_callback: true, name: "Stream by Zoe")
create(:broadcast, skip_create_callback: true, name: "Stream by Zoe"),
]
get :index, params: { project_id: project, query: "Zoe" }, xhr: true get :index, params: { project_id: project, query: "Zoe" }, xhr: true
@@ -245,4 +244,12 @@ RSpec.describe BroadcastsController, type: :controller do
{ files: [contract_file] } { files: [contract_file] }
end end
def schedule_demo
t 'broadcasts.splash.actions.book_demo'
end
def create_stream
t 'broadcasts.splash.actions.create_stream'
end
end end

View File

@@ -20,7 +20,6 @@ RSpec.describe VideosController, type: :controller do
end end
it "has a search form" do it "has a search form" do
create(:video, project: project)
get :index, params: { project_id: project } get :index, params: { project_id: project }
expect(response.body).to have_button("search-button") expect(response.body).to have_button("search-button")
@@ -44,7 +43,7 @@ RSpec.describe VideosController, type: :controller do
end end
it "renders content if there are existing videos" do it "renders content" do
video = create(:video, project: project, name: "My Video", number: "001", created_at: 1.day.ago) video = create(:video, project: project, name: "My Video", number: "001", created_at: 1.day.ago)
get :index, params: { project_id: project } get :index, params: { project_id: project }
@@ -59,11 +58,10 @@ RSpec.describe VideosController, type: :controller do
end end
context "when there are no records" do context "when there are no records" do
it "renders splash screen" do it "renders an empty message" do
get :index, params: { project_id: project } get :index, params: { project_id: project }
expect(response.body).to have_link "Upload New Video" expect(response.body).to have_content("Videos will appear here")
expect(response.body).to have_link schedule_demo
end end
end end
@@ -279,8 +277,4 @@ RSpec.describe VideosController, type: :controller do
def video_update_params def video_update_params
attributes_for(:video, :with_graphics_only_edl_file, :with_audio_only_edl_file, name: "Test Video").except(:file) attributes_for(:video, :with_graphics_only_edl_file, :with_audio_only_edl_file, name: "Test Video").except(:file)
end end
def schedule_demo
t 'videos.splash.actions.book_demo'
end
end end

View File

@@ -12,6 +12,13 @@ feature 'User managing broadcasts' do
allow(MuxLiveStream).to receive(:new).and_return(double(id: 'id', key: 'key', playback_id: 'playback_id')) allow(MuxLiveStream).to receive(:new).and_return(double(id: 'id', key: 'key', playback_id: 'playback_id'))
end end
scenario "splash page is shown if there are no existing streams" do
visit project_broadcasts_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content create_stream
end
scenario 'creating and deleting a broadcast', js: true do scenario 'creating and deleting a broadcast', js: true do
visit new_project_broadcast_path(project) visit new_project_broadcast_path(project)
@@ -131,6 +138,29 @@ feature 'User managing broadcasts' do
end end
end end
end end
context 'When the user is associate' do
let(:current_user) { create(:user, :associate) }
it 'does not show button to create new live stream' do
visit project_broadcasts_path(project)
expect(page).to have_content schedule_demo
expect(page).not_to have_content create_stream
end
end
context 'When the user is account manager' do
let(:current_user) { create(:user, :account_manager) }
it 'does show button to create new live stream' do
visit project_broadcasts_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content create_stream
end
end
end end
private private
@@ -151,4 +181,12 @@ feature 'User managing broadcasts' do
def switch_view_dropdown def switch_view_dropdown
'Switch View' 'Switch View'
end end
def schedule_demo
t 'broadcasts.splash.actions.book_demo'
end
def create_stream
t 'broadcasts.splash.actions.create_stream'
end
end end

View File

@@ -1,8 +1,8 @@
require "rails_helper" require "rails_helper"
feature "User managing videos" do feature "User managing videos" do
let(:current_user) { create(:user, :manager) } let(:current_user) { create(:user) }
let(:project) { create(:project, members: current_user, account: current_user.primary_account) } let(:project) { create(:project, account: current_user.primary_account) }
let!(:video) do let!(:video) do
create(:video, create(:video,
:with_graphics_only_edl_file, :with_graphics_only_edl_file,
@@ -17,14 +17,6 @@ feature "User managing videos" do
sign_in current_user sign_in current_user
end end
scenario "splash page is shown if there are no existing videos" do
Video.delete_all
visit project_videos_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content upload_new_video
end
scenario "creating a video", js: true do scenario "creating a video", js: true do
visit project_videos_path(project) visit project_videos_path(project)
click_link "Upload New Video" click_link "Upload New Video"
@@ -104,30 +96,6 @@ feature "User managing videos" do
expect(page).to have_content("Second Video") expect(page).to have_content("Second Video")
end end
context 'When the user is associate' do
let(:current_user) { create(:user, :associate) }
it 'does show button to upload new video' do
Video.delete_all
visit project_videos_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content upload_new_video
end
end
context 'When the user is account manager' do
let(:current_user) { create(:user, :account_manager) }
it 'does show button to upload new video' do
Video.delete_all
visit project_videos_path(project)
expect(page).to have_content schedule_demo
expect(page).to have_content upload_new_video
end
end
private private
def fill_in_video_fields(data) def fill_in_video_fields(data)
@@ -147,12 +115,4 @@ feature "User managing videos" do
def update_video_notice def update_video_notice
t "videos.update.notice" t "videos.update.notice"
end end
def schedule_demo
t 'videos.splash.actions.book_demo'
end
def upload_new_video
t 'videos.splash.actions.upload_video'
end
end end