Compare commits
10 Commits
add-guardi
...
add-amendm
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
970b53d4ef | ||
|
|
aa914102d1 | ||
|
|
f3f3a52332 | ||
|
|
534760e6f5 | ||
|
|
1b5729ce34 | ||
|
|
55ffa3be7f | ||
|
|
eefc991207 | ||
|
|
141ab42d4b | ||
|
|
8d16c310df | ||
|
|
9bf68d8fd6 |
@@ -21,11 +21,10 @@ $(document).on "turbolinks:load", ->
|
||||
|
||||
refreshBroadcastVideo: (data) ->
|
||||
$("#broadcast_updates").html data.status_content
|
||||
stream_selected = $("#broadcast_video").data('videoType') == 'stream';
|
||||
stream_selected = $("#broadcast_video").attr('video-type') == 'stream';
|
||||
if data.streamer_status == 'recording' && data.status == 'active' && stream_selected
|
||||
$("#broadcast_video").html data.video_content
|
||||
new (Clappr.Player)(
|
||||
<%= "baseUrl: 'http://cdn.clappr.io/latest'," if Rails.env.test? %>
|
||||
parentId: '#broadcast_video'
|
||||
source: data.full_live_stream_playback_url
|
||||
width: '100%',
|
||||
@@ -3,7 +3,7 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
||||
return false;
|
||||
}
|
||||
|
||||
$("#broadcast_video").data('videoType', 'recording');
|
||||
$("#broadcast_video").attr('video-type', 'recording');
|
||||
|
||||
var playback_url = $(this).attr("data-playback-url")
|
||||
$("#broadcast_video").empty();
|
||||
@@ -25,4 +25,4 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
||||
$(this).prepend('<i class="fa fa-check"> </i>');
|
||||
});
|
||||
|
||||
$(document).on("click", "[data-behavior=play_stream]", function() { $("#broadcast_video").data('videoType', 'stream'); });
|
||||
$(document).on("click", "[data-behavior=play_stream]", function() { $("#broadcast_video").attr('video-type', 'stream'); });
|
||||
@@ -3,7 +3,7 @@ class BroadcastsController < ApplicationController
|
||||
|
||||
before_action :set_project
|
||||
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 :show_splash_screen, only: :index
|
||||
|
||||
@@ -39,7 +39,10 @@ class BroadcastsController < ApplicationController
|
||||
end
|
||||
|
||||
@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
|
||||
|
||||
def destroy
|
||||
@@ -50,23 +53,8 @@ class BroadcastsController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def destroy_file
|
||||
authorize Broadcast
|
||||
file = ActiveStorage::Attachment.find(params[:file_id])
|
||||
file.destroy
|
||||
|
||||
update_files_section
|
||||
end
|
||||
|
||||
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
|
||||
render :splash if broadcasts.count.zero?
|
||||
end
|
||||
|
||||
@@ -50,58 +50,11 @@ class MaterialReleasesController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def person_params
|
||||
%i[
|
||||
person_first_name
|
||||
person_last_name
|
||||
person_phone
|
||||
person_company
|
||||
person_email
|
||||
person_title
|
||||
person_address_street1
|
||||
person_address_street2
|
||||
person_address_city
|
||||
person_address_state
|
||||
person_address_zip
|
||||
person_address_country
|
||||
]
|
||||
end
|
||||
|
||||
def guardian_params
|
||||
%i[
|
||||
guardian_first_name
|
||||
guardian_last_name
|
||||
guardian_phone
|
||||
guardian_email
|
||||
guardian_photo
|
||||
guardian_address_street1
|
||||
guardian_address_street2
|
||||
guardian_address_city
|
||||
guardian_address_state
|
||||
guardian_address_zip
|
||||
guardian_address_country
|
||||
]
|
||||
end
|
||||
|
||||
def second_guardian_params
|
||||
%i[
|
||||
guardian_2_first_name
|
||||
guardian_2_last_name
|
||||
guardian_2_phone
|
||||
guardian_2_email
|
||||
guardian_2_photo
|
||||
guardian_2_address_street1
|
||||
guardian_2_address_street2
|
||||
guardian_2_address_city
|
||||
guardian_2_address_state
|
||||
guardian_2_address_zip
|
||||
guardian_2_address_country
|
||||
]
|
||||
end
|
||||
|
||||
def material_release_params
|
||||
params.require(:material_release).permit(person_params, guardian_params, second_guardian_params, :minor,
|
||||
params.require(:material_release).permit(
|
||||
:name, :address_street1, :address_street2, :address_city, :address_state, :address_zip, :address_country,
|
||||
:person_first_name, :person_last_name, :person_title, :person_company, :person_phone, :person_email,
|
||||
:person_address_street1, :person_address_street2, :person_address_city, :person_address_state, :person_address_zip, :person_address_country,
|
||||
:applicable_medium_id, :applicable_medium_text,
|
||||
:territory_id, :territory_text,
|
||||
:term_id, :term_text,
|
||||
|
||||
@@ -39,59 +39,11 @@ class Public::MaterialReleasesController < Public::BaseController
|
||||
authorize material_releases.build(params)
|
||||
end
|
||||
|
||||
def person_params
|
||||
%i[
|
||||
person_first_name
|
||||
person_last_name
|
||||
person_phone
|
||||
person_email
|
||||
person_title
|
||||
person_company
|
||||
person_address_street1
|
||||
person_address_street2
|
||||
person_address_city
|
||||
person_address_state
|
||||
person_address_zip
|
||||
person_address_country
|
||||
]
|
||||
end
|
||||
|
||||
def guardian_params
|
||||
%i[
|
||||
guardian_first_name
|
||||
guardian_last_name
|
||||
guardian_phone
|
||||
guardian_email
|
||||
guardian_photo
|
||||
guardian_address_street1
|
||||
guardian_address_street2
|
||||
guardian_address_city
|
||||
guardian_address_state
|
||||
guardian_address_zip
|
||||
guardian_address_country
|
||||
]
|
||||
end
|
||||
|
||||
def second_guardian_params
|
||||
%i[
|
||||
guardian_2_first_name
|
||||
guardian_2_last_name
|
||||
guardian_2_phone
|
||||
guardian_2_email
|
||||
guardian_2_photo
|
||||
guardian_2_address_street1
|
||||
guardian_2_address_street2
|
||||
guardian_2_address_city
|
||||
guardian_2_address_state
|
||||
guardian_2_address_zip
|
||||
guardian_2_address_country
|
||||
]
|
||||
end
|
||||
|
||||
|
||||
def material_release_params
|
||||
params.require(:material_release).permit(person_params, guardian_params, second_guardian_params, :minor,
|
||||
params.require(:material_release).permit(
|
||||
:name, :address_street1, :address_street2, :address_city, :address_state, :address_zip, :address_country,
|
||||
:person_first_name, :person_last_name, :person_title, :person_company, :person_phone, :person_email,
|
||||
:person_address_street1, :person_address_street2, :person_address_city, :person_address_state, :person_address_zip, :person_address_country,
|
||||
:signature_base64,
|
||||
:locale, :contract_template, :description, photos: []
|
||||
)
|
||||
|
||||
@@ -12,11 +12,6 @@ class MaterialRelease < ApplicationRecord
|
||||
include PersonName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
include GuardianPhotoable
|
||||
include SecondGuardianPhotoable
|
||||
include GuardianName
|
||||
include SecondGuardianName
|
||||
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
@@ -35,39 +30,6 @@ class MaterialRelease < ApplicationRecord
|
||||
%w(person_address_country country)
|
||||
]
|
||||
|
||||
composed_of :guardian_address,
|
||||
class_name: 'Address',
|
||||
mapping: [
|
||||
%w[guardian_address_street1 street1],
|
||||
%w[guardian_address_street2 street2],
|
||||
%w[guardian_address_city city],
|
||||
%w[guardian_address_state state],
|
||||
%w[guardian_address_zip zip],
|
||||
%w[guardian_address_country country]
|
||||
]
|
||||
|
||||
composed_of :guardian_2_address,
|
||||
class_name: 'Address',
|
||||
mapping: [
|
||||
%w[guardian_2_address_street1 street1],
|
||||
%w[guardian_2_address_street2 street2],
|
||||
%w[guardian_2_address_city city],
|
||||
%w[guardian_2_address_state state],
|
||||
%w[guardian_2_address_zip zip],
|
||||
%w[guardian_2_address_country country]
|
||||
]
|
||||
|
||||
# We don't care for the argument but method WILL receive option name
|
||||
# when called from inside with_option block, hence * argument
|
||||
def self.face_photo_acceptable_content_types(*)
|
||||
['image/png', 'image/jpeg']
|
||||
end
|
||||
|
||||
def self.acceptable_import_file_extensions
|
||||
['.png', '.jpeg', '.jpg', '.pdf']
|
||||
end
|
||||
|
||||
|
||||
validates :name, presence: true
|
||||
validates :person_email, email: true, allow_blank: true
|
||||
|
||||
@@ -85,8 +47,8 @@ class MaterialRelease < ApplicationRecord
|
||||
@contact_person ||= Contact.new(person_name, person_address, person_email, person_phone)
|
||||
end
|
||||
|
||||
def second_guardian_present?
|
||||
guardian_2_first_name.present?
|
||||
def minor?
|
||||
false
|
||||
end
|
||||
|
||||
def uses_edl?
|
||||
|
||||
@@ -18,12 +18,4 @@ class BroadcastPolicy < ApplicationPolicy
|
||||
def update?
|
||||
true
|
||||
end
|
||||
|
||||
def destroy_file?
|
||||
if user.nil? || user.user.nil?
|
||||
return false
|
||||
end
|
||||
|
||||
user.manager? || user.account_manager?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,25 +1,12 @@
|
||||
<div class="row">
|
||||
<% broadcast = file.record %>
|
||||
<% show_delete = controller.class.module_parent.to_s == "Public" ? false : policy(broadcast).destroy_file? %>
|
||||
<% file_class = show_delete ? "col-8" : "col-12" %>
|
||||
<div class="<%= file_class %>">
|
||||
<li class="my-2" id="<%= dom_id(file) %>">
|
||||
<% if file.variable? %>
|
||||
<%= link_to image_tag(file.variant(resize_and_pad: [300, 300, background: "#F7F8F9"]), class: "bg-light img-thumbnail img-fluid"), file, target: "_blank" %>
|
||||
<% 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>
|
||||
<li class="my-2" id="<%= dom_id(file) %>">
|
||||
<% if file.variable? %>
|
||||
<%= link_to image_tag(file.variant(resize_and_pad: [300, 300, background: "#F7F8F9"]), class: "bg-light img-thumbnail img-fluid"), file, target: "_blank" %>
|
||||
<% else %>
|
||||
<div class="border rounded bg-light text-muted d-flex justify-content-center align-items-center 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 %>
|
||||
</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>
|
||||
<% end %>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% 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 %>
|
||||
<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">
|
||||
<tbody>
|
||||
<tr>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<div class="form-row">
|
||||
<%= 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 material 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), "#amendment_clause": %w(location) } }, class: "form-control custom-select" %>
|
||||
</div>
|
||||
<div class="form-row mb-3">
|
||||
<%= form.radio_button :accessibility, :public_template, label: "Public", wrapper_class: "mr-3" %>
|
||||
|
||||
@@ -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' %>
|
||||
<% 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.import_template"), [:new, @project, :release_template_imports], class: "btn btn-light border align-self-center h-50 pb-2" %>
|
||||
<%= link_to t(".actions.create_template"), [:new, @project, :contract_template], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -48,4 +47,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -18,14 +18,10 @@
|
||||
<% end %>
|
||||
</dd>
|
||||
<% end %>
|
||||
<%= description_list_pair t(".labels.#{releasable.model_name.param_key}.name", default: "Name"), releasable.name, append: ":" %>
|
||||
<% if releasable.model_name == "LocationRelease" %>
|
||||
<%= description_list_pair "Location Address:", releasable.address %>
|
||||
<%= description_list_pair "Owner Name", releasable.person_name, append: ":" %>
|
||||
<% 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: ":" %>
|
||||
<%= description_list_pair_for releasable, :name, append: ":" %>
|
||||
<%= description_list_pair "Contact Address:", releasable.contact_person.address %>
|
||||
<%= description_list_pair "Contact Phone:", releasable.contact_person.phone %>
|
||||
<%= description_list_pair "Contact Email:", releasable.contact_person.email %>
|
||||
<% if releasable.model_name == "AppearanceRelease" %>
|
||||
<%= description_list_pair "Person Date of Birth:", releasable&.person_date_of_birth&.strftime("%D") %>
|
||||
<% end %>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "location_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></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.notes") %></th>
|
||||
<th><%= t(".table_headers.tags") %></th>
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
<hr>
|
||||
|
||||
<%= field_set_tag content_tag(:span, t(".signer_details.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.material_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :person_first_name, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :person_last_name, wrapper_class: "col-sm-6" %>
|
||||
@@ -24,28 +21,6 @@
|
||||
<%= form.text_field :person_title, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "person" %>
|
||||
|
||||
<div class="<%= class_string("collapse" => !material_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: material_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_last_name, required: material_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian" %>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_2_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_2_first_name, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_2_last_name, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_2_phone, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_2_email, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian_2" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
@@ -59,44 +34,6 @@
|
||||
|
||||
<%= field_set_tag content_tag(:span, t(".photos.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<%= render "shared/photos_dropzone_fields", form: form, release: material_release %>
|
||||
|
||||
<div class="<%= class_string("collapse" => !material_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<br>
|
||||
<div class="text-left">
|
||||
<p><%= t(".photos.guardian_photo.heading") %></p>
|
||||
<div id="guardian-photo-preview" class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
|
||||
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
|
||||
<span>No photo yet</span>
|
||||
</div>
|
||||
</div>
|
||||
<% if material_release.guardian_photo.attached? %>
|
||||
<%= javascript_tag nonce: true do %>
|
||||
App.PhotoPreview.set("#guardian-photo-preview", "<%= url_for(material_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="d-inline-block">
|
||||
<%= form.hidden_field :guardian_photo, value: form.object.guardian_photo.signed_id if material_release.guardian_photo.attached?%>
|
||||
<%= form.file_field :guardian_photo, hide_label: true, data: { ujs_target: "guardian-photo-input" }, help: "PNG or JPG only", accept: material_release.class.face_photo_acceptable_content_types.join(",") %>
|
||||
</div>
|
||||
|
||||
<p><%= t(".photos.guardian_2_photo.heading") %></p>
|
||||
<div id="guardian-2-photo-preview" class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-2-photo-input]">
|
||||
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
|
||||
<span>No photo yet</span>
|
||||
</div>
|
||||
</div>
|
||||
<% if material_release.guardian_2_photo.attached? %>
|
||||
<%= javascript_tag nonce: true do %>
|
||||
App.PhotoPreview.set("#guardian-2-photo-preview", "<%= url_for(material_release.guardian_2_photo.variant(auto_orient: true, resize: '200x200')) %>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="d-inline-block">
|
||||
<%= form.hidden_field :guardian_2_photo, value: form.object.guardian_2_photo.signed_id if material_release.guardian_2_photo.attached?%>
|
||||
<%= form.file_field :guardian_2_photo, hide_label: true, data: { ujs_target: "guardian-2-photo-input" }, help: "PNG or JPG only", accept: material_release.class.face_photo_acceptable_content_types.join(",") %>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="row align-items-center text-center mt-4">
|
||||
|
||||
@@ -13,17 +13,6 @@
|
||||
|
||||
<hr>
|
||||
|
||||
<% unless @contract_template.guardian_clause.blank? %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||
<p><%= @contract_template.guardian_clause %></p>
|
||||
<% end %>
|
||||
<hr>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".release_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :name, required: true, wrapper_class: "col-12" %>
|
||||
@@ -51,91 +40,6 @@
|
||||
|
||||
<hr>
|
||||
|
||||
<% unless @contract_template.guardian_clause.blank? %>
|
||||
<div class="<%= class_string("collapse" => !@material_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: @material_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_last_name, required: @material_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.phone_field :guardian_phone, required: @material_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_email, required: @material_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", required: @material_release.minor?, data: { required_tag: "guardian" } %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_photo.heading") do %>
|
||||
<div class="alert alert-warning font-weight-bold"><%= t ".guardian_photo.instructions" %></div>
|
||||
<div class="text-center">
|
||||
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
|
||||
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
|
||||
<span><%= t ".photo.no_photo" %></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-inline-block text-left">
|
||||
<% if @material_release.guardian_photo.attached? %>
|
||||
<%= javascript_tag nonce: true do %>
|
||||
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(@material_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="hidden-file-input">
|
||||
<%= form.hidden_field :guardian_photo, value: form.object.guardian_photo.signed_id if @material_release.guardian_photo.attached? %>
|
||||
<%= form.file_field :guardian_photo, required: @material_release.minor?, hide_label: true, data: { ujs_target: "guardian-photo-input" }, accept: @material_release.class.face_photo_acceptable_content_types.join(","), direct_upload: true %>
|
||||
</div>
|
||||
<%= button_tag t(".photo.take_photo"), type: "button", class: "btn btn-lg btn-primary take-photo-button", data: { behavior: "trigger-click", target: "[data-ujs-target=guardian-photo-input]" } %>
|
||||
</div>
|
||||
<p class="p-2 font-weight-bold">
|
||||
<small class="text-muted"><%= t ".photo.warning" %></small>
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_2_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_2_first_name, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_2_last_name, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_2_phone, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_2_email, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian_2" %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_2_photo.heading") do %>
|
||||
<div class="alert alert-warning font-weight-bold"><%= t ".guardian_2_photo.instructions" %></div>
|
||||
<div class="text-center">
|
||||
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-2-photo-input]">
|
||||
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
|
||||
<span><%= t ".photo.no_photo" %></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-inline-block text-left">
|
||||
<% if @material_release.guardian_2_photo.attached? %>
|
||||
<%= javascript_tag nonce: true do %>
|
||||
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(@material_release.guardian_2_photo.variant(auto_orient: true, resize: '200x200')) %>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="hidden-file-input">
|
||||
<%= form.hidden_field :guardian_2_photo, value: form.object.guardian_2_photo.signed_id if @material_release.guardian_2_photo.attached? %>
|
||||
<%= form.file_field :guardian_2_photo, hide_label: true, data: { ujs_target: "guardian-2-photo-input" }, accept: @material_release.class.face_photo_acceptable_content_types.join(","), direct_upload: true %>
|
||||
</div>
|
||||
<%= button_tag t(".photo.take_photo"), type: "button", class: "btn btn-lg btn-primary take-photo-button", data: { behavior: "trigger-click", target: "[data-ujs-target=guardian-2-photo-input]" } %>
|
||||
</div>
|
||||
<p class="p-2 font-weight-bold">
|
||||
<small class="text-muted"><%= t ".photo.warning" %></small>
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".signature.heading") do %>
|
||||
<%= render "shared/signature_fields", form: form, instruction: 'For Owner or Authorized Signatory', signature_legal_text: @contract_template.signature_legal_text %>
|
||||
<% end %>
|
||||
|
||||
@@ -214,10 +214,6 @@ en:
|
||||
destroy:
|
||||
alert: A live stream has been deleted
|
||||
api_error: Something went wrong, please try again later after some time
|
||||
file:
|
||||
actions:
|
||||
delete_file: Delete
|
||||
confirm_delete: Are you sure?
|
||||
index:
|
||||
actions:
|
||||
new: Create New Live Stream
|
||||
@@ -311,7 +307,6 @@ en:
|
||||
actions:
|
||||
book_demo: Schedule a Demo
|
||||
create_template: Create New Release Template
|
||||
import_template: Import Template
|
||||
headings:
|
||||
benefits: Benefits
|
||||
how_it_works: How It Works
|
||||
@@ -358,12 +353,6 @@ en:
|
||||
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}."
|
||||
labels:
|
||||
location_release:
|
||||
contact_person_address: Owner Address
|
||||
contact_person_email: Owner Email
|
||||
contact_person_phone: Owner Phone
|
||||
name: Location Name
|
||||
directories:
|
||||
destroy:
|
||||
alert: The folder has been deleted
|
||||
@@ -500,27 +489,6 @@ en:
|
||||
person_first_name: Owner first name
|
||||
person_last_name: Owner last name
|
||||
material_release:
|
||||
guardian_2_address_city: Guardian 2 city
|
||||
guardian_2_address_country: Guardian 2 country
|
||||
guardian_2_address_state: Guardian 2 state
|
||||
guardian_2_address_street1: Guardian 2 address
|
||||
guardian_2_address_street2: Guardian 2 address (Line 2)
|
||||
guardian_2_address_zip: Guardian 2 zip code
|
||||
guardian_2_email: Guardian 2 email
|
||||
guardian_2_first_name: Guardian 2 first name
|
||||
guardian_2_last_name: Guardian 2 last name
|
||||
guardian_2_phone: Guardian 2 phone
|
||||
guardian_address_city: Guardian city
|
||||
guardian_address_country: Guardian country
|
||||
guardian_address_state: Guardian state
|
||||
guardian_address_street1: Guardian address
|
||||
guardian_address_street2: Guardian address (Line 2)
|
||||
guardian_address_zip: Guardian zip code
|
||||
guardian_email: Guardian email
|
||||
guardian_first_name: Guardian first name
|
||||
guardian_last_name: Guardian last name
|
||||
guardian_phone: Guardian phone
|
||||
minor: Is the person a minor?
|
||||
description: Description of licensed material
|
||||
name: Name of licensed material
|
||||
person_address: Address
|
||||
@@ -811,7 +779,7 @@ en:
|
||||
table_headers:
|
||||
address: Address
|
||||
approved: Approved
|
||||
name: Location Name
|
||||
name: Name
|
||||
notes: Notes
|
||||
signed_at: Date Signed
|
||||
tags: Tags
|
||||
@@ -841,15 +809,7 @@ en:
|
||||
heading: 3 of 4 Contract & Exploitable Rights
|
||||
material_details:
|
||||
heading: 1 of 3 Material Details
|
||||
guardian_2_info:
|
||||
heading: Second Guardian Information (if company requires)
|
||||
guardian_info:
|
||||
heading: Guardian Information
|
||||
photos:
|
||||
guardian_2_photo:
|
||||
heading: Second Guardian Photo
|
||||
guardian_photo:
|
||||
heading: Guardian Photo
|
||||
dropzone_label: Tap to take a photo of Licensed Material (optional)
|
||||
heading: 4 of 4 Photos
|
||||
signer_details:
|
||||
@@ -1157,18 +1117,6 @@ en:
|
||||
create:
|
||||
notice: Your release has been signed. Thank you!
|
||||
new:
|
||||
guardian_2_info:
|
||||
heading: Second Guardian Information (if company requires)
|
||||
guardian_2_photo:
|
||||
heading: Second Guardian Photo
|
||||
instructions: >
|
||||
Lastly, it's time for second guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
|
||||
guardian_info:
|
||||
heading: Guardian Information
|
||||
guardian_photo:
|
||||
heading: Guardian Photo
|
||||
instructions: >
|
||||
Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese!
|
||||
cancel: Cancel
|
||||
contact_info:
|
||||
heading: Licensor/Owner Contact Information
|
||||
@@ -1176,15 +1124,10 @@ en:
|
||||
heading: Legal
|
||||
photo:
|
||||
heading: Photos
|
||||
no_photo: No photo yet
|
||||
take_photo: Take Photo
|
||||
warning: If your photo appears sideways, it will be autocorrected when you submit your release.
|
||||
release_info:
|
||||
heading: Release Information
|
||||
signature:
|
||||
heading: Sign Below
|
||||
guardian_clause:
|
||||
heading: Guardian Clause
|
||||
medical_releases:
|
||||
create:
|
||||
notice: Your release has been signed. Thank you!
|
||||
|
||||
@@ -81,10 +81,6 @@ es:
|
||||
do_not_copy_warning: "Do not copy (ES)"
|
||||
serial_number_label: "Serial Number (ES)"
|
||||
broadcasts:
|
||||
file:
|
||||
actions:
|
||||
delete_file: Delete
|
||||
confirm_delete: Are you sure? (ES)
|
||||
show:
|
||||
actions:
|
||||
reset_url: Reset URL (ES)
|
||||
@@ -250,29 +246,6 @@ es:
|
||||
person_email: Dirección de correo electrónico
|
||||
person_name: Nómbre
|
||||
person_phone: Número de teléfono
|
||||
material_release:
|
||||
guardian_2_address_city: Guardian 2 city (ES)
|
||||
guardian_2_address_country: Guardian 2 country (ES)
|
||||
guardian_2_address_state: Guardian 2 state (ES)
|
||||
guardian_2_address_street1: Guardian 2 address (ES)
|
||||
guardian_2_address_street2: Guardian 2 address (Line 2) (ES)
|
||||
guardian_2_address_zip: Guardian 2 zip code (ES)
|
||||
guardian_2_email: Guardian 2 email (ES)
|
||||
guardian_2_first_name: Guardian 2 first name (ES)
|
||||
guardian_2_last_name: Guardian 2 last name (ES)
|
||||
guardian_2_phone: Guardian 2 phone (ES)
|
||||
guardian_address_city: Guardian city (ES)
|
||||
guardian_address_country: Guardian country (ES)
|
||||
guardian_address_state: Guardian state (ES)
|
||||
guardian_address_street1: Dirección del tutor legal
|
||||
guardian_address_street2: Dirección del tutor legal (Línea 2)
|
||||
guardian_address_zip: Guardian zip code (ES)
|
||||
guardian_email: Guardian email (ES)
|
||||
guardian_first_name: Guardian first name (ES)
|
||||
guardian_last_name: Guardian last name (ES)
|
||||
guardian_name: Nómbre del tutor legal
|
||||
guardian_phone: Número de teléfono del tutor legal
|
||||
minor: El firmante es un menor
|
||||
medical_release:
|
||||
guardian_2_address_city: Guardian 2 city (ES)
|
||||
guardian_2_address_country: Guardian 2 country (ES)
|
||||
@@ -359,8 +332,6 @@ es:
|
||||
contract_template:
|
||||
update: Save changes (ES)
|
||||
create: 'Crear %{model}'
|
||||
material_release:
|
||||
create: Import Release (ES)
|
||||
medical_release:
|
||||
update: Approve (ES)
|
||||
update: 'Actualizar %{model}'
|
||||
@@ -381,18 +352,8 @@ es:
|
||||
amendment_not_signed_tooltip: Amendment not yet signed (ES)
|
||||
amendment_signed_tooltip: Amendment Signed (ES)
|
||||
material_releases:
|
||||
create:
|
||||
notice: The acquired media release has been created (ES)
|
||||
form:
|
||||
guardian_2_info:
|
||||
heading: Guardian Information (if company requires) [ES]
|
||||
guardian_info:
|
||||
heading: Guardian Information (ES)
|
||||
photos:
|
||||
guardian_2_photo:
|
||||
heading: Second Guardian Photo
|
||||
guardian_photo:
|
||||
heading: Guardian Photo
|
||||
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
||||
index:
|
||||
table_headers:
|
||||
@@ -485,25 +446,8 @@ es:
|
||||
heading: Photos (ES)
|
||||
material_releases:
|
||||
new:
|
||||
guardian_2_info:
|
||||
heading: Second Guardian Information (if company requires) [ES]
|
||||
guardian_2_photo:
|
||||
heading: Second Guardian Photo (ES)
|
||||
instructions: >
|
||||
(ES) Lastly, it's time for second guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese! (ES)
|
||||
guardian_clause:
|
||||
heading: Guardian Clause (ES)
|
||||
guardian_info:
|
||||
heading: Guardian Information (ES)
|
||||
guardian_photo:
|
||||
heading: Guardian Photo (ES)
|
||||
instructions: >
|
||||
(ES) Lastly, it's time for guardian to take a selfie photo! Please remove your hat and sunglasses (regular eyewear is ok), make sure that you are the only person in the photo, look straight into the camera, and say Cheese! (ES)
|
||||
photo:
|
||||
heading: Photos (ES)
|
||||
no_photo: No photo yet (ES)
|
||||
take_photo: Take Photo (ES)
|
||||
warning: If your photo appears sideways, it will be autocorrected when you submit your release. (ES)
|
||||
medical_releases:
|
||||
new:
|
||||
guardian_2_info:
|
||||
|
||||
@@ -96,9 +96,6 @@ Rails.application.routes.draw do
|
||||
end
|
||||
resources :projects, only: [] do
|
||||
resources :broadcasts, except: [:edit] do
|
||||
member do
|
||||
delete :destroy_file
|
||||
end
|
||||
resource :zoom_meeting, only: [:show]
|
||||
end
|
||||
resources :directories, except: [:index] do
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
class AddGuardiansFieldsToMaterialReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :material_releases, :minor, :boolean, default: false
|
||||
add_column :material_releases, :guardian_first_name, :string
|
||||
add_column :material_releases, :guardian_last_name, :string
|
||||
add_column :material_releases, :guardian_email, :string
|
||||
add_column :material_releases, :guardian_phone, :string
|
||||
add_column :material_releases, :guardian_address_street1, :string
|
||||
add_column :material_releases, :guardian_address_street2, :string
|
||||
add_column :material_releases, :guardian_address_city, :string
|
||||
add_column :material_releases, :guardian_address_state, :string
|
||||
add_column :material_releases, :guardian_address_zip, :string
|
||||
add_column :material_releases, :guardian_address_country, :string
|
||||
add_column :material_releases, :guardian_2_first_name, :string
|
||||
add_column :material_releases, :guardian_2_last_name, :string
|
||||
add_column :material_releases, :guardian_2_email, :string
|
||||
add_column :material_releases, :guardian_2_phone, :string
|
||||
add_column :material_releases, :guardian_2_address_street1, :string
|
||||
add_column :material_releases, :guardian_2_address_street2, :string
|
||||
add_column :material_releases, :guardian_2_address_city, :string
|
||||
add_column :material_releases, :guardian_2_address_state, :string
|
||||
add_column :material_releases, :guardian_2_address_zip, :string
|
||||
add_column :material_releases, :guardian_2_address_country, :string
|
||||
end
|
||||
end
|
||||
@@ -981,28 +981,7 @@ CREATE TABLE public.material_releases (
|
||||
person_last_name character varying,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone,
|
||||
minor boolean DEFAULT false,
|
||||
guardian_first_name character varying,
|
||||
guardian_last_name character varying,
|
||||
guardian_email character varying,
|
||||
guardian_phone character varying,
|
||||
guardian_address_street1 character varying,
|
||||
guardian_address_street2 character varying,
|
||||
guardian_address_city character varying,
|
||||
guardian_address_state character varying,
|
||||
guardian_address_zip character varying,
|
||||
guardian_address_country character varying,
|
||||
guardian_2_first_name character varying,
|
||||
guardian_2_last_name character varying,
|
||||
guardian_2_email character varying,
|
||||
guardian_2_phone character varying,
|
||||
guardian_2_address_street1 character varying,
|
||||
guardian_2_address_street2 character varying,
|
||||
guardian_2_address_city character varying,
|
||||
guardian_2_address_state character varying,
|
||||
guardian_2_address_zip character varying,
|
||||
guardian_2_address_country character varying
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -3965,7 +3944,6 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20200716105723'),
|
||||
('20200720051634'),
|
||||
('20200720131309'),
|
||||
('20200721140821'),
|
||||
('20200727143209');
|
||||
('20200721140821');
|
||||
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ RSpec.describe Api::BroadcastsController, type: :controller do
|
||||
included = JSON.parse(response.body).dig('included')
|
||||
|
||||
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("type")).to eq 'active_storage_attachment'
|
||||
end
|
||||
|
||||
@@ -94,7 +94,7 @@ RSpec.describe Api::SyncController, type: :controller do
|
||||
expect(appearance_releases.first).to include('guardian_photo')
|
||||
expect(talent_releases.first).to include('guardian_photo')
|
||||
expect(location_releases.first).not_to include('guardian_photo')
|
||||
expect(material_releases.first).to include('guardian_photo')
|
||||
expect(material_releases.first).not_to include('guardian_photo')
|
||||
end
|
||||
|
||||
it 'guardian photo has same format as other photos' do
|
||||
|
||||
@@ -43,21 +43,8 @@ describe ContractTemplatesController do
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
context 'when current user is an associate' do
|
||||
|
||||
@@ -87,7 +87,6 @@ RSpec.describe Public::BroadcastsController, type: :controller do
|
||||
let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, project: project ) }
|
||||
|
||||
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
|
||||
|
||||
expect(broadcast.files.count).to eq(1)
|
||||
|
||||
@@ -17,13 +17,7 @@ FactoryBot.define do
|
||||
end
|
||||
|
||||
trait :with_files do
|
||||
files do
|
||||
[
|
||||
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
|
||||
files { [Rack::Test::UploadedFile.new('spec/fixtures/files/contract.pdf', 'application/pdf')] }
|
||||
end
|
||||
|
||||
after(:build) do |broadcast, evaluator|
|
||||
|
||||
@@ -15,16 +15,6 @@ FactoryBot.define do
|
||||
end
|
||||
end
|
||||
|
||||
trait :minor do
|
||||
minor true
|
||||
guardian_first_name "Guardian1"
|
||||
guardian_last_name "First"
|
||||
guardian_2_first_name "Guardian2"
|
||||
guardian_2_last_name "Second"
|
||||
guardian_phone "1111"
|
||||
guardian_2_phone "2222"
|
||||
end
|
||||
|
||||
trait :with_photo do
|
||||
photos do
|
||||
path = Rails.root.join("spec", "fixtures", "files", "material_photo.png")
|
||||
|
||||
@@ -11,12 +11,11 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
sign_in(current_user)
|
||||
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)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_release_template
|
||||
expect(page).to have_content import_release_template
|
||||
end
|
||||
|
||||
scenario 'creating a new release template' do
|
||||
@@ -178,7 +177,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).to have_content('PREVIEW ONLY')
|
||||
expect(pdf_body).to have_content('Material Release')
|
||||
expect(pdf_body).to have_content('Guardian')
|
||||
expect(pdf_body).not_to have_content('Guardian')
|
||||
end
|
||||
|
||||
context 'preventing creation of release template with wrong fee value' do
|
||||
@@ -379,7 +378,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).not_to have_content create_release_template
|
||||
expect(page).not_to have_content import_release_template
|
||||
end
|
||||
|
||||
it 'does not show edit button' do
|
||||
@@ -411,12 +409,11 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
expect(page).to have_content('Delete')
|
||||
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)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_release_template
|
||||
expect(page).to have_content import_release_template
|
||||
end
|
||||
|
||||
it 'shows edit button when contract template is not signed' do
|
||||
@@ -508,10 +505,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
t 'contract_templates.splash.actions.create_template'
|
||||
end
|
||||
|
||||
def import_release_template
|
||||
t 'contract_templates.splash.actions.import_template'
|
||||
end
|
||||
|
||||
def signature_legal_text_trix_field
|
||||
'Signature legal text'
|
||||
end
|
||||
|
||||
@@ -93,7 +93,7 @@ feature 'User managing broadcasts' do
|
||||
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||
|
||||
expect(page).to have_content stream_begun_message
|
||||
expect(page).to have_selector('div#broadcast_video', count: 2)
|
||||
expect(page).to have_selector('div#broadcast_video', count: 1)
|
||||
|
||||
broadcast.streamer_status = :idle
|
||||
broadcast.status = :idle
|
||||
@@ -164,21 +164,6 @@ feature 'User managing broadcasts' do
|
||||
click_on add_file_button
|
||||
end
|
||||
|
||||
scenario 'manager user can click delete button next to the file and delete file', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
expect(page).to have_content delete_file_button, count: 3
|
||||
|
||||
accept_alert do
|
||||
first('a', text: delete_file_button).click
|
||||
end
|
||||
|
||||
expect(page).to have_content delete_file_button, count: 2
|
||||
expect(Broadcast.find(broadcast.id).files.count).to eq 2
|
||||
end
|
||||
|
||||
scenario 'visit multi-view broadcast page', js: true do
|
||||
broadcast_one = create(:broadcast, :with_stream, :with_files, name: 'Broadcast 1', project: project)
|
||||
broadcast_two = create(:broadcast, :with_stream, :with_files, name: 'Broadcast 2', project: project)
|
||||
@@ -213,14 +198,6 @@ feature 'User managing broadcasts' do
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).not_to have_content create_stream
|
||||
end
|
||||
|
||||
scenario 'associate user does not see delete button next to the file', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
expect(page).to have_content delete_file_button, count: 0
|
||||
end
|
||||
end
|
||||
|
||||
context 'When the user is account manager' do
|
||||
@@ -232,21 +209,6 @@ feature 'User managing broadcasts' do
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_stream
|
||||
end
|
||||
|
||||
scenario 'account manager user can click delete button next to the file and delete file', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
expect(page).to have_content delete_file_button, count: 3
|
||||
|
||||
accept_alert do
|
||||
first('a', text: delete_file_button).click
|
||||
end
|
||||
|
||||
expect(page).to have_content delete_file_button, count: 2
|
||||
expect(Broadcast.find(broadcast.id).files.count).to eq 2
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -300,9 +262,5 @@ feature 'User managing broadcasts' do
|
||||
'Live stream is waiting to begin'
|
||||
end
|
||||
|
||||
def delete_file_button
|
||||
t 'broadcasts.file.actions.delete_file'
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -40,93 +40,6 @@ feature "User managing material releases" do
|
||||
expect(MaterialRelease.last.photos.attached?).to eq true
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_material_release_path(project.account, project, contract_template)
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'false'
|
||||
expect(field).not_to be_visible
|
||||
end
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'true'
|
||||
expect(field).to be_visible
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'creating a release for a minor', js: true do
|
||||
project = create(:project, members: current_user, account: current_user.primary_account)
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_material_release_path(project.account, project, contract_template)
|
||||
|
||||
expect(page).not_to have_content guardian_information_heading.upcase
|
||||
expect(page).not_to have_content guardian_photo_heading.upcase
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
expect(page).to have_content guardian_information_heading.upcase
|
||||
expect(page).to have_content guardian_photo_heading.upcase
|
||||
expect(page).to have_content guardian_email_field.titleize
|
||||
|
||||
fill_all_fields
|
||||
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
fill_in_guardian_address_fields
|
||||
|
||||
draw_signature file_fixture("signature.png"), signature_field
|
||||
|
||||
click_button submit_release_button
|
||||
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
end
|
||||
|
||||
scenario 'creating a release for a minor with two guardians', js: true do
|
||||
project = create(:project, members: current_user, account: current_user.primary_account)
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_material_release_path(project.account, project, contract_template)
|
||||
|
||||
expect(page).not_to have_content guardian_2_information_heading.upcase
|
||||
expect(page).not_to have_content guardian_2_photo_heading.upcase
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
expect(page).to have_content guardian_information_heading.upcase
|
||||
expect(page).to have_content guardian_photo_heading.upcase
|
||||
expect(page).to have_content guardian_email_field.titleize
|
||||
|
||||
expect(page).to have_content guardian_2_information_heading.upcase
|
||||
expect(page).to have_content guardian_2_photo_heading.upcase
|
||||
expect(page).to have_content guardian_2_phone_field.titleize
|
||||
|
||||
fill_all_fields
|
||||
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
fill_in_guardian_address_fields
|
||||
draw_signature file_fixture("signature.png"), signature_field
|
||||
|
||||
fill_in guardian_2_first_name_field, with: 'Second'
|
||||
fill_in guardian_2_last_name_field, with: 'Guardian'
|
||||
fill_in guardian_2_phone_field, with: '999'
|
||||
|
||||
click_button submit_release_button
|
||||
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
expect(MaterialRelease.last.guardian_2_first_name).to eq 'Second'
|
||||
end
|
||||
|
||||
scenario "creating release is possible only after filling all fields", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
@@ -185,7 +98,7 @@ feature "User managing material releases" do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "creating a release for and adult", js: true do
|
||||
scenario "creating a release", js: true do
|
||||
visit new_project_material_release_path(project)
|
||||
|
||||
by "attaching only a contract" do
|
||||
@@ -207,94 +120,13 @@ feature "User managing material releases" do
|
||||
click_button create_release_button
|
||||
|
||||
expect(page).to have_content(create_release_notice)
|
||||
expect(page).to have_photo("material_photo.png", visible: :all)
|
||||
expect(page).to have_photo("material_photo.png")
|
||||
|
||||
click_on "Manage"
|
||||
expect(page).to have_link("Download")
|
||||
end
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
|
||||
visit new_project_material_release_path(project)
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'false'
|
||||
expect(field).not_to be_visible
|
||||
end
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'true'
|
||||
expect(field).to be_visible
|
||||
end
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor", js: true do
|
||||
visit new_project_material_release_path(project)
|
||||
|
||||
expect(page).not_to have_content guardian_information_heading.upcase
|
||||
expect(page).not_to have_content guardian_photo_heading
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
expect(page).to have_content guardian_information_heading.upcase
|
||||
expect(page).to have_content guardian_photo_heading
|
||||
expect(page).to have_content guardian_email_field.titleize
|
||||
|
||||
fill_in_release_fields name: "Apple Laptop"
|
||||
attach_file contract_field, Rails.root.join(file_fixture("contract.pdf")), visible: false
|
||||
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
fill_in_guardian_address_fields
|
||||
|
||||
click_button import_release_button
|
||||
|
||||
expect(page).to have_content successful_import_message
|
||||
expect(MaterialRelease.last.guardian_first_name).to eq 'Guardian'
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor with two guardians", js: true do
|
||||
visit new_project_material_release_path(project)
|
||||
|
||||
expect(page).not_to have_content guardian_2_information_heading.upcase
|
||||
expect(page).not_to have_content guardian_2_photo_heading
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
expect(page).to have_content guardian_information_heading.upcase
|
||||
expect(page).to have_content guardian_photo_heading
|
||||
expect(page).to have_content guardian_email_field.titleize
|
||||
|
||||
expect(page).to have_content guardian_2_information_heading.upcase
|
||||
expect(page).to have_content guardian_2_photo_heading
|
||||
expect(page).to have_content guardian_2_phone_field.titleize
|
||||
|
||||
fill_in_release_fields name: "Apple Laptop"
|
||||
attach_file contract_field, Rails.root.join(file_fixture("contract.pdf")), visible: false
|
||||
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
fill_in_guardian_address_fields
|
||||
|
||||
fill_in guardian_2_first_name_field, with: 'Second'
|
||||
fill_in guardian_2_last_name_field, with: 'Guardian'
|
||||
fill_in guardian_2_phone_field, with: '999'
|
||||
|
||||
click_button import_release_button
|
||||
|
||||
expect(page).to have_content successful_import_message
|
||||
expect(MaterialRelease.last.guardian_first_name).to eq 'Guardian'
|
||||
expect(MaterialRelease.last.guardian_2_first_name).to eq 'Second'
|
||||
end
|
||||
|
||||
scenario "updating an existing release", js: true do
|
||||
material_release = create(:material_release, :non_native, project: project)
|
||||
|
||||
@@ -358,7 +190,7 @@ feature "User managing material releases" do
|
||||
click_on "Save Changes"
|
||||
|
||||
expect(page).to have_content("The release has been updated")
|
||||
expect(page).to have_photo("material_photo.png", visible: :all)
|
||||
expect(page).to have_photo("material_photo.png")
|
||||
end
|
||||
|
||||
scenario "viewing the contract PDF" do
|
||||
@@ -587,8 +419,8 @@ feature "User managing material releases" do
|
||||
"material_release[person_address_zip]"
|
||||
end
|
||||
|
||||
def have_photo(filename, visible: true)
|
||||
have_selector("img[src*='#{filename}']", visible: visible)
|
||||
def have_photo(filename)
|
||||
have_selector("img[src*='#{filename}']")
|
||||
end
|
||||
|
||||
def import_material_release_link(project)
|
||||
@@ -710,107 +542,4 @@ feature "User managing material releases" do
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
|
||||
def person_is_minor_checkbox
|
||||
'material_release_minor'
|
||||
end
|
||||
|
||||
def guardian_2_first_name_field
|
||||
t 'helpers.label.material_release.guardian_2_first_name'
|
||||
end
|
||||
|
||||
def guardian_2_last_name_field
|
||||
t 'helpers.label.material_release.guardian_2_last_name'
|
||||
end
|
||||
|
||||
def guardian_2_phone_field
|
||||
t 'helpers.label.material_release.guardian_2_phone'
|
||||
end
|
||||
|
||||
def guardian_first_name_field
|
||||
t 'helpers.label.material_release.guardian_first_name'
|
||||
end
|
||||
|
||||
def guardian_last_name_field
|
||||
t 'helpers.label.material_release.guardian_last_name'
|
||||
end
|
||||
|
||||
def guardian_phone_field
|
||||
t 'helpers.label.material_release.guardian_phone'
|
||||
end
|
||||
|
||||
def guardian_email_field
|
||||
t 'helpers.label.material_release.guardian_email'
|
||||
end
|
||||
|
||||
def guardian_address_street1_field
|
||||
t('helpers.label.material_release.guardian_address_street1')
|
||||
end
|
||||
|
||||
def guardian_address_city_field
|
||||
t('helpers.label.material_release.guardian_address_city')
|
||||
end
|
||||
|
||||
def guardian_address_state_field
|
||||
t('helpers.label.material_release.guardian_address_state')
|
||||
end
|
||||
|
||||
def guardian_address_zip_field
|
||||
t('helpers.label.material_release.guardian_address_zip')
|
||||
end
|
||||
|
||||
def guardian_photo_field
|
||||
'material_release[guardian_photo]'
|
||||
end
|
||||
|
||||
def guardian_2_photo_field
|
||||
'material_release[guardian_2_photo]'
|
||||
end
|
||||
|
||||
def fill_in_guardian_address_fields
|
||||
fill_in guardian_address_street1_field, with: "124 Test Lane"
|
||||
fill_in guardian_address_city_field, with: "New York"
|
||||
fill_in guardian_address_state_field, with: "NY"
|
||||
fill_in guardian_address_zip_field, with: '1000'
|
||||
end
|
||||
|
||||
def submit_release_button
|
||||
'I have read and agree to the above'
|
||||
end
|
||||
|
||||
def successful_submission_message
|
||||
'Your release was successfully submitted. Thank you.'
|
||||
end
|
||||
|
||||
def guardian_information_heading
|
||||
t 'public.material_releases.new.guardian_info.heading'
|
||||
end
|
||||
|
||||
def guardian_photo_heading
|
||||
t 'public.material_releases.new.guardian_photo.heading'
|
||||
end
|
||||
|
||||
def guardian_2_information_heading
|
||||
t 'public.material_releases.new.guardian_2_info.heading'
|
||||
end
|
||||
|
||||
def guardian_2_photo_heading
|
||||
t 'public.material_releases.new.guardian_2_photo.heading'
|
||||
end
|
||||
|
||||
def contract_field
|
||||
'material_release[contract]'
|
||||
end
|
||||
|
||||
def import_release_button
|
||||
t 'helpers.submit.material_release.create'
|
||||
end
|
||||
|
||||
def successful_import_message
|
||||
t 'material_releases.create.notice'
|
||||
end
|
||||
|
||||
def signature_field
|
||||
'material_release_signature_base64'
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user