Compare commits

..

8 Commits

Author SHA1 Message Date
Bilal
744480740e rebase 2020-07-14 14:16:55 +02:00
Bilal
bc1ff4cf39 add specs 2020-07-14 14:15:31 +02:00
Bilal
7d4ff7cdb8 sort translations 2020-07-14 14:15:31 +02:00
Bilal
e41d7603d0 implement duplication 2020-07-14 14:15:31 +02:00
Bilal
0741f8a230 fix new and edit form models 2020-07-14 14:15:31 +02:00
Bilal
f44eca5328 prevent update if template is in use 2020-07-14 14:15:31 +02:00
Bilal
cefa30b331 add Edit button 2020-07-14 14:14:47 +02:00
Bilal
2b95849229 add edit page for contract templates 2020-07-14 14:14:47 +02:00
113 changed files with 166 additions and 2450 deletions

View File

@@ -21,13 +21,11 @@ $(document).on "turbolinks:load", ->
refreshBroadcastVideo: (data) -> refreshBroadcastVideo: (data) ->
$("#broadcast_updates").html data.status_content $("#broadcast_updates").html data.status_content
stream_selected = $("#broadcast_video").data('videoType') == 'stream'; if data.streamer_status == 'recording' && data.status == 'active'
if data.streamer_status == 'recording' && data.status == 'active' && stream_selected
$("#broadcast_video").html data.video_content $("#broadcast_video").html data.video_content
new (Clappr.Player)( new (Clappr.Player)(
<%= "baseUrl: 'http://cdn.clappr.io/latest'," if Rails.env.test? %>
parentId: '#broadcast_video' parentId: '#broadcast_video'
source: data.full_live_stream_playback_url source: data.playback_url
width: '100%', width: '100%',
height: '100%', height: '100%',
mute: true, mute: true,

View File

@@ -1,50 +0,0 @@
$(document).on("click", "[data-behavior=select_contract_template]", function() {
var _this = this;
var checkbox = $(this).children("input:checkbox");
selectContractTemplate(_this, checkbox);
});
$(document).on("click", "[data-behavior=select_contract_template] input[type='checkbox']", function(e) {
e.stopPropagation();
var _this = this;
var checkbox = $(this);
selectContractTemplate(_this, checkbox);
});
function selectContractTemplate(clicked_element, checkbox) {
if (clicked_element.hasChildNodes()) {
if(checkbox.prop("checked")) {
checkbox.prop('checked', false);
} else {
checkbox.prop('checked', true);
}
}
var checked = checkbox.prop("checked");
var project_id = JSON.parse($('#group_qr_code').attr('data-project-id'));
var contract_template_ids = JSON.parse($('#group_qr_code').attr('data-contract-template-ids'));
var selected_contract_template_id = checkbox.val();
if (checked && !contract_template_ids.includes(selected_contract_template_id)) {
contract_template_ids.push(selected_contract_template_id);
} else if(!checked && contract_template_ids.includes(selected_contract_template_id)) {
contract_template_ids.splice( $.inArray(selected_contract_template_id, contract_template_ids), 1 );
}
$('#group_qr_code').attr('data-contract-template-ids', JSON.stringify(contract_template_ids));
if (contract_template_ids.length >= 2) {
multi_sign_ids = $.param({multi_sign_ids: contract_template_ids});
contract_template_url = "/en/contract_templates/" + contract_template_ids[0] + "/qr_codes?" + multi_sign_ids
$("#group_qr_code").attr("href", contract_template_url);
$("#group_qr_code").attr("target", "_blank");
$("#group_qr_code").removeClass('disabled');
} else if (contract_template_ids.length < 2) {
$("#group_qr_code").attr("href", "javascript:void(0);");
$("#group_qr_code").addClass('disabled');
}
}

View File

@@ -3,7 +3,7 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
return false; return false;
} }
$("#broadcast_video").data('videoType', 'recording'); console.warn('Play prev : ', playback_url);
var playback_url = $(this).attr("data-playback-url") var playback_url = $(this).attr("data-playback-url")
$("#broadcast_video").empty(); $("#broadcast_video").empty();
@@ -24,5 +24,3 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
$(this).addClass('active'); $(this).addClass('active');
$(this).prepend('<i class="fa fa-check">&nbsp;</i>'); $(this).prepend('<i class="fa fa-check">&nbsp;</i>');
}); });
$(document).on("click", "[data-behavior=play_stream]", function() { $("#broadcast_video").data('videoType', 'stream'); });

View File

@@ -16,7 +16,6 @@ class BroadcastsChannel < ApplicationCable::Channel
event: :broadcast_stream_update, event: :broadcast_stream_update,
status: broadcast.status, status: broadcast.status,
playback_url: broadcast.stream_playback_url, playback_url: broadcast.stream_playback_url,
full_live_stream_playback_url: broadcast.full_live_stream_playback_url,
video_content: video_content, video_content: video_content,
status_content: status_content, status_content: status_content,
streamer_status: broadcast.streamer_status streamer_status: broadcast.streamer_status

View File

@@ -1,28 +1,21 @@
class ApprovalsController < ApplicationController class ApprovalsController < ApplicationController
before_action :set_releasable include MedicalReleaseContext
before_action :set_medical_release
before_action :set_project before_action :set_project
layout "project" layout "project"
def create def create
@releasable.approve_by(current_user) @medical_release.approve_by(current_user)
if @medical_release.save
if @releasable.save redirect_to [@project, :medical_releases], notice: t('.release_approved')
redirect_to [@project, "#{@releasable_param.name.pluralize}"], notice: t('.release_approved', release_type: @releasable.model_name.human)
end end
end end
private private
def releasable_param
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
end
def set_releasable
@releasable = authorize policy_scope(releasable_param.type).find(releasable_param.id)
end
def set_project def set_project
@project = @releasable.project @project = @medical_release.project
end end
end end

View File

@@ -3,7 +3,7 @@ class BroadcastsController < ApplicationController
before_action :set_project before_action :set_project
before_action :build_broadcast, only: [:new, :create] before_action :build_broadcast, only: [:new, :create]
before_action :set_broadcast, only: [:show, :destroy, :update, :destroy_file] 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 before_action :show_splash_screen, only: :index
@@ -33,13 +33,11 @@ class BroadcastsController < ApplicationController
end end
def update def update
unless params.has_key?(:broadcast)
@broadcast.regenerate_token
redirect_to([@project, @broadcast], notice: t('.reset_notice')) and return
end
@broadcast.update(broadcast_params) @broadcast.update(broadcast_params)
update_files_section @files = @broadcast.files.order("created_at DESC").paginate(page: 1)
pagination_content = ApplicationController.render html: helpers.will_paginate(@files, params: { active_tab: params[:active_tab], page: params[:page], active_files_tab: params[:active_files_tab] })
BroadcastsChannel.broadcast_file_upload_updates(@broadcast, @files, pagination_content)
end end
def destroy def destroy
@@ -50,29 +48,14 @@ class BroadcastsController < ApplicationController
end end
end end
def destroy_file
authorize Broadcast
file = ActiveStorage::Attachment.find(params[:file_id])
file.destroy
update_files_section
end
private private
def update_files_section
@files = @broadcast.files.order("created_at DESC").paginate(page: 1)
pagination_content = ApplicationController.render html: helpers.will_paginate(@files, params: { active_tab: params[:active_tab], page: params[:page], active_files_tab: params[:active_files_tab] })
BroadcastsChannel.broadcast_file_upload_updates(@broadcast, @files, pagination_content)
end
def show_splash_screen def show_splash_screen
render :splash if broadcasts.count.zero? render :splash if broadcasts.count.zero?
end end
def broadcast_params def broadcast_params
params.require(:broadcast).permit(:name, :shoot_location_time_zone, files: []) params.require(:broadcast).permit(:name, files: [])
end end
def set_project def set_project

View File

@@ -16,12 +16,7 @@ class ContractTemplates::QrCodesController < ApplicationController
end end
def qr_code def qr_code
if params[:multi_sign_ids].present? authorize QrCode.build_from_contract_template(@contract_template)
contract_templates_group = authorize contract_templates.where(id: params[:multi_sign_ids]).order_by_recent
authorize QrCode.build_from_multiple_contract_templates(contract_templates_group, @contract_template.project)
else
authorize QrCode.build_from_contract_template(@contract_template)
end
end end
def download_attributes def download_attributes

View File

@@ -82,7 +82,7 @@ class ContractTemplatesController < ApplicationController
params params
.require(:contract_template) .require(:contract_template)
.permit(:name, :release_type, :body, :guardian_clause, .permit(:name, :release_type, :body, :guardian_clause,
:signature_legal_text, :fee, :amendment_clause, :signature_legal_text, :fee,
:applicable_medium_id, :applicable_medium_text, :applicable_medium_id, :applicable_medium_text,
:territory_id, :territory_text, :territory_id, :territory_text,
:term_id, :term_text, :accessibility, :term_id, :term_text, :accessibility,

View File

@@ -1,47 +0,0 @@
class Public::AmendmentsController < Public::BaseController
skip_after_action :verify_authorized, :verify_policy_scoped
before_action :set_account, :set_project, :set_contract_template, :set_release
def new
if @release.amendment_signed?
render :create, locals: { already_signed: true }
end
end
def create
if @release.amendment_signed?
render :create, locals: { already_signed: true }
return
end
@release.attributes = amendment_params
render :new unless @release.save(context: :amendment)
end
private
def amendment_params
params.require(releasable_param.name).permit(:amendment_signer_name, :amendment_signature_base64)
end
def releasable_param
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
end
def set_release
@release = @contract_template.releases.find(releasable_param.id)
end
def set_contract_template
@contract_template = @project.contract_templates.find(params[:contract_template_id])
end
def set_project
@project = @account.projects.find(params[:project_id])
end
def set_account
@account = Account.find_by(slug: params[:account_id])
end
end

View File

@@ -1,18 +0,0 @@
class Public::ContractTemplatesController < Public::BaseController
skip_after_action :verify_authorized, :verify_policy_scoped
before_action :set_account, :set_project
def index
@contract_templates = @project.contract_templates.where(id: params[:contract_template_ids]).order_by_name.paginate(page: params[:page])
end
private
def set_project
@project = @account.projects.find(params[:project_id])
end
def set_account
@account = Account.find_by(slug: params[:account_id])
end
end

View File

@@ -14,10 +14,6 @@ class StreamNotificationsController < ApplicationController
when "video.live_stream.recording" when "video.live_stream.recording"
@broadcast.streamer_recording! @broadcast.streamer_recording!
notify_users notify_users
when "video.asset.ready"
full_live_stream_playback_uid = notification.dig(:data, :playback_ids, 0, :id)
@broadcast.update(full_live_stream_playback_uid: full_live_stream_playback_uid)
notify_users
when "video.live_stream.active" when "video.live_stream.active"
@broadcast.active! @broadcast.active!
notify_users notify_users
@@ -63,8 +59,7 @@ class StreamNotificationsController < ApplicationController
end end
def set_broadcast def set_broadcast
case notification_type if notification_type == "video.asset.static_renditions.ready"
when "video.asset.static_renditions.ready", "video.asset.ready"
live_stream_id = notification.dig(:stream_notification, :data, :live_stream_id) live_stream_id = notification.dig(:stream_notification, :data, :live_stream_id)
@broadcast = Broadcast.find_by(stream_uid: live_stream_id) @broadcast = Broadcast.find_by(stream_uid: live_stream_id)
else else

View File

@@ -6,11 +6,11 @@ module TooltipHelper
end end
end end
def get_approval_data_for_releasable(release) def get_approval_data_for_medical_release(medical_release)
if release.approved_by_user_name.present? if medical_release.approved_by_user_name.present?
"#{release.approved_by_user_name} [#{release.approved_by_user_email}]" "#{medical_release.approved_by_user_name} [#{medical_release.approved_by_user_email}]"
else else
release.approved_by_user_email medical_release.approved_by_user_email
end end
end end
end end

View File

@@ -10,7 +10,6 @@ class AcquiredMediaRelease < ApplicationRecord
include Syncable include Syncable
include PersonName include PersonName
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers

View File

@@ -16,7 +16,6 @@ class AppearanceRelease < ApplicationRecord
include GuardianName include GuardianName
include SecondGuardianName include SecondGuardianName
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers

View File

@@ -30,10 +30,6 @@ class Broadcast < ApplicationRecord
"https://stream.mux.com/#{stream_playback_uid}.m3u8" "https://stream.mux.com/#{stream_playback_uid}.m3u8"
end end
def full_live_stream_playback_url
full_live_stream_playback_uid.blank? ? stream_playback_url : "https://stream.mux.com/#{full_live_stream_playback_uid}.m3u8"
end
def stream_server_url def stream_server_url
ENV['MUX_BROADCAST_SERVER_URL'] ENV['MUX_BROADCAST_SERVER_URL']
end end

View File

@@ -14,6 +14,6 @@ class BroadcastRecording < ApplicationRecord
end end
def download_file_name def download_file_name
"#{broadcast_name}_Date_#{created_at.in_time_zone(broadcast.shoot_location_time_zone).strftime("%Y-%m-%d")}_Time_#{created_at.in_time_zone(broadcast.shoot_location_time_zone).strftime("%T")}".parameterize "#{broadcast_name}_Date_#{created_at.strftime("%Y-%m-%d")}_Time_#{created_at.strftime("%T")}".parameterize
end end
end end

View File

@@ -1,32 +0,0 @@
module Amendmenable
extend ActiveSupport::Concern
included do
include ActiveStorageSupport::SupportForBase64
has_one_base64_attached :amendment_signature
with_options on: :amendment do
validates :amendment_signer_name, presence: true
validates :amendment_signature, attached: true
end
end
def amendment_signable?
contract_template.present? && contract_template.amendment_clause.present?
end
def amendment_signed?
amendment_signature.attached?
end
def amendment_signature_base64
nil
end
def amendment_signature_base64=(data_uri)
return if data_uri.blank?
amendment_signature.attach(data: data_uri, filename: "amendment_signature.png", content_type: "image/png", identify: "false")
end
end

View File

@@ -1,17 +0,0 @@
module Approvable
extend ActiveSupport::Concern
included do
def approve_by(user)
return unless approved_at.nil?
self.approved_by_user_name = user.full_name
self.approved_by_user_email = user.email
self.approved_at = Time.zone.now
end
def approved?
self.approved_at.present?
end
end
end

View File

@@ -3,7 +3,7 @@
module CsvExportable module CsvExportable
extend ActiveSupport::Concern extend ActiveSupport::Concern
COMMON_HEADERS = %i[approved? notes tags signed_at].freeze COMMON_HEADERS = %i[notes tags signed_at].freeze
COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze
included do included do

View File

@@ -22,7 +22,6 @@ class ContractTemplate < ApplicationRecord
has_rich_text :body has_rich_text :body
has_rich_text :guardian_clause has_rich_text :guardian_clause
has_rich_text :signature_legal_text has_rich_text :signature_legal_text
has_rich_text :amendment_clause
validates :name, presence: true validates :name, presence: true
validates :release_type, presence: true validates :release_type, presence: true

View File

@@ -11,8 +11,6 @@ class LocationRelease < ApplicationRecord
include Taggable include Taggable
include PersonName include PersonName
include CsvExportable include CsvExportable
include Approvable
include Amendmenable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers

View File

@@ -11,7 +11,6 @@ class MaterialRelease < ApplicationRecord
include Taggable include Taggable
include PersonName include PersonName
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers

View File

@@ -12,11 +12,10 @@ class MedicalRelease < ApplicationRecord
include GuardianName include GuardianName
include SecondGuardianName include SecondGuardianName
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers
%i[name contact_info] %i[approved? name contact_info]
end end
end end
@@ -108,6 +107,18 @@ class MedicalRelease < ApplicationRecord
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}" "#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
end end
def approve_by(user)
return unless approved_at.nil?
self.approved_by_user_name = user.full_name
self.approved_by_user_email = user.email
self.approved_at = Time.zone.now
end
def approved?
approved_at.present?
end
private private
def valid_answers def valid_answers

View File

@@ -10,7 +10,6 @@ class MiscRelease < ApplicationRecord
include GuardianName include GuardianName
include GuardianPhotoable include GuardianPhotoable
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers

View File

@@ -8,7 +8,6 @@ class MusicRelease < ApplicationRecord
include Taggable include Taggable
include PersonName include PersonName
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers

View File

@@ -13,18 +13,6 @@ class QrCode
new(url, "#{filename}.png") new(url, "#{filename}.png")
end end
def self.build_from_multiple_contract_templates(contract_templates, project)
account = project.account
locale = I18n.locale
host = AppHost.new.domain_with_port
route = [account, project, :contract_templates, contract_template_ids: contract_templates.ids, locale: I18n.locale, host: AppHost.new.domain_with_port]
url = Rails.application.routes.url_helpers.url_for(route)
filename = [project.account.name, project.name].map(&:parameterize).join("_")
new(url, "#{filename}.png")
end
def initialize(url, filename = "qrcode.png") def initialize(url, filename = "qrcode.png")
@url = url @url = url
@filename = filename @filename = filename

View File

@@ -15,7 +15,6 @@ class TalentRelease < ApplicationRecord
include GuardianName include GuardianName
include SecondGuardianName include SecondGuardianName
include CsvExportable include CsvExportable
include Approvable
class << self class << self
def custom_csv_exportable_headers def custom_csv_exportable_headers
@@ -111,7 +110,7 @@ class TalentRelease < ApplicationRecord
end end
def uses_edl? def uses_edl?
true false
end end
def second_guardian_present? def second_guardian_present?

View File

@@ -6,5 +6,5 @@ class TaskRequest < ApplicationRecord
scope :order_by_recent, -> { order(created_at: :desc) } scope :order_by_recent, -> { order(created_at: :desc) }
validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }, allow_blank: true validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }
end end

View File

@@ -30,12 +30,4 @@ class AcquiredMediaReleasePolicy < ApplicationPolicy
def download_multiple? def download_multiple?
true true
end end
def review?
user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -26,12 +26,4 @@ class AppearanceReleasePolicy < ReleasePolicy
def download_multiple? def download_multiple?
true true
end end
def review?
user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -18,12 +18,4 @@ class BroadcastPolicy < ApplicationPolicy
def update? def update?
true true
end end
def destroy_file?
if user.nil? || user.user.nil?
return false
end
user.manager? || user.account_manager?
end
end end

View File

@@ -34,16 +34,4 @@ class LocationReleasePolicy < ReleasePolicy
def download_multiple? def download_multiple?
true true
end end
def review?
user.account_manager?
end
def sign_amendment?
user.manager? || user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -34,12 +34,4 @@ class MaterialReleasePolicy < ReleasePolicy
def download_multiple? def download_multiple?
true true
end end
def review?
user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -38,12 +38,4 @@ class MiscReleasePolicy < ReleasePolicy
def download_multiple? def download_multiple?
download_single? download_single?
end end
def review?
user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -22,12 +22,4 @@ class MusicReleasePolicy < ReleasePolicy
def download_multiple? def download_multiple?
true true
end end
def review?
user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -34,12 +34,4 @@ class TalentReleasePolicy < ReleasePolicy
def download_multiple? def download_multiple?
true true
end end
def review?
user.account_manager?
end
def approve?
review?
end
end end

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(acquired_media_release) %>"> <tr id="<%= dom_id(acquired_media_release) %>">
<td data-behavior="select"><%= check_box_tag "acquired_media_release_ids[]", acquired_media_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "acquired_media_release_ids[]", acquired_media_release.id, false %></td>
<td class="text-center">
<% if acquired_media_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(acquired_media_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: acquired_media_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<%= acquired_media_release.name %> <%= acquired_media_release.name %>
</td> </td>
@@ -43,9 +35,6 @@
<% if policy(Contract).show? && (acquired_media_release.contract.attached? || acquired_media_release.contract_template.present?) %> <% if policy(Contract).show? && (acquired_media_release.contract.attached? || acquired_media_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [acquired_media_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [acquired_media_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>
<% if policy(AcquiredMediaRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_acquired_media_release_approvals_path(acquired_media_release), class: "dropdown-item" %>
<% end %>
<% if policy(acquired_media_release).edit? %> <% if policy(acquired_media_release).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, acquired_media_release], class: "dropdown-item" %> <%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, acquired_media_release], class: "dropdown-item" %>
<% end %> <% end %>

View File

@@ -26,7 +26,6 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "acquired_media_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "acquired_media_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th><%= AcquiredMediaRelease.human_attribute_name(:name) %></th> <th><%= AcquiredMediaRelease.human_attribute_name(:name) %></th>
<th><%= t(".table_headers.file_infos_count") %></th> <th><%= t(".table_headers.file_infos_count") %></th>
<th><%= t(".table_headers.notes") %></th> <th><%= t(".table_headers.notes") %></th>

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(appearance_release) %>"> <tr id="<%= dom_id(appearance_release) %>">
<td data-behavior="select"><%= check_box_tag "appearance_release_ids[]", appearance_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "appearance_release_ids[]", appearance_release.id, false %></td>
<td class="text-center">
<% if appearance_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(appearance_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: appearance_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<% if appearance_release.photo.attached? %> <% if appearance_release.photo.attached? %>
<%= image_tag medium_variant(appearance_release.photo) %> <%= image_tag medium_variant(appearance_release.photo) %>
@@ -47,9 +39,6 @@
<% if policy(Contract).show? && (appearance_release.contract.attached? || appearance_release.contract_template.present?) %> <% if policy(Contract).show? && (appearance_release.contract.attached? || appearance_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [appearance_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [appearance_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>
<% if policy(AppearanceRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_appearance_release_approvals_path(appearance_release), class: "dropdown-item" %>
<% end %>
<% if policy(appearance_release).edit? %> <% if policy(appearance_release).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, appearance_release], class: "dropdown-item" %> <%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, appearance_release], class: "dropdown-item" %>
<% end %> <% end %>

View File

@@ -44,7 +44,6 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "appearance_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "appearance_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th></th> <th></th>
<th><%= AppearanceRelease.human_attribute_name(:person_name) %></th> <th><%= AppearanceRelease.human_attribute_name(:person_name) %></th>
<th><%= AppearanceRelease.human_attribute_name(:contact_info) %></th> <th><%= AppearanceRelease.human_attribute_name(:contact_info) %></th>

View File

@@ -1,11 +1,11 @@
<div class="card shadow-sm"> <div class="card shadow-sm">
<%= card_header text: t(".heading", release_type: @releasable_param.name.titleize), close_action_path: [@project, "#{@releasable_param.name.pluralize}"] %> <%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
<div class="card-body"> <div class="card-body">
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@releasable, :contracts, format: "pdf"] %>" width="90%" height="1200" /> <embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@medical_release, :contracts, format: "pdf"] %>" width="90%" height="1200" />
<%= bootstrap_form_with model: @releasable, method: :post, url: public_send("#{@releasable_param.name}_approvals_path", @releasable), local: true do |form| %> <%= bootstrap_form_with model: @medical_release, method: :post, url: medical_release_approvals_path(@medical_release), local: true do |form| %>
<div class="row align-items-center text-center mt-4"> <div class="row align-items-center text-center mt-4">
<%= link_to t("shared.cancel"), [@releasable.project, "#{@releasable_param.name.pluralize}"], class: "col-3 text-reset" %> <%= link_to t("shared.cancel"), [@medical_release.project, :medical_releases], class: "col-3 text-reset" %>
<div class="col-9"> <div class="col-9">
<%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %> <%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %>
</div> </div>

View File

@@ -3,9 +3,6 @@
<td> <td>
<%= broadcast.name %> <%= broadcast.name %>
</td> </td>
<td>
<%= broadcast.shoot_location_time_zone %>
</td>
<td> <td>
<%= broadcast.status.titleize %> <%= broadcast.status.titleize %>
</td> </td>

View File

@@ -1,25 +1,12 @@
<div class="row"> <li class="my-2" id="<%= dom_id(file) %>">
<% broadcast = file.record %> <% if file.variable? %>
<% show_delete = controller.class.module_parent.to_s == "Public" ? false : policy(broadcast).destroy_file? %> <%= link_to image_tag(file.variant(resize_and_pad: [300, 300, background: "#F7F8F9"]), class: "bg-light img-thumbnail img-fluid"), file, target: "_blank" %>
<% file_class = show_delete ? "col-8" : "col-12" %> <% else %>
<div class="<%= file_class %>"> <div class="border rounded bg-light text-muted d-flex justify-content-center align-items-center fix-h-and-w">
<li class="my-2" id="<%= dom_id(file) %>"> <%= link_to file, target: "_blank" do %>
<% if file.variable? %> <%= fa_icon("file", style: "font-size: 2rem") %>
<%= link_to image_tag(file.variant(resize_and_pad: [300, 300, background: "#F7F8F9"]), class: "bg-light img-thumbnail img-fluid"), file, target: "_blank" %> <div class="mt-2"><%= file.filename %></div>
<% else %>
<div class="border rounded bg-light text-muted d-flex justify-content-center align-items-center img-fluid fix-h-and-w">
<%= link_to file, target: "_blank" do %>
<%= fa_icon("file", style: "font-size: 2rem") %>
<div class="mt-2"><%= file.filename %></div>
<% end %>
</div>
<% end %> <% end %>
</li>
</div>
<% if show_delete %>
<div class="col-4 align-self-center p-0 m-0">
<% url = url_for [:destroy_file, broadcast.project, broadcast, { file_id: file.id }] %>
<%= link_to fa_icon("trash fw", text: t('.actions.delete_file')), url, class: "btn btn-danger", remote: true, method: :delete, data: { confirm: t('.confirm_delete') } %>
</div> </div>
<% end %> <% end %>
</div> </li>

View File

@@ -2,7 +2,6 @@
<%= bootstrap_form_with model: model, local: true do |form| %> <%= bootstrap_form_with model: model, local: true do |form| %>
<%= form.text_field :name %> <%= form.text_field :name %>
<%= form.time_zone_select(:shoot_location_time_zone, nil, label: "Time zone of shoot location") %>
<div class="row align-items-center text-center mt-4"> <div class="row align-items-center text-center mt-4">
<%= link_to t("shared.cancel"), [project, :broadcasts], class: "col-3 text-reset" %> <%= link_to t("shared.cancel"), [project, :broadcasts], class: "col-3 text-reset" %>

View File

@@ -1,7 +1,7 @@
<% if broadcast.streamer_recording? && broadcast.active? %> <% if broadcast.streamer_recording? && broadcast.active? %>
<div id="broadcast_video" class="embed-responsive-item" data-video-type="stream"></div> <div id="broadcast_video" class="embed-responsive-item"></div>
<% else %> <% else %>
<div id="broadcast_video" class="embed-responsive-item" data-video-type="stream"> <div id="broadcast_video" class="embed-responsive-item">
<table class="w-100 h-100 bg-secondary"> <table class="w-100 h-100 bg-secondary">
<tbody> <tbody>
<tr> <tr>

View File

@@ -22,7 +22,6 @@
<tr> <tr>
<th></th> <th></th>
<th><%= t(".table_headers.broadcast_name") %></th> <th><%= t(".table_headers.broadcast_name") %></th>
<th><%= t(".table_headers.broadcast_time_zone") %></th>
<th><%= t(".table_headers.broadcast_status") %></th> <th><%= t(".table_headers.broadcast_status") %></th>
<th><%= t(".table_headers.broadcast_created_at") %></th> <th><%= t(".table_headers.broadcast_created_at") %></th>
<th></th> <th></th>
@@ -33,7 +32,7 @@
<%= render @broadcasts %> <%= render @broadcasts %>
<% else %> <% else %>
<tr> <tr>
<td colspan="6" class="py-4 text-center text-muted"><%= t(".empty") %></td> <td colspan="5" class="py-4 text-center text-muted"><%= t(".empty") %></td>
</tr> </tr>
<% end %> <% end %>
</tbody> </tbody>

View File

@@ -33,10 +33,10 @@
<%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %> <%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink"> <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<h5 class="dropdown-header">Live Streams</h5> <h5 class="dropdown-header">Live Streams</h5>
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", data: { behavior: "play_stream"}, class: "dropdown-item active" %> <%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", class: "dropdown-item active" %>
<% @multi_view_broadcasts.each do |broadcast| %> <% @multi_view_broadcasts.each do |broadcast| %>
<% if broadcast.id != @broadcast.id %> <% if broadcast.id != @broadcast.id %>
<%= link_to broadcast.name.titleize, broadcast.url, data: { behavior: "play_stream"}, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %> <%= link_to broadcast.name.titleize, broadcast.url, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
<% end %> <% end %>
<% end %> <% end %>
<h5 class="dropdown-header">Previous Sessions</h5> <h5 class="dropdown-header">Previous Sessions</h5>
@@ -102,7 +102,6 @@
<i class="fa fa-clipboard"></i> <i class="fa fa-clipboard"></i>
Copy URL Copy URL
</button> </button>
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "btn btn-danger" %>
</div> </div>
<% else %> <% else %>
<input type="text" class="form-control" value="<%= broadcast_url(@broadcast.token) %>" readonly> <input type="text" class="form-control" value="<%= broadcast_url(@broadcast.token) %>" readonly>
@@ -111,7 +110,6 @@
<i class="fa fa-clipboard"></i> <i class="fa fa-clipboard"></i>
Copy URL Copy URL
</button> </button>
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "btn btn-danger" %>
</div> </div>
<% end %> <% end %>
</div> </div>

View File

@@ -1,5 +1,4 @@
<tr> <tr>
<td data-behavior="select_contract_template"><%= check_box_tag "contract_template_ids[]", contract_template.id, false %></td>
<td> <td>
<%= contract_template.name %> <%= contract_template.name %>
</td> </td>

View File

@@ -2,7 +2,7 @@
<%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %> <%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %>
<div class="form-row"> <div class="form-row">
<%= form.text_field :name, wrapper_class: "col-sm-6" %> <%= form.text_field :name, wrapper_class: "col-sm-6" %>
<%= form.select :release_type, options_for_release_type_select(project, @release_type), { wrapper_class: "col-sm-6" }, data: { toggle: "collapse-select", target_show_values_mapping: { "#guardian_clause": %w(appearance talent misc medical), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical misc), "#amendment_clause": %w(location) } }, class: "form-control custom-select" %> <%= form.select :release_type, options_for_release_type_select(project, @release_type), { wrapper_class: "col-sm-6" }, data: { toggle: "collapse-select", target_show_values_mapping: { "#guardian_clause": %w(appearance talent misc medical), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical misc) } }, class: "form-control custom-select" %>
</div> </div>
<div class="form-row mb-3"> <div class="form-row mb-3">
<%= form.radio_button :accessibility, :public_template, label: "Public", wrapper_class: "mr-3" %> <%= form.radio_button :accessibility, :public_template, label: "Public", wrapper_class: "mr-3" %>
@@ -29,11 +29,6 @@
<%= form.rich_text_area :guardian_clause %> <%= form.rich_text_area :guardian_clause %>
<% end %> <% end %>
</div> </div>
<div id="amendment_clause">
<%= form.form_group do %>
<%= form.rich_text_area :amendment_clause %>
<% end %>
</div>
<div id="signature_legal_text"> <div id="signature_legal_text">
<%= form.form_group do %> <%= form.form_group do %>
<%= form.rich_text_area :signature_legal_text %> <%= form.rich_text_area :signature_legal_text %>

View File

@@ -5,14 +5,12 @@
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :contract_template], class: "btn btn-primary" %> <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :contract_template], class: "btn btn-primary" %>
<%= link_to fa_icon("clone", text: t(".actions.import")), [:new, @project, :release_template_imports], class: "btn btn-secondary" %> <%= link_to fa_icon("clone", text: t(".actions.import")), [:new, @project, :release_template_imports], class: "btn btn-secondary" %>
<% end %> <% end %>
<%= link_to "Group QR Code", "javascript:void(0);", class: "btn btn-light border disabled", id: "group_qr_code", data: { project_id: @project.id, contract_template_ids: [] } %>
</p> </p>
<div class="border bg-white rounded shadow-sm pb-3 table-responsive"> <div class="border bg-white rounded shadow-sm pb-3 table-responsive">
<table class="table table-striped tr-px-4 align-all-middle"> <table class="table table-striped tr-px-4 align-all-middle">
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th></th>
<th><%= ContractTemplate.human_attribute_name(:name) %></th> <th><%= ContractTemplate.human_attribute_name(:name) %></th>
<th><%= ContractTemplate.human_attribute_name(:fee) %></th> <th><%= ContractTemplate.human_attribute_name(:fee) %></th>
<th><%= t(".table_headers.release_type") %></th> <th><%= t(".table_headers.release_type") %></th>

View File

@@ -6,8 +6,7 @@
<%= 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(ContractTemplate).new? %> <% if policy(ContractTemplate).new? %>
<%= link_to t(".actions.create_template"), [:new, @project, :contract_template], class: "btn btn-success border align-self-center h-50 mr-2 pb-2" %> <%= link_to t(".actions.create_template"), [:new, @project, :contract_template], class: "btn btn-success border align-self-center h-50 pb-2" %>
<%= link_to t(".actions.import_template"), [:new, @project, :release_template_imports], class: "btn btn-light border align-self-center h-50 pb-2" %>
<% end %> <% end %>
</div> </div>

View File

@@ -1,19 +0,0 @@
<% if preview %>
<h1>PREVIEW ONLY</h1>
<% end %>
<p class="heading"><strong><u><%= t '.heading' %></u></strong></p>
<dl>
<%= description_list_pair "#{t('.description_labels.amendment_clause')}:", releasable.contract_template.amendment_clause %>
<%= description_list_pair "#{t('.description_labels.amendment_signer_name')}:", releasable.amendment_signer_name %>
<dt><%= t('.description_labels.amendment_signature') %>:</dt>
<dd>
<% if preview %>
<%= image_tag dummy_signature %>
<% elsif releasable.amendment_signature.attached? %>
<%= image_tag releasable.amendment_signature.variant(auto_orient: true, resize: "200x200") %>
<% end %>
</dd>
</dl>

View File

@@ -7,7 +7,7 @@
<dl> <dl>
<%= description_list_pair t('.description_labels.producer'), releasable.project.account.name %> <%= description_list_pair t('.description_labels.producer'), releasable.project.account.name %>
<%= description_list_pair t('.description_labels.production'), releasable.project.name %> <%= description_list_pair t('.description_labels.production'), releasable.project.name %>
<%= description_list_pair t('.description_labels.issued_to'), releasable.name %> <%= description_list_pair t('.description_labels.employee_issued_to'), releasable.name %>
<%= description_list_pair t('.description_labels.issued_by'), releasable.approved_by_user_name %> <%= description_list_pair t('.description_labels.issued_by'), releasable.approved_by_user_name %>
<%= description_list_pair t('.description_labels.date_issued'), releasable.approved_at %> <%= description_list_pair t('.description_labels.date_issued'), releasable.approved_at %>
</dl> </dl>

View File

@@ -18,14 +18,10 @@
<% end %> <% end %>
</dd> </dd>
<% end %> <% end %>
<%= description_list_pair t(".labels.#{releasable.model_name.param_key}.name", default: "Name"), releasable.name, append: ":" %> <%= description_list_pair_for releasable, :name, append: ":" %>
<% if releasable.model_name == "LocationRelease" %> <%= description_list_pair "Contact Address:", releasable.contact_person.address %>
<%= description_list_pair "Location Address:", releasable.address %> <%= description_list_pair "Contact Phone:", releasable.contact_person.phone %>
<%= description_list_pair "Owner Name", releasable.person_name, append: ":" %> <%= description_list_pair "Contact Email:", releasable.contact_person.email %>
<% end %>
<%= description_list_pair t(".labels.#{releasable.model_name.param_key}.contact_person_address", default: "Contact Address"), releasable.contact_person.address, append: ":" %>
<%= description_list_pair t(".labels.#{releasable.model_name.param_key}.contact_person_phone", default: "Contact Phone"), releasable.contact_person.phone, append: ":" %>
<%= description_list_pair t(".labels.#{releasable.model_name.param_key}.contact_person_email", default: "Contact Email"), releasable.contact_person.email, append: ":" %>
<% if releasable.model_name == "AppearanceRelease" %> <% if releasable.model_name == "AppearanceRelease" %>
<%= description_list_pair "Person Date of Birth:", releasable&.person_date_of_birth&.strftime("%D") %> <%= description_list_pair "Person Date of Birth:", releasable&.person_date_of_birth&.strftime("%D") %>
<% end %> <% end %>

View File

@@ -26,13 +26,7 @@
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %> <%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
</div> </div>
<% if releasable.respond_to?(:amendment_signed?) && releasable.amendment_signed? %> <% if releasable.class == MedicalRelease && releasable.approved? %>
<div class="page">
<%= render "contracts/amendment_page", releasable: releasable, preview: preview %>
</div>
<%end %>
<% if releasable.respond_to?(:approved?) && releasable.approved? %>
<div class="page"> <div class="page">
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %> <%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
</div> </div>

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(location_release) %>"> <tr id="<%= dom_id(location_release) %>">
<td data-behavior="select"><%= check_box_tag "location_release_ids[]", location_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "location_release_ids[]", location_release.id, false %></td>
<td class="text-center">
<% if location_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(location_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: location_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<% if location_release.photo.attached? %> <% if location_release.photo.attached? %>
<%= image_tag medium_variant(location_release.photo), class: "img-fluid" %> <%= image_tag medium_variant(location_release.photo), class: "img-fluid" %>
@@ -30,17 +22,6 @@
<td> <td>
<%= location_release.signed_on %> <%= location_release.signed_on %>
</td> </td>
<td class="text-center">
<% if location_release.amendment_signed? %>
<i class="fa fa-check-square-o text-dark"
data-toggle="tooltip"
title="<%= t '.messages.amendment_signed_tooltip' %>"></i>
<% elsif location_release.amendment_signable? %>
<i class="fa fa-square-o"
data-toggle="tooltip"
title="<%= t '.messages.amendment_not_signed_tooltip' %>"></i>
<% end %>
</td>
<td class="text-right"> <td class="text-right">
<div class="btn-group"> <div class="btn-group">
@@ -55,15 +36,9 @@
<% if policy(location_release).edit_photos? %> <% if policy(location_release).edit_photos? %>
<%= link_to fa_icon("picture-o fw", text: "Photos"), [:edit, location_release, :photos], class: "dropdown-item" %> <%= link_to fa_icon("picture-o fw", text: "Photos"), [:edit, location_release, :photos], class: "dropdown-item" %>
<% end %> <% end %>
<% if policy(location_release).sign_amendment? && location_release.amendment_signable? && !location_release.amendment_signed? %>
<%= link_to fa_icon("file-text fw", text: t('.actions.sign_amendment')), [:new, location_release.project.account, location_release.project, location_release.contract_template, location_release, :amendment], class: "dropdown-item", target: "_blank" %>
<% end %>
<% if policy(Contract).show? && (location_release.contract.attached? || location_release.contract_template.present?) %> <% if policy(Contract).show? && (location_release.contract.attached? || location_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [location_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [location_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>
<% if policy(LocationRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_location_release_approvals_path(location_release), class: "dropdown-item" %>
<% end %>
<% if policy(location_release).edit? %> <% if policy(location_release).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, location_release], class: "dropdown-item" %> <%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, location_release], class: "dropdown-item" %>
<% end %> <% end %>

View File

@@ -26,14 +26,13 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "location_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "location_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th></th> <th></th>
<th><%= t(".table_headers.name") %></th> <th><%= LocationRelease.human_attribute_name(:name) %></th>
<th><%= t(".table_headers.address") %> <th><%= t(".table_headers.address") %>
<th><%= t(".table_headers.notes") %></th> <th><%= t(".table_headers.notes") %></th>
<th><%= t(".table_headers.tags") %></th> <th><%= t(".table_headers.tags") %></th>
<th><%= t(".table_headers.signed_at") %></th> <th><%= t(".table_headers.signed_at") %></th>
<th><%= t(".table_headers.amendment_signed") %></th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(material_release) %>"> <tr id="<%= dom_id(material_release) %>">
<td data-behavior="select"><%= check_box_tag "material_release_ids[]", material_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "material_release_ids[]", material_release.id, false %></td>
<td class="text-center">
<% if material_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(material_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: material_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<% if material_release.photo.attached? %> <% if material_release.photo.attached? %>
<%= image_tag medium_variant(material_release.photo), class: "img-fluid" %> <%= image_tag medium_variant(material_release.photo), class: "img-fluid" %>
@@ -44,9 +36,6 @@
<% if policy(Contract).show? && (material_release.contract.attached? || material_release.contract_template.present?) %> <% if policy(Contract).show? && (material_release.contract.attached? || material_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [material_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [material_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>
<% if policy(MaterialRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_material_release_approvals_path(material_release), class: "dropdown-item" %>
<% end %>
<% if policy(material_release).edit? %> <% if policy(material_release).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, material_release], class: "dropdown-item" %> <%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, material_release], class: "dropdown-item" %>
<% end %> <% end %>

View File

@@ -26,7 +26,6 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "material_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "material_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th></th> <th></th>
<th><%= MaterialRelease.human_attribute_name(:name) %></th> <th><%= MaterialRelease.human_attribute_name(:name) %></th>
<th><%= t(".table_headers.notes") %></th> <th><%= t(".table_headers.notes") %></th>

View File

@@ -2,7 +2,7 @@
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
<td class="text-center"> <td class="text-center">
<% if medical_release.approved? %> <% if medical_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(medical_release) %> <% tooltip_user_data = get_approval_data_for_medical_release(medical_release) %>
<i class="fa fa-check-circle fa-2x text-success" <i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip" data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i> title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(misc_release) %>"> <tr id="<%= dom_id(misc_release) %>">
<td data-behavior="select"><%= check_box_tag "misc_release_ids[]", misc_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "misc_release_ids[]", misc_release.id, false %></td>
<td class="text-center">
<% if misc_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(misc_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: misc_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<% if misc_release.photo.attached? %> <% if misc_release.photo.attached? %>
<%= image_tag medium_variant(misc_release.photo), class: "img-fluid" %> <%= image_tag medium_variant(misc_release.photo), class: "img-fluid" %>
@@ -44,9 +36,6 @@
<% if policy(misc_release.tags).new? %> <% if policy(misc_release.tags).new? %>
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, misc_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %> <%= link_to fa_icon("tags fw", text: "Tags"), [:new, misc_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
<% end %> <% end %>
<% if policy(MiscRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_misc_release_approvals_path(misc_release), class: "dropdown-item" %>
<% end %>
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (misc_release.contract.attached? || misc_release.contract_template.present?) %> <% if policy(MedicalRelease).download_single? && policy(Contract).show? && (misc_release.contract.attached? || misc_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [misc_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [misc_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>

View File

@@ -22,7 +22,6 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "misc_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "misc_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th></th> <th></th>
<th><%= MiscRelease.human_attribute_name(:person_name) %></th> <th><%= MiscRelease.human_attribute_name(:person_name) %></th>
<th><%= MiscRelease.human_attribute_name(:contact_info) %></th> <th><%= MiscRelease.human_attribute_name(:contact_info) %></th>

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(music_release) %>"> <tr id="<%= dom_id(music_release) %>">
<td data-behavior="select"><%= check_box_tag "music_release_ids[]", music_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "music_release_ids[]", music_release.id, false %></td>
<td class="text-center">
<% if music_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(music_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: music_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<%= music_release.name %> <%= music_release.name %>
</td> </td>
@@ -44,9 +36,6 @@
<% if policy(Contract).show? && (music_release.contract.attached? || music_release.contract_template.present?) %> <% if policy(Contract).show? && (music_release.contract.attached? || music_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [music_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [music_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>
<% if policy(MusicRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_music_release_approvals_path(music_release), class: "dropdown-item" %>
<% end %>
<% if policy(music_release).edit? %> <% if policy(music_release).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, music_release], class: "dropdown-item" %> <%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, music_release], class: "dropdown-item" %>
<% end %> <% end %>

View File

@@ -25,7 +25,6 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "music_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "music_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th><%= MusicRelease.human_attribute_name(:name) %></th> <th><%= MusicRelease.human_attribute_name(:name) %></th>
<th><%= t(".table_headers.file_infos_count") %></th> <th><%= t(".table_headers.file_infos_count") %></th>
<th><%= t(".table_headers.composers_count") %></th> <th><%= t(".table_headers.composers_count") %></th>

View File

@@ -1,3 +0,0 @@
<% message = local_assigns[:already_signed] ? t('.amendment_already_signed_message') : t('.amendment_signed_message') %>
<% alert_type = local_assigns[:already_signed] ? "alert-warning" : "alert-success" %>
<p class="alert <%= alert_type %> p-3 lead text-center"><%= message %></p>

View File

@@ -1,30 +0,0 @@
<button type="button" class="btn btn-success mb-3" data-behavior="clipboard" href="<%= polymorphic_url [:new, @account, @project, @contract_template, @release, :amendment] %>">
<i class="fa fa-clipboard"></i>
<%= t '.copy_url' %>
</button>
<div class="card shadow-sm">
<div class="card-body">
<%= errors_summary_for @release %>
<%= bootstrap_form_with model: @release, method: :post, url: public_send("account_project_contract_template_#{@contract_template.release_type}_release_amendments_path"), local: true do |form| %>
<%= card_field_set_tag t(".amendment.heading") do %>
<p><%= @contract_template.amendment_clause %></p>
<% end %>
<hr>
<div class="form-row">
<%= form.text_field :amendment_signer_name, required: true, wrapper_class: "col-sm-6" %>
</div>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", signature_field: :amendment_signature_base64, form: form %>
<% end %>
<div class="mt-5">
<%= form.button t("shared.submit_release_long"), class: "btn btn-block btn-lg btn-success", data: { disable_with: t("shared.disable_with") } %>
</div>
<% end %>
</div>
</div>

View File

@@ -1,8 +0,0 @@
<tr>
<td>
<%= contract_template.name %>
</td>
<td class="text-right" nowrap>
<%= link_to t(".actions.sign"), [:new, contract_template.project.account, contract_template.project, contract_template, "#{contract_template.release_type}_release"], class: "btn btn-sm btn-primary", target: :_blank %>
</td>
</tr>

View File

@@ -1,27 +0,0 @@
<% content_for :header do %>
<header class="container-fluid py-3 border-bottom sticky-top bg-light">
<div class="row align-items-center justify-content-center">
<div class="col-4 text-center">
<h1 class="h4 m-0"><%= @account.name %></h1>
</div>
</div>
</header>
<% end %>
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
<table class="table table-striped tr-px-4 align-all-middle">
<thead class="thead-light">
<tr>
<th><%= ContractTemplate.human_attribute_name(:name) %></th>
<th></th>
</tr>
</thead>
<tbody>
<%= render @contract_templates %>
</tbody>
</table>
</div>
<div class="mt-3">
<%= will_paginate @contract_templates %>
</div>

View File

@@ -1,4 +1,3 @@
<% signature_field = local_assigns[:signature_field] ? local_assigns[:signature_field] : :signature_base64 %>
<canvas class="border bg-light w-100" data-behavior="digital-signature" data-signature-input="[data-ujs-target=signature-input]" style="height: 150px"></canvas> <canvas class="border bg-light w-100" data-behavior="digital-signature" data-signature-input="[data-ujs-target=signature-input]" style="height: 150px"></canvas>
<% if local_assigns[:instruction] %> <% if local_assigns[:instruction] %>
@@ -7,7 +6,7 @@
</small> </small>
<% end %> <% end %>
<%= form.hidden_field signature_field, data: { ujs_target: "signature-input" } %> <%= form.hidden_field :signature_base64, data: { ujs_target: "signature-input" } %>
<div class="text-right"> <div class="text-right">
<%= button_tag class: "btn btn-sm btn-danger", data: { behavior: "clear-digital-signature" } do %> <%= button_tag class: "btn btn-sm btn-danger", data: { behavior: "clear-digital-signature" } do %>
<%= fa_icon "refresh" %> <%= t "shared.clear" %> <%= fa_icon "refresh" %> <%= t "shared.clear" %>

View File

@@ -1,13 +1,5 @@
<tr id="<%= dom_id(talent_release) %>"> <tr id="<%= dom_id(talent_release) %>">
<td data-behavior="select"><%= check_box_tag "talent_release_ids[]", talent_release.id, false %></td> <td data-behavior="select"><%= check_box_tag "talent_release_ids[]", talent_release.id, false %></td>
<td class="text-center">
<% if talent_release.approved? %>
<% tooltip_user_data = get_approval_data_for_releasable(talent_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: talent_release.approved_at %>"></i>
<% end %>
</td>
<td> <td>
<% if talent_release.photo.attached? %> <% if talent_release.photo.attached? %>
<%= image_tag medium_variant(talent_release.photo), class: "img-fluid" %> <%= image_tag medium_variant(talent_release.photo), class: "img-fluid" %>
@@ -50,9 +42,6 @@
<% if policy(Contract).show? && (talent_release.contract.attached? || talent_release.contract_template.present?) %> <% if policy(Contract).show? && (talent_release.contract.attached? || talent_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [talent_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %> <%= link_to fa_icon("download fw", text: "Download"), [talent_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %> <% end %>
<% if policy(TalentRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_talent_release_approvals_path(talent_release), class: "dropdown-item" %>
<% end %>
<% if policy(talent_release).edit? %> <% if policy(talent_release).edit? %>
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, talent_release], class: "dropdown-item" %> <%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, talent_release], class: "dropdown-item" %>
<% end %> <% end %>

View File

@@ -26,7 +26,6 @@
<thead class="thead-light"> <thead class="thead-light">
<tr> <tr>
<th data-behavior="all-selectable"><%= check_box_tag "talent_release_ids[]", false, false %></th> <th data-behavior="all-selectable"><%= check_box_tag "talent_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th></th> <th></th>
<th><%= TalentRelease.human_attribute_name(:person_name) %></th> <th><%= TalentRelease.human_attribute_name(:person_name) %></th>
<th><%= TalentRelease.human_attribute_name(:person_phone) %></th> <th><%= TalentRelease.human_attribute_name(:person_phone) %></th>

View File

@@ -1,19 +1,9 @@
<%= errors_summary_for task_request %> <%= errors_summary_for task_request %>
<%= bootstrap_form_with model: model, url: [@project, @task_request, show_chat: true], local: true do |form| %> <%= bootstrap_form_with model: model, url: [@project, @task_request, show_chat: true], local: true do |form| %>
<div class="alert alert-info text-center text-md-left">
<div class="d-flex"> <%= fa_icon "info-circle" %>
<div class="row"> <strong><%= t '.info_message' %></strong>
<div class="col-xl-10 col-12">
<div class="alert alert-info text-center text-md-left">
<%= fa_icon "info-circle" %>
<strong><%= t '.info_message' %></strong>
</div>
</div>
<div class="col-xl-2 col-12">
<%= form.submit t('.actions.chat_now'), class: "btn btn-block btn-warning pt-4 pb-4 mb-1", data: { disable_with: t("shared.disable_with") } %>
</div>
</div>
</div> </div>
<%= form.text_area :description, label: t('.labels.description') %> <%= form.text_area :description, label: t('.labels.description') %>

View File

@@ -1,6 +1,3 @@
unless Rails.env.test? unless Rails.env.test?
allowed_hosts = ENV['ALLOWED_HOSTS'].to_s.split(",")
Rails.application.config.hosts << AppHost.new.domain Rails.application.config.hosts << AppHost.new.domain
Rails.application.config.hosts += allowed_hosts
end end

View File

@@ -29,9 +29,6 @@ en:
acquired_media_release: acquired_media_release:
actions: actions:
manage: Manage manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
no_media: No Media no_media: No Media
create: create:
notice: The acquired media release has been created notice: The acquired media release has been created
@@ -52,7 +49,6 @@ en:
search: Search search: Search
empty: Acquired Media Releases will appear here empty: Acquired Media Releases will appear here
table_headers: table_headers:
approved: Approved
file_infos_count: No. Files file_infos_count: No. Files
name: Name name: Name
notes: Notes notes: Notes
@@ -125,9 +121,6 @@ en:
appearance_release: appearance_release:
actions: actions:
manage: Manage manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
no_photos: Needs Photo no_photos: Needs Photo
create: create:
failed_import: Failed to create appearance release for files listed below failed_import: Failed to create appearance release for files listed below
@@ -159,7 +152,6 @@ en:
empty: Appearance Releases will appear here empty: Appearance Releases will appear here
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release
table_headers: table_headers:
approved: Approved
contact_info: Contact info contact_info: Contact info
name: Name name: Name
notes: Notes notes: Notes
@@ -184,11 +176,11 @@ en:
team_member: Team Member team_member: Team Member
approvals: approvals:
create: create:
release_approved: "%{release_type} has been approved" release_approved: Medical release has been approved
new: new:
actions: actions:
approve: Approve approve: Approve
heading: "Review %{release_type}" heading: Review Medical Release
blank_contracts: blank_contracts:
new: new:
number_of_copies_label: Number of copies number_of_copies_label: Number of copies
@@ -214,10 +206,6 @@ en:
destroy: destroy:
alert: A live stream has been deleted alert: A live stream has been deleted
api_error: Something went wrong, please try again later after some time api_error: Something went wrong, please try again later after some time
file:
actions:
delete_file: Delete
confirm_delete: Are you sure?
index: index:
actions: actions:
new: Create New Live Stream new: Create New Live Stream
@@ -226,13 +214,9 @@ en:
broadcast_created_at: Created Date broadcast_created_at: Created Date
broadcast_name: Name broadcast_name: Name
broadcast_status: Status broadcast_status: Status
broadcast_time_zone: Time Zone of Shoot Location
new: new:
heading: heading:
Create Live Stream Create Live Stream
show:
actions:
reset_url: Reset URL
splash: splash:
actions: actions:
book_demo: Schedule a Demo book_demo: Schedule a Demo
@@ -251,8 +235,6 @@ en:
share_stream: Share live stream link with clients share_stream: Share live stream link with clients
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
stream_multiple_cameras: Stream multiple cameras at one time stream_multiple_cameras: Stream multiple cameras at one time
update:
reset_notice: The Share URL has been reset, and the previous URL will no longer work. Please click "Copy URL" and share it again with those who you want to have access to this live stream
bulk_taggings: bulk_taggings:
new_bulk_tag_modal: new_bulk_tag_modal:
submit: Add submit: Add
@@ -311,7 +293,6 @@ en:
actions: actions:
book_demo: Schedule a Demo book_demo: Schedule a Demo
create_template: Create New Release Template create_template: Create New Release Template
import_template: Import Template
headings: headings:
benefits: Benefits benefits: Benefits
how_it_works: How It Works how_it_works: How It Works
@@ -328,17 +309,11 @@ en:
update: update:
notice: The release template has been updated notice: The release template has been updated
contracts: contracts:
amendment_page:
description_labels:
amendment_clause: Amendment Clause
amendment_signature: Amendment Signature
amendment_signer_name: Amendment Signer Name
heading: Amendment
for_office_use_only: for_office_use_only:
description_labels: description_labels:
date_issued: Date Issued date_issued: Date Issued
employee_issued_to: Employee Issued To
issued_by: Issued By issued_by: Issued By
issued_to: Issued To
producer: Producer producer: Producer
production: Production production: Production
heading: For Office Use Only heading: For Office Use Only
@@ -358,12 +333,6 @@ en:
signature_page: signature_page:
heading: Signature Page heading: Signature Page
instructions: "By signing this signature page, as of the date listed below, I hereby agree, acknowledge and accept the terms and conditions listed in this %{releasable_name}." instructions: "By signing this signature page, as of the date listed below, I hereby agree, acknowledge and accept the terms and conditions listed in this %{releasable_name}."
labels:
location_release:
contact_person_address: Owner Address
contact_person_email: Owner Email
contact_person_phone: Owner Phone
name: Location Name
directories: directories:
destroy: destroy:
alert: The folder has been deleted alert: The folder has been deleted
@@ -422,7 +391,6 @@ en:
helpers: helpers:
help: help:
contract_template: contract_template:
amendment_clause: Leave blank if not required for this contract
fee: Leave at $0.00 for no-fee fee: Leave at $0.00 for no-fee
guardian_clause: Leave blank if not required for this contract guardian_clause: Leave blank if not required for this contract
signature_legal_text: Leave blank if not required for this contract signature_legal_text: Leave blank if not required for this contract
@@ -789,21 +757,13 @@ en:
empty: Location Releases will appear here empty: Location Releases will appear here
table_headers: table_headers:
address: Address address: Address
amendment_signed: Amendment name: Name
approved: Approved
name: Location Name
notes: Notes notes: Notes
signed_at: Date Signed signed_at: Date Signed
tags: Tags tags: Tags
location_release: location_release:
actions: actions:
manage: Manage manage: Manage
review: Review
sign_amendment: Sign Amendment
messages:
amendment_not_signed_tooltip: Amendment not yet signed
amendment_signed_tooltip: Amendment Signed
approved_tooltip: Approved by %{user} on %{timestamp}
no_photos: Needs Photo no_photos: Needs Photo
new: new:
heading: Import Location Release heading: Import Location Release
@@ -832,7 +792,6 @@ en:
search: Search search: Search
empty: Material Releases will appear here empty: Material Releases will appear here
table_headers: table_headers:
approved: Approved
name: Name name: Name
notes: Notes notes: Notes
signed_at: Date Signed signed_at: Date Signed
@@ -840,9 +799,6 @@ en:
material_release: material_release:
actions: actions:
manage: Manage manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
no_photos: Needs Photo no_photos: Needs Photo
new: new:
heading: Import Material Release (Products / Logos) heading: Import Material Release (Products / Logos)
@@ -879,7 +835,6 @@ en:
search: Search search: Search
empty: Misc Releases will appear here empty: Misc Releases will appear here
table_headers: table_headers:
approved: Approved
contact_info: Contact info contact_info: Contact info
name: Person name name: Person name
notes: Notes notes: Notes
@@ -888,9 +843,6 @@ en:
misc_release: misc_release:
actions: actions:
manage: Manage manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
music_releases: music_releases:
create: create:
notice: The music release has been created notice: The music release has been created
@@ -917,7 +869,6 @@ en:
search: Search search: Search
empty: Music Releases will appear here empty: Music Releases will appear here
table_headers: table_headers:
approved: Approved
composers_count: No. Composers composers_count: No. Composers
file_infos_count: No. Files file_infos_count: No. Files
name: Name name: Name
@@ -928,9 +879,6 @@ en:
music_release: music_release:
actions: actions:
manage: Manage manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
new: new:
heading: Import Music Release heading: Import Music Release
update: update:
@@ -1049,16 +997,6 @@ en:
heading: Licensor/Owner Contact Information heading: Licensor/Owner Contact Information
signature: signature:
heading: Signature heading: Signature
amendments:
create:
amendment_already_signed_message: Release amendment is already signed!
amendment_signed_message: Release amendment signed successfully! Thank you
new:
amendment:
heading: Amendment
copy_url: Copy sign amendment URL
signature:
heading: Signature
appearance_releases: appearance_releases:
create: create:
notice: Your release has been signed. Thank you! notice: Your release has been signed. Thank you!
@@ -1098,16 +1036,6 @@ en:
broadcasts: broadcasts:
show: show:
alert: That broadcast is no longer available alert: That broadcast is no longer available
contract_templates:
contract_template:
actions:
sign: Sign
no_fee: No Fee
index:
heading: Release Templates
table_headers:
release_type: Type of Release
signed_release_count: No. Signed Releases
location_releases: location_releases:
create: create:
notice: Your release has been signed. Thank you! notice: Your release has been signed. Thank you!
@@ -1340,7 +1268,6 @@ en:
search: Search search: Search
empty: Talent Releases will appear here empty: Talent Releases will appear here
table_headers: table_headers:
approved: Approved
email: Email email: Email
name: Name name: Name
notes: Notes notes: Notes
@@ -1352,9 +1279,6 @@ en:
talent_release: talent_release:
actions: actions:
manage: Manage manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
update: update:
notice: The talent release has been updated notice: The talent release has been updated
task_requests: task_requests:
@@ -1367,9 +1291,7 @@ en:
heading: heading:
Edit Task Request Edit Task Request
form: form:
actions: info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative.
chat_now: Chat Now
info_message: For best results, please fill out this form prior to being connected with a TaskME assistant. However, if urgent, you can start speaking with a TaskME assistant by pressing the Chat Now button to the right
labels: labels:
additional_notes: Please add any additional notes we should be aware of regarding this task. additional_notes: Please add any additional notes we should be aware of regarding this task.
deadline: What is the deadline for this task? deadline: What is the deadline for this task?

View File

@@ -81,13 +81,6 @@ es:
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: broadcasts:
file:
actions:
delete_file: Delete
confirm_delete: Are you sure? (ES)
show:
actions:
reset_url: Reset URL (ES)
splash: splash:
actions: actions:
book_demo: Schedule a Demo book_demo: Schedule a Demo
@@ -106,8 +99,6 @@ es:
share_stream: Share live stream link with clients share_stream: Share live stream link with clients
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
stream_multiple_cameras: Stream multiple cameras at one time stream_multiple_cameras: Stream multiple cameras at one time
update:
reset_notice: The Share URL has been reset, and the previous URL will no longer work. Please click "Copy URL" and share it again with those who you want to have access to this live stream
contract_templates: contract_templates:
blank_contracts: blank_contracts:
create: create:
@@ -152,17 +143,11 @@ es:
update: update:
notice: The release template has been updated (ES) notice: The release template has been updated (ES)
contracts: contracts:
amendment_page:
description_labels:
amendment_clause: Amendment Clause (ES)
amendment_signature: Amendment Signature (ES)
amendment_signer_name: Amendment Signer Name (ES)
heading: Amendment (ES)
for_office_use_only: for_office_use_only:
description_labels: description_labels:
date_issued: Date Issued (ES) date_issued: Date Issued (ES)
employee_issued_to: Employee Issued To (ES)
issued_by: Issued By (ES) issued_by: Issued By (ES)
issued_to: Issued To (ES)
producer: Producer (ES) producer: Producer (ES)
production: Production (ES) production: Production (ES)
heading: For Office Use Only (ES) heading: For Office Use Only (ES)
@@ -217,7 +202,6 @@ es:
helpers: helpers:
help: help:
contract_template: contract_template:
amendment_clause: Leave blank if not required for this contract (ES)
fee: Leave at $0.00 for no-fee (ES) fee: Leave at $0.00 for no-fee (ES)
guardian_clause: Leave blank if not required for this contract (ES) guardian_clause: Leave blank if not required for this contract (ES)
signature_legal_text: Leave blank if not required for this contract (ES) signature_legal_text: Leave blank if not required for this contract (ES)
@@ -346,16 +330,9 @@ es:
index: index:
table_headers: table_headers:
address: Address (ES) address: Address (ES)
amendment_signed: Amendment (ES)
notes: Notes (ES) notes: Notes (ES)
signed_at: Date Signed (ES) signed_at: Date Signed (ES)
tags: Tags (ES) tags: Tags (ES)
location_release:
actions:
sign_amendment: Sign Amendment (ES)
messages:
amendment_not_signed_tooltip: Amendment not yet signed (ES)
amendment_signed_tooltip: Amendment Signed (ES)
material_releases: material_releases:
form: form:
photos: photos:
@@ -402,16 +379,6 @@ es:
signed_at: Date Signed (ES) signed_at: Date Signed (ES)
tags: Tags (ES) tags: Tags (ES)
public: public:
amendments:
create:
amendment_already_signed_message: Release amendment is already signed! (ES)
amendment_signed_message: Release amendment signed successfully! Thank you (ES)
new:
amendment:
heading: Amendment
copy_url: Copy sign amendment URL (ES)
signature:
heading: Signature (ES)
appearance_releases: appearance_releases:
create: create:
notice: La autorización está firmada. ¡Gracias! notice: La autorización está firmada. ¡Gracias!
@@ -527,9 +494,7 @@ es:
create: create:
success_message: Your task request was successfully submitted. Thank you. A chat window will pop up on the lower right in a few seconds. (ES) success_message: Your task request was successfully submitted. Thank you. A chat window will pop up on the lower right in a few seconds. (ES)
form: form:
actions: info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative. (ES)
chat_now: Chat Now (ES)
info_message: For best results, please fill out this form prior to being connected with a TaskME assistant. However, if urgent, you can start speaking with a TaskME assistant by pressing the Chat Now button to the right (ES)
index: index:
table_headers: table_headers:
task_request_description: Description (ES) task_request_description: Description (ES)

View File

@@ -22,9 +22,6 @@ Rails.application.routes.draw do
concern :file_infoable do concern :file_infoable do
resource :file_infos, only: [:edit, :update] resource :file_infos, only: [:edit, :update]
end end
concern :approvable do
resource :approvals, only: [:new, :create]
end
constraints AdminSignedInConstraint.new do constraints AdminSignedInConstraint.new do
namespace :admin do namespace :admin do
@@ -96,9 +93,6 @@ Rails.application.routes.draw do
end end
resources :projects, only: [] do resources :projects, only: [] do
resources :broadcasts, except: [:edit] do resources :broadcasts, except: [:edit] do
member do
delete :destroy_file
end
resource :zoom_meeting, only: [:show] resource :zoom_meeting, only: [:show]
end end
resources :directories, except: [:index] do resources :directories, except: [:index] do
@@ -127,13 +121,11 @@ Rails.application.routes.draw do
scope module: :public do scope module: :public do
resources :accounts, only: [] do resources :accounts, only: [] do
resources :projects, only: [] do resources :projects, only: [] do
resources :contract_templates, only: [:index] do resources :contract_templates, only: [] do
resources :talent_releases, only: [:new, :create] resources :talent_releases, only: [:new, :create]
resources :appearance_releases, only: [:new, :create] resources :appearance_releases, only: [:new, :create]
resources :acquired_media_releases, only: [:new, :create] resources :acquired_media_releases, only: [:new, :create]
resources :location_releases, only: [:new, :create] do resources :location_releases, only: [:new, :create]
resources :amendments, only: [:new, :create]
end
resources :material_releases, only: [:new, :create] resources :material_releases, only: [:new, :create]
resources :medical_releases, only: [:new, :create] resources :medical_releases, only: [:new, :create]
resources :misc_releases, only: [:new, :create] resources :misc_releases, only: [:new, :create]
@@ -149,7 +141,12 @@ Rails.application.routes.draw do
ALL_RELEASES = RELEASES + [:music_releases] ALL_RELEASES = RELEASES + [:music_releases]
ALL_RELEASES.each do |release| ALL_RELEASES.each do |release|
resources release, only: [], concerns: [:taggable, :approvable] resources release, only: [], concerns: :taggable
end
# Customization for medical releases
resources :medical_releases, only: [], concerns: :taggable do
resource :approvals, only: [:new, :create]
end end
resources :bulk_taggings, only: [:new, :create] resources :bulk_taggings, only: [:new, :create]

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToMusicReleases < ActiveRecord::Migration[6.0]
def change
add_column :music_releases, :approved_by_user_name, :text
add_column :music_releases, :approved_by_user_email, :text
add_column :music_releases, :approved_at, :timestamp
end
end

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToMiscReleases < ActiveRecord::Migration[6.0]
def change
add_column :misc_releases, :approved_by_user_name, :text
add_column :misc_releases, :approved_by_user_email, :text
add_column :misc_releases, :approved_at, :timestamp
end
end

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToAcquiredMediaReleases < ActiveRecord::Migration[6.0]
def change
add_column :acquired_media_releases, :approved_by_user_name, :text
add_column :acquired_media_releases, :approved_by_user_email, :text
add_column :acquired_media_releases, :approved_at, :timestamp
end
end

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToMaterialReleases < ActiveRecord::Migration[6.0]
def change
add_column :material_releases, :approved_by_user_name, :text
add_column :material_releases, :approved_by_user_email, :text
add_column :material_releases, :approved_at, :timestamp
end
end

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToLocationReleases < ActiveRecord::Migration[6.0]
def change
add_column :location_releases, :approved_by_user_name, :text
add_column :location_releases, :approved_by_user_email, :text
add_column :location_releases, :approved_at, :timestamp
end
end

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToTalentReleases < ActiveRecord::Migration[6.0]
def change
add_column :talent_releases, :approved_by_user_name, :text
add_column :talent_releases, :approved_by_user_email, :text
add_column :talent_releases, :approved_at, :timestamp
end
end

View File

@@ -1,7 +0,0 @@
class AddApprovalFieldsToAppearanceReleases < ActiveRecord::Migration[6.0]
def change
add_column :appearance_releases, :approved_by_user_name, :text
add_column :appearance_releases, :approved_by_user_email, :text
add_column :appearance_releases, :approved_at, :timestamp
end
end

View File

@@ -1,5 +0,0 @@
class AddShootLocationTimeZoneToBroadcasts < ActiveRecord::Migration[6.0]
def change
add_column :broadcasts, :shoot_location_time_zone, :string, default: "UTC"
end
end

View File

@@ -1,5 +0,0 @@
class AddFullLiveStreamPlaybackUrlToBroadcasts < ActiveRecord::Migration[6.0]
def change
add_column :broadcasts, :full_live_stream_playback_uid, :string
end
end

View File

@@ -1,5 +0,0 @@
class AddAmendmentSignerDetailsToLocationReleases < ActiveRecord::Migration[6.0]
def change
add_column :location_releases, :amendment_signer_name, :string
end
end

View File

@@ -158,10 +158,7 @@ CREATE TABLE public.acquired_media_releases (
description text, description text,
person_first_name character varying, person_first_name character varying,
person_last_name character varying, person_last_name character varying,
signed_at timestamp without time zone, signed_at timestamp without time zone
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
); );
@@ -341,10 +338,7 @@ CREATE TABLE public.appearance_releases (
guardian_2_address_city character varying, guardian_2_address_city character varying,
guardian_2_address_state character varying, guardian_2_address_state character varying,
guardian_2_address_zip character varying, guardian_2_address_zip character varying,
guardian_2_address_country character varying, guardian_2_address_country character varying
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
); );
@@ -539,9 +533,7 @@ CREATE TABLE public.broadcasts (
stream_key character varying, stream_key character varying,
stream_playback_uid character varying, stream_playback_uid character varying,
token character varying, token character varying,
streamer_status integer DEFAULT 0, streamer_status integer DEFAULT 0
shoot_location_time_zone character varying DEFAULT 'UTC'::character varying,
full_live_stream_playback_uid character varying
); );
@@ -885,11 +877,7 @@ CREATE TABLE public.location_releases (
filming_ended_on date, filming_ended_on date,
person_first_name character varying, person_first_name character varying,
person_last_name character varying, person_last_name character varying,
filming_hours text, filming_hours text
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone,
amendment_signer_name character varying
); );
@@ -978,10 +966,7 @@ CREATE TABLE public.material_releases (
signed_at timestamp without time zone, signed_at timestamp without time zone,
description text, description text,
person_first_name character varying, person_first_name character varying,
person_last_name character varying, person_last_name character varying
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
); );
@@ -1136,10 +1121,7 @@ CREATE TABLE public.misc_releases (
question_12_answer text, question_12_answer text,
question_13_answer text, question_13_answer text,
question_14_answer text, question_14_answer text,
question_15_answer text, question_15_answer text
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
); );
@@ -1195,10 +1177,7 @@ CREATE TABLE public.music_releases (
restriction_id bigint, restriction_id bigint,
restriction_text character varying, restriction_text character varying,
person_first_name character varying, person_first_name character varying,
person_last_name character varying, person_last_name character varying
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
); );
@@ -1554,10 +1533,7 @@ CREATE TABLE public.talent_releases (
guardian_2_address_city character varying, guardian_2_address_city character varying,
guardian_2_address_state character varying, guardian_2_address_state character varying,
guardian_2_address_zip character varying, guardian_2_address_zip character varying,
guardian_2_address_country character varying, guardian_2_address_country character varying
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
); );
@@ -3934,16 +3910,6 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200702152130'), ('20200702152130'),
('20200707155717'), ('20200707155717'),
('20200709120630'), ('20200709120630'),
('20200712181139'), ('20200712181139');
('20200715084927'),
('20200716055453'),
('20200716075851'),
('20200716083706'),
('20200716094927'),
('20200716103525'),
('20200716105723'),
('20200720051634'),
('20200720131309'),
('20200721140821');

View File

@@ -24,7 +24,6 @@ RSpec.describe BroadcastsChannel, type: :channel do
event: "broadcast_stream_update", event: "broadcast_stream_update",
status: broadcast.status, status: broadcast.status,
playback_url: broadcast.stream_playback_url, playback_url: broadcast.stream_playback_url,
full_live_stream_playback_url: broadcast.full_live_stream_playback_url,
status_content: status_content, status_content: status_content,
video_content: video_content, video_content: video_content,
streamer_status: broadcast.streamer_status streamer_status: broadcast.streamer_status

View File

@@ -106,7 +106,7 @@ RSpec.describe Api::BroadcastsController, type: :controller do
included = JSON.parse(response.body).dig('included') included = JSON.parse(response.body).dig('included')
expect(relationships.keys).to include('files') expect(relationships.keys).to include('files')
expect(included.size).to eq 3 expect(included.size).to eq 1
expect(included.first.dig("id")).to eq broadcast.files.first.id.to_s expect(included.first.dig("id")).to eq broadcast.files.first.id.to_s
expect(included.first.dig("type")).to eq 'active_storage_attachment' expect(included.first.dig("type")).to eq 'active_storage_attachment'
end end

View File

@@ -203,15 +203,6 @@ RSpec.describe BroadcastsController, type: :controller do
expect(BroadcastsChannel).to have_received(:broadcast_file_upload_updates) expect(BroadcastsChannel).to have_received(:broadcast_file_upload_updates)
end end
it "regenerates token if #update is called without broadcast param" do
old_token = broadcast.token
patch :update, params: { project_id: project.id, id: broadcast.id }
expect(response).to redirect_to [project, broadcast]
expect(flash.notice).to eq token_reset_notice
expect(Broadcast.last.token).not_to eq old_token
end
end end
describe "#destroy" do describe "#destroy" do
@@ -261,8 +252,4 @@ RSpec.describe BroadcastsController, type: :controller do
def create_stream def create_stream
t 'broadcasts.splash.actions.create_stream' t 'broadcasts.splash.actions.create_stream'
end end
def token_reset_notice
t 'broadcasts.update.reset_notice'
end
end end

View File

@@ -5,7 +5,6 @@ describe ContractTemplates::QrCodesController do
let(:current_user) { create(:user, :manager, primary_account: account) } let(:current_user) { create(:user, :manager, primary_account: account) }
let(:project) { create(:project, members: [current_user], account: account) } let(:project) { create(:project, members: [current_user], account: account) }
let(:contract_template) { create(:contract_template, project: project) } let(:contract_template) { create(:contract_template, project: project) }
let(:contract_templates) { create_list(:contract_template, 5, project: project)}
before do before do
sign_in(current_user) sign_in(current_user)
@@ -17,13 +16,5 @@ describe ContractTemplates::QrCodesController do
expect(response).to be_successful expect(response).to be_successful
end end
context "for group qr code" do
it "responds with success" do
get :show, params: { contract_template_id: contract_templates.first, multi_sign_ids: contract_templates }
expect(response).to be_successful
end
end
end end
end end

View File

@@ -43,21 +43,8 @@ describe ContractTemplatesController do
get :index, params: { project_id: project } get :index, params: { project_id: project }
expect(response.body).to have_link "Create New Release Template" expect(response.body).to have_link "Create New Release Template"
expect(response.body).to have_link "Import Template"
expect(response.body).to have_link schedule_demo expect(response.body).to have_link schedule_demo
end end
context 'when current user is an associate' do
let(:current_user) { create(:user, :associate) }
it 'does not show the new contract template button' do
get :index, params: { project_id: project }
expect(response.body).not_to have_link "Create New Release Template"
expect(response.body).not_to have_link "Import Template"
expect(response.body).to have_link schedule_demo
end
end
end end
context 'when current user is an associate' do context 'when current user is an associate' do

View File

@@ -1,112 +0,0 @@
require 'rails_helper'
RSpec.describe Public::AmendmentsController, type: :controller do
let(:user) { create(:user) }
let(:account) { user.primary_account }
let(:project) { create(:project, account: account) }
let(:contract_template) { create(:location_release_contract_template, :with_amendment_clause, project: project) }
let(:location_release) { create(:location_release, contract_template: contract_template, project: project) }
render_views
describe "#new" do
it "shows amendment signing form for non-signed amendment of a release" do
expect(location_release.amendment_signed?).to be_falsey
get :new, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: location_release
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).not_to match already_signed_message
end
it "shows already signed message for signed amendment of a release" do
signed_release = create(:location_release, :amendment_signed, contract_template: contract_template, project: project)
expect(signed_release.amendment_signed?).to be_truthy
get :new, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: signed_release
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).to match already_signed_message
end
end
describe "#create" do
it "signs amendment" do
expect(location_release.amendment_signed?).to be_falsey
post :create, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: location_release,
location_release: {
amendment_signer_name: "Signer Name",
amendment_signature_base64: signature_base64
}
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).not_to match already_signed_message
expect(body).to match signed_successfully_message
expect(LocationRelease.last.amendment_signed?).to be_truthy
expect(LocationRelease.last.amendment_signer_name).to eq "Signer Name"
end
it "shows already signed message for signed amendment of a release" do
signed_release = create(:location_release, :amendment_signed, name: "Test Loc", amendment_signer_name: "Big Signer", contract_template: contract_template, project: project)
expect(signed_release.amendment_signed?).to be_truthy
post :create, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: signed_release,
location_release: {
amendment_signer_name: "Signer Who",
amendment_signature_base64: signature_base64
}
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).to match already_signed_message
expect(signed_release.amendment_signed?).to be_truthy
expect(signed_release.amendment_signer_name).to eq "Big Signer"
end
end
private
def already_signed_message
t 'public.amendments.create.amendment_already_signed_message'
end
def signed_successfully_message
t 'public.amendments.create.amendment_signed_message'
end
def signature_base64
@signature_base64 ||= Base64Image.from_image(file_fixture('signature.png')).data_uri
end
end

View File

@@ -87,7 +87,6 @@ RSpec.describe Public::BroadcastsController, type: :controller do
let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, project: project ) } let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, project: project ) }
it "uploads files to broadcast" do it "uploads files to broadcast" do
allow(BroadcastsChannel).to receive(:broadcast_file_upload_updates)
patch :update, params: { token: broadcast.token, broadcast: file_params }, xhr: true patch :update, params: { token: broadcast.token, broadcast: file_params }, xhr: true
expect(broadcast.files.count).to eq(1) expect(broadcast.files.count).to eq(1)

View File

@@ -1,39 +0,0 @@
require 'rails_helper'
RSpec.describe Public::ContractTemplatesController, type: :controller do
render_views
let(:account) { create(:account, name: "Dev Account") }
let(:project) { create(:project, account: account) }
let(:contract_templates) { create_list(:contract_template, 20, project: project) }
describe '#index' do
it 'responds successfully' do
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: contract_templates.map(&:id) }
expect(response).to be_successful
end
it 'renders content if there are contract templates' do
contract_template = create(:contract_template,
name: 'My Contract Template', fee: 50, release_type: 'appearance',
project: project)
sign_path = new_account_project_contract_template_appearance_release_path(project.account, project, contract_template)
sign_url = new_account_project_contract_template_appearance_release_url(project.account, project, contract_template)
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: [contract_template.id] }
expect(response.body).to have_content('My Contract Template')
expect(response.body).to have_link('Sign', href: sign_path)
end
context 'when there are many records' do
it 'paginates the table' do
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: contract_templates.map(&:id) }
expect(response.body).to have_link('2', href: account_project_contract_templates_path(project.account, project, contract_template_ids: contract_templates.map(&:id), page: 2))
end
end
end
end

View File

@@ -4,45 +4,27 @@ RSpec.describe StreamNotificationsController, type: :controller do
render_views render_views
let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, name: "Live Stream") } let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, name: "Live Stream") }
let(:active_status) { { type: "video.live_stream.active", object: { id: "mux_stream" } } } let(:active_status) { {type: "video.live_stream.active", object: { id: "mux_stream" }} }
let(:disconnected_status) { { type: "video.live_stream.disconnected", object: { id: "mux_stream" } } } let(:disconnected_status) { {type: "video.live_stream.disconnected", object: { id: "mux_stream" }} }
let(:idle_status) { { type: "video.live_stream.idle", object: { id: "mux_stream" } } } let(:idle_status) { {type: "video.live_stream.idle", object: { id: "mux_stream" }} }
let(:idle_status_for_unknown_broadcast) { { type: "video.live_stream.idle", object: { id: "unknown-id" } } } let(:idle_status_for_unknown_broadcast) { {type: "video.live_stream.idle", object: { id: "unknown-id" }} }
let(:asset_ready) do let(:asset_ready) { {
{ type: "video.asset.static_renditions.ready",
type: "video.asset.static_renditions.ready", object: { id: "asset_uid" },
object: { id: "asset_uid" }, data: {
playback_ids: [
{id: "playback_uid"}
],
static_renditions: {
files: [{name: "high.mp4"}]
}
},
stream_notification: {
data: { data: {
playback_ids: [ live_stream_id: "mux_stream"
{ id: "playback_uid" }
],
static_renditions: {
files: [{ name: "high.mp4" }]
}
},
stream_notification: {
data: {
live_stream_id: "mux_stream"
}
} }
} }
end } }
let(:full_live_stream_ready) do
{
type: "video.asset.ready",
object: { id: "active_asset_uid" },
data: {
playback_ids: [
{ id: "full_live_stream_playback_uid" }
]
},
stream_notification: {
data: {
live_stream_id: "mux_stream"
}
}
}
end
describe "#create" do describe "#create" do
before do before do
@@ -72,20 +54,13 @@ RSpec.describe StreamNotificationsController, type: :controller do
end end
it "creates a broadcast recording when static_renditions.ready is received in notification" do it "creates a broadcast recording when static_renditions.ready is received in notification" do
expect do expect {
post :create, params: asset_ready post :create, params: asset_ready
end.to change(BroadcastRecording, :count).by(1) }.to change(BroadcastRecording, :count).by(1)
expect(BroadcastsChannel).to have_received(:stream_recording_ready) expect(BroadcastsChannel).to have_received(:stream_recording_ready)
end end
it "stores full livestream playback uid and updates the broadcast" do
post :create, params: full_live_stream_ready
expect(Broadcast.last.full_live_stream_playback_uid).to eq "full_live_stream_playback_uid"
expect(BroadcastsChannel).to have_received(:broadcast_stream_updates).with(be_kind_of(Broadcast))
end
it "returns OK response even for non-existing broadcast" do it "returns OK response even for non-existing broadcast" do
post :create, params: idle_status_for_unknown_broadcast post :create, params: idle_status_for_unknown_broadcast

View File

@@ -11,19 +11,12 @@ FactoryBot.define do
stream_uid "mux_stream" stream_uid "mux_stream"
stream_key "mux_key" stream_key "mux_key"
stream_playback_uid "mux_playback_id" stream_playback_uid "mux_playback_id"
full_live_stream_playback_uid "full_live_stream_playback_uid"
status "created" status "created"
streamer_status "idle" streamer_status "idle"
end end
trait :with_files do trait :with_files do
files do files { [Rack::Test::UploadedFile.new('spec/fixtures/files/contract.pdf', 'application/pdf')] }
[
Rack::Test::UploadedFile.new('spec/fixtures/files/contract.pdf', 'application/pdf'),
Rack::Test::UploadedFile.new('spec/fixtures/files/audio.mp3', 'audio/mpeg'),
Rack::Test::UploadedFile.new('spec/fixtures/files/video_file.mp4', 'video/mp4')
]
end
end end
after(:build) do |broadcast, evaluator| after(:build) do |broadcast, evaluator|

View File

@@ -13,10 +13,6 @@ FactoryBot.define do
archived_at Time.zone.now archived_at Time.zone.now
end end
trait :with_amendment_clause do
amendment_clause "Amendment Legal Language"
end
factory :appearance_release_contract_template do factory :appearance_release_contract_template do
release_type "appearance" release_type "appearance"
end end

View File

@@ -22,14 +22,6 @@ FactoryBot.define do
end end
end end
trait :amendment_signed do
amendment_signature do
path = Rails.root.join("spec", "fixtures", "files", "signature.png")
Rack::Test::UploadedFile.new(path, "image/png")
end
amendment_signer_name "Amendment Signer"
end
trait :non_native do trait :non_native do
contract do contract do
path = Rails.root.join("spec", "fixtures", "files", "contract.pdf") path = Rails.root.join("spec", "fixtures", "files", "contract.pdf")

View File

@@ -11,12 +11,11 @@ RSpec.feature 'User manages contract templates', type: :feature do
sign_in(current_user) sign_in(current_user)
end end
scenario 'splash page is shown if there are no contract templates' do scenario 'splash page is shown if tehre are no contract templates' do
visit project_contract_templates_path(project) visit project_contract_templates_path(project)
expect(page).to have_content schedule_demo expect(page).to have_content schedule_demo
expect(page).to have_content create_release_template expect(page).to have_content create_release_template
expect(page).to have_content import_release_template
end end
scenario 'creating a new release template' do scenario 'creating a new release template' do
@@ -31,7 +30,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
fill_in 'Describe other territory', with: 'North America only' fill_in 'Describe other territory', with: 'North America only'
select 'In perpetuity', from: 'Term' select 'In perpetuity', from: 'Term'
select 'None', from: 'Restriction' select 'None', from: 'Restriction'
click_on create_release_template_button click_on 'Create Release Template'
expect(page).to have_content(create_contract_template_success_message) expect(page).to have_content(create_contract_template_success_message)
end end
@@ -49,30 +48,18 @@ RSpec.feature 'User manages contract templates', type: :feature do
fill_in_trix signature_legal_text_field, with: 'LL' fill_in_trix signature_legal_text_field, with: 'LL'
expect do expect do
click_on create_release_template_button click_on 'Create Release Template'
end.to change(ContractTemplate, :count).by(1) end.to change(ContractTemplate, :count).by(1)
end end
end end
scenario 'location release template has a amendment clause field' do
visit new_project_contract_template_path(project)
fill_in 'Name', with: 'My Release Template'
select 'Location Release', from: 'Release type'
fill_hidden amendment_clause_field, with: 'Amendment clause text'
click_on create_release_template_button
expect(page).to have_content(create_contract_template_success_message)
expect(ContractTemplate.last.amendment_clause.body.to_s).to match /Amendment clause text/
end
scenario 'medical release template has a guardian clause field' do scenario 'medical release template has a guardian clause field' do
visit new_project_contract_template_path(project) visit new_project_contract_template_path(project)
fill_in 'Name', with: 'My Release Template' fill_in 'Name', with: 'My Release Template'
select 'Medical Release', from: 'Release type' select 'Medical Release', from: 'Release type'
fill_hidden guardian_clause_field, with: 'Guardian clause text' fill_hidden guardian_clause_field, with: 'Guardian clause text'
click_on create_release_template_button click_on 'Create Release Template'
expect(page).to have_content(create_contract_template_success_message) expect(page).to have_content(create_contract_template_success_message)
expect(ContractTemplate.last.guardian_clause.body.to_s).to match /Guardian clause text/ expect(ContractTemplate.last.guardian_clause.body.to_s).to match /Guardian clause text/
@@ -91,7 +78,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
fill_in_trix 'contract_template_guardian_clause', with: 'Guardian clause text' fill_in_trix 'contract_template_guardian_clause', with: 'Guardian clause text'
fill_in question_field(1), with: 'How much experience do you have in the industry?' fill_in question_field(1), with: 'How much experience do you have in the industry?'
click_on create_release_template_button click_on 'Create Release Template'
expect(page).to have_content(create_contract_template_success_message) expect(page).to have_content(create_contract_template_success_message)
end end
@@ -198,13 +185,13 @@ RSpec.feature 'User manages contract templates', type: :feature do
scenario 'Should not allow negative fees' do scenario 'Should not allow negative fees' do
fill_in 'Fee', with: '-200' fill_in 'Fee', with: '-200'
click_on create_release_template_button click_on 'Create Release Template'
expect(page).not_to have_content(create_contract_template_success_message) expect(page).not_to have_content(create_contract_template_success_message)
end end
scenario 'Should not allow fees with more than 9 digits' do scenario 'Should not allow fees with more than 9 digits' do
fill_in 'Fee', with: '9999999999' fill_in 'Fee', with: '9999999999'
click_on create_release_template_button click_on 'Create Release Template'
expect(page).not_to have_content(create_contract_template_success_message) expect(page).not_to have_content(create_contract_template_success_message)
end end
end end
@@ -379,7 +366,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
expect(page).to have_content schedule_demo expect(page).to have_content schedule_demo
expect(page).not_to have_content create_release_template expect(page).not_to have_content create_release_template
expect(page).not_to have_content import_release_template
end end
it 'does not show edit button' do it 'does not show edit button' do
@@ -411,12 +397,11 @@ RSpec.feature 'User manages contract templates', type: :feature do
expect(page).to have_content('Delete') expect(page).to have_content('Delete')
end end
it 'shows create release button on splash page' do it 'does not show create release button on splash page' do
visit project_contract_templates_path(project) visit project_contract_templates_path(project)
expect(page).to have_content schedule_demo expect(page).to have_content schedule_demo
expect(page).to have_content create_release_template expect(page).to have_content create_release_template
expect(page).to have_content import_release_template
end end
it 'shows edit button when contract template is not signed' do it 'shows edit button when contract template is not signed' do
@@ -480,10 +465,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
'contract_template_guardian_clause_trix_input_contract_template' 'contract_template_guardian_clause_trix_input_contract_template'
end end
def amendment_clause_field
'contract_template_amendment_clause_trix_input_contract_template'
end
def signature_legal_text_field def signature_legal_text_field
'contract_template_signature_legal_text' 'contract_template_signature_legal_text'
end end
@@ -508,10 +489,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
t 'contract_templates.splash.actions.create_template' t 'contract_templates.splash.actions.create_template'
end end
def import_release_template
t 'contract_templates.splash.actions.import_template'
end
def signature_legal_text_trix_field def signature_legal_text_trix_field
'Signature legal text' 'Signature legal text'
end end
@@ -539,8 +516,4 @@ RSpec.feature 'User manages contract templates', type: :feature do
def duplicate_release_name(template_name = '') def duplicate_release_name(template_name = '')
t 'contract_templates.duplicate.name_prefix', template_name: template_name t 'contract_templates.duplicate.name_prefix', template_name: template_name
end end
def create_release_template_button
'Create Release Template'
end
end end

Some files were not shown because too many files have changed in this diff Show More