Compare commits
16 Commits
send-error
...
fix-stream
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7fe1dadaf2 | ||
|
|
c6c10587c8 | ||
|
|
8f13589c55 | ||
|
|
cd0de9154c | ||
|
|
2590b6bdc9 | ||
|
|
40f241b75f | ||
|
|
add8304eab | ||
|
|
f04d34d337 | ||
|
|
c033f5df17 | ||
|
|
7f49f31ebf | ||
|
|
4c49a5db03 | ||
|
|
35303cb570 | ||
|
|
1127f09263 | ||
|
|
19b1e75384 | ||
|
|
93a4ce462d | ||
|
|
0e16791d8b |
@@ -21,11 +21,13 @@ $(document).on "turbolinks:load", ->
|
|||||||
|
|
||||||
refreshBroadcastVideo: (data) ->
|
refreshBroadcastVideo: (data) ->
|
||||||
$("#broadcast_updates").html data.status_content
|
$("#broadcast_updates").html data.status_content
|
||||||
if data.streamer_status == 'recording' && data.status == 'active'
|
stream_selected = $("#broadcast_video").data('videoType') == 'stream';
|
||||||
|
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.playback_url
|
source: data.full_live_stream_playback_url
|
||||||
width: '100%',
|
width: '100%',
|
||||||
height: '100%',
|
height: '100%',
|
||||||
mute: true,
|
mute: true,
|
||||||
50
app/assets/javascripts/group_qr_code.js
Normal file
50
app/assets/javascripts/group_qr_code.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
$(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');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.warn('Play prev : ', playback_url);
|
$("#broadcast_video").data('videoType', 'recording');
|
||||||
|
|
||||||
var playback_url = $(this).attr("data-playback-url")
|
var playback_url = $(this).attr("data-playback-url")
|
||||||
$("#broadcast_video").empty();
|
$("#broadcast_video").empty();
|
||||||
@@ -23,4 +23,6 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
|||||||
$(this).siblings().children("i").remove();
|
$(this).siblings().children("i").remove();
|
||||||
$(this).addClass('active');
|
$(this).addClass('active');
|
||||||
$(this).prepend('<i class="fa fa-check"> </i>');
|
$(this).prepend('<i class="fa fa-check"> </i>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on("click", "[data-behavior=play_stream]", function() { $("#broadcast_video").data('videoType', 'stream'); });
|
||||||
@@ -16,6 +16,7 @@ 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
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ class Api::ApiController < ActionController::Base
|
|||||||
def return_error(exception)
|
def return_error(exception)
|
||||||
raise exception if Rails.env.test?
|
raise exception if Rails.env.test?
|
||||||
|
|
||||||
logger.error "==Handled======="
|
Raven.capture_exception(exception)
|
||||||
|
|
||||||
|
logger.error "==Handled======"
|
||||||
logger.error exception.message
|
logger.error exception.message
|
||||||
logger.error exception.backtrace.join("\n")
|
logger.error exception.backtrace.join("\n")
|
||||||
logger.error "==Handled======="
|
logger.error "==Handled======="
|
||||||
|
|||||||
11
app/controllers/api/medical_releases_controller.rb
Normal file
11
app/controllers/api/medical_releases_controller.rb
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
class Api::MedicalReleasesController < Api::ReleasesController
|
||||||
|
deserializable_resource :medical_release, only: [:create, :update]
|
||||||
|
|
||||||
|
def model_name
|
||||||
|
"medical_release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def attributes_for_index
|
||||||
|
[:name]
|
||||||
|
end
|
||||||
|
end
|
||||||
11
app/controllers/api/misc_releases_controller.rb
Normal file
11
app/controllers/api/misc_releases_controller.rb
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
class Api::MiscReleasesController < Api::ReleasesController
|
||||||
|
deserializable_resource :misc_release, only: [:create, :update]
|
||||||
|
|
||||||
|
def model_name
|
||||||
|
"misc_release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def attributes_for_index
|
||||||
|
[:name]
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -10,8 +10,10 @@ class Api::SyncController < Api::ApiController
|
|||||||
@appearance_releases = (AppearanceRelease.where(project: accessible_projects))
|
@appearance_releases = (AppearanceRelease.where(project: accessible_projects))
|
||||||
@location_releases = (LocationRelease.where(project: accessible_projects))
|
@location_releases = (LocationRelease.where(project: accessible_projects))
|
||||||
@material_releases = (MaterialRelease.where(project: accessible_projects))
|
@material_releases = (MaterialRelease.where(project: accessible_projects))
|
||||||
|
@medical_releases = MedicalRelease.where(project: accessible_projects)
|
||||||
|
@misc_releases = MiscRelease.where(project: accessible_projects)
|
||||||
@talent_releases = (TalentRelease.where(project: accessible_projects))
|
@talent_releases = (TalentRelease.where(project: accessible_projects))
|
||||||
@notes = notes_query(Note.where(notable: @appearance_releases + @location_releases + @material_releases + @talent_releases + @acquired_media_releases ))
|
@notes = notes_query(Note.where(notable: @appearance_releases + @location_releases + @material_releases + @medical_releases + @misc_releases + @talent_releases + @acquired_media_releases ))
|
||||||
|
|
||||||
render json: {
|
render json: {
|
||||||
data: {
|
data: {
|
||||||
@@ -22,6 +24,8 @@ class Api::SyncController < Api::ApiController
|
|||||||
appearance_releases: releases_query(@appearance_releases),
|
appearance_releases: releases_query(@appearance_releases),
|
||||||
location_releases: releases_query(@location_releases),
|
location_releases: releases_query(@location_releases),
|
||||||
material_releases: releases_query(@material_releases),
|
material_releases: releases_query(@material_releases),
|
||||||
|
medical_releases: releases_query(@medical_releases),
|
||||||
|
misc_releases: releases_query(@misc_releases),
|
||||||
talent_releases: releases_query(@talent_releases),
|
talent_releases: releases_query(@talent_releases),
|
||||||
notes: @notes
|
notes: @notes
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ class Api::UserTokenController < Knock::AuthTokenController
|
|||||||
|
|
||||||
# Catch exception and return JSON-formatted error
|
# Catch exception and return JSON-formatted error
|
||||||
def return_error(exception)
|
def return_error(exception)
|
||||||
|
Raven.capture_exception(exception)
|
||||||
|
|
||||||
logger.error "==Handled======="
|
logger.error "==Handled======="
|
||||||
logger.error exception.message
|
logger.error exception.message
|
||||||
logger.error exception.backtrace.join("\n")
|
logger.error exception.backtrace.join("\n")
|
||||||
|
|||||||
28
app/controllers/approvals_controller.rb
Normal file
28
app/controllers/approvals_controller.rb
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
class ApprovalsController < ApplicationController
|
||||||
|
before_action :set_releasable
|
||||||
|
before_action :set_project
|
||||||
|
|
||||||
|
layout "project"
|
||||||
|
|
||||||
|
def create
|
||||||
|
@releasable.approve_by(current_user)
|
||||||
|
|
||||||
|
if @releasable.save
|
||||||
|
redirect_to [@project, "#{@releasable_param.name.pluralize}"], notice: t('.release_approved', release_type: @releasable.model_name.human)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
@project = @releasable.project
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -33,6 +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)
|
||||||
@files = @broadcast.files.order("created_at DESC").paginate(page: 1)
|
@files = @broadcast.files.order("created_at DESC").paginate(page: 1)
|
||||||
|
|
||||||
@@ -55,7 +60,7 @@ class BroadcastsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def broadcast_params
|
def broadcast_params
|
||||||
params.require(:broadcast).permit(:name, files: [])
|
params.require(:broadcast).permit(:name, :shoot_location_time_zone, files: [])
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_project
|
def set_project
|
||||||
|
|||||||
33
app/controllers/contract_templates/duplicates_controller.rb
Normal file
33
app/controllers/contract_templates/duplicates_controller.rb
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ContractTemplates::DuplicatesController < ApplicationController
|
||||||
|
before_action :set_contract_template
|
||||||
|
|
||||||
|
def create
|
||||||
|
authorize(ContractTemplate)
|
||||||
|
new_contract_template = @contract_template.dup
|
||||||
|
new_contract_template.name = I18n.t('contract_templates.duplicate.name_prefix', template_name: @contract_template.name)
|
||||||
|
|
||||||
|
# Duplicate rich text fields
|
||||||
|
|
||||||
|
new_contract_template.body = @contract_template.body
|
||||||
|
new_contract_template.guardian_clause = @contract_template.guardian_clause
|
||||||
|
new_contract_template.signature_legal_text = @contract_template.signature_legal_text
|
||||||
|
|
||||||
|
if new_contract_template.save
|
||||||
|
redirect_to [:edit, new_contract_template]
|
||||||
|
else
|
||||||
|
redirect_to [@contract_template.project, :contract_templates], alert: t('.error')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def contract_templates
|
||||||
|
policy_scope(ContractTemplate)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_contract_template
|
||||||
|
@contract_template = contract_templates.find(params[:contract_template_id])
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -16,7 +16,12 @@ class ContractTemplates::QrCodesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def qr_code
|
def qr_code
|
||||||
authorize QrCode.build_from_contract_template(@contract_template)
|
if params[:multi_sign_ids].present?
|
||||||
|
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
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ class ContractTemplatesController < ApplicationController
|
|||||||
|
|
||||||
layout 'project'
|
layout 'project'
|
||||||
|
|
||||||
before_action :set_project, except: [:destroy]
|
before_action :set_project, except: [:destroy, :edit, :update]
|
||||||
before_action :set_contract_template, only: [:destroy]
|
before_action :set_contract_template, only: [:destroy, :edit, :update]
|
||||||
|
before_action :set_project_from_contract_template, only: [:edit, :update]
|
||||||
before_action :show_splash_screen, only: :index
|
before_action :show_splash_screen, only: :index
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@@ -32,6 +33,20 @@ class ContractTemplatesController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@release_type = @contract_template.release_type
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@contract_template.attributes = contract_template_params
|
||||||
|
|
||||||
|
if @contract_template.save
|
||||||
|
redirect_to [@project, :contract_templates], notice: t('.notice')
|
||||||
|
else
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@contract_template.archive
|
@contract_template.archive
|
||||||
redirect_to [@contract_template.project, :contract_templates], alert: t('.archived_notice')
|
redirect_to [@contract_template.project, :contract_templates], alert: t('.archived_notice')
|
||||||
@@ -39,6 +54,10 @@ class ContractTemplatesController < ApplicationController
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def set_project_from_contract_template
|
||||||
|
@project = @contract_template.project
|
||||||
|
end
|
||||||
|
|
||||||
def show_splash_screen
|
def show_splash_screen
|
||||||
render :splash if contract_templates.non_archived.count.zero?
|
render :splash if contract_templates.non_archived.count.zero?
|
||||||
end
|
end
|
||||||
@@ -62,18 +81,19 @@ class ContractTemplatesController < ApplicationController
|
|||||||
def contract_template_params
|
def contract_template_params
|
||||||
params
|
params
|
||||||
.require(:contract_template)
|
.require(:contract_template)
|
||||||
.permit(:name, :release_type, :body, :guardian_clause, :fee,
|
.permit(:name, :release_type, :body, :guardian_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,
|
:term_id, :term_text, :accessibility,
|
||||||
:restriction_id, :restriction_text,
|
:restriction_id, :restriction_text,
|
||||||
:question_1_text, :question_2_text,
|
:question_1_text, :question_2_text,
|
||||||
:question_3_text, :question_4_text,
|
:question_3_text, :question_4_text,
|
||||||
:question_5_text, :question_6_text,
|
:question_5_text, :question_6_text,
|
||||||
:question_7_text, :question_8_text,
|
:question_7_text, :question_8_text,
|
||||||
:question_9_text, :question_10_text,
|
:question_9_text, :question_10_text,
|
||||||
:question_11_text, :question_12_text,
|
:question_11_text, :question_12_text,
|
||||||
:question_13_text, :question_14_text,
|
:question_13_text, :question_14_text,
|
||||||
:question_15_text)
|
:question_15_text)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
18
app/controllers/public/contract_templates_controller.rb
Normal file
18
app/controllers/public/contract_templates_controller.rb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
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
|
||||||
@@ -14,6 +14,10 @@ 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
|
||||||
@@ -28,8 +32,9 @@ class StreamNotificationsController < ApplicationController
|
|||||||
asset_uid = notification.dig(:object, :id)
|
asset_uid = notification.dig(:object, :id)
|
||||||
playback_uid = notification.dig(:data, :playback_ids, 0, :id)
|
playback_uid = notification.dig(:data, :playback_ids, 0, :id)
|
||||||
file_name = notification.dig(:data, :static_renditions, :files, -1, :name)
|
file_name = notification.dig(:data, :static_renditions, :files, -1, :name)
|
||||||
|
duration = notification.dig(:data, :duration)
|
||||||
|
|
||||||
recording = @broadcast.broadcast_recordings.create!(asset_uid: asset_uid, asset_playback_uid: playback_uid, file_name: file_name)
|
recording = @broadcast.broadcast_recordings.create!(asset_uid: asset_uid, asset_playback_uid: playback_uid, file_name: file_name, duration: duration)
|
||||||
recordings = @broadcast.broadcast_recordings.order_by_recent.paginate(page: params[:page])
|
recordings = @broadcast.broadcast_recordings.order_by_recent.paginate(page: params[:page])
|
||||||
|
|
||||||
link = helpers.link_to(recording.broadcast_name.titleize, recording.download_url, target: "_blank")
|
link = helpers.link_to(recording.broadcast_name.titleize, recording.download_url, target: "_blank")
|
||||||
@@ -58,7 +63,8 @@ class StreamNotificationsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def set_broadcast
|
def set_broadcast
|
||||||
if notification_type == "video.asset.static_renditions.ready"
|
case notification_type
|
||||||
|
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
|
||||||
|
|||||||
@@ -5,4 +5,12 @@ module TooltipHelper
|
|||||||
concat tag.div(class: "tooltip-inner")
|
concat tag.div(class: "tooltip-inner")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def get_approval_data_for_releasable(release)
|
||||||
|
if release.approved_by_user_name.present?
|
||||||
|
"#{release.approved_by_user_name} [#{release.approved_by_user_email}]"
|
||||||
|
else
|
||||||
|
release.approved_by_user_email
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ class GenerateContractsZipJob < ApplicationJob
|
|||||||
before_perform do |job|
|
before_perform do |job|
|
||||||
@project = job.arguments.first
|
@project = job.arguments.first
|
||||||
@download = job.arguments.second
|
@download = job.arguments.second
|
||||||
release_type = job.arguments.third
|
@release_type = job.arguments.third
|
||||||
@folder_name = "#{@project.name.parameterize}_#{get_release_name(release_type).gsub('_', '-')}"
|
@folder_name = "#{@project.name.parameterize}_#{get_release_name(@release_type).gsub('_', '-')}"
|
||||||
@download.update!(name: @folder_name, status: :pending)
|
@download.update!(name: @folder_name, status: :pending)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -20,9 +20,14 @@ class GenerateContractsZipJob < ApplicationJob
|
|||||||
files.each do |attachment|
|
files.each do |attachment|
|
||||||
zipfile.add(attachment, File.join("#{dir}/", attachment))
|
zipfile.add(attachment, File.join("#{dir}/", attachment))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if @release_type.constantize.include?(CsvExportable)
|
||||||
|
csv_file = generate_csv releases
|
||||||
|
zipfile.get_output_stream("#{@folder_name}.csv") { |f| f.puts(csv_file) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@download.file.attach(io: File.open(zipfile_name), filename: @folder_name)
|
@download.file.attach(io: File.open(zipfile_name), filename: "#{@folder_name}.zip")
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
Rails.logger.error("Failed to generate download for project (##{project.id}) with release type #{release_type}\n" + e.message)
|
Rails.logger.error("Failed to generate download for project (##{project.id}) with release type #{release_type}\n" + e.message)
|
||||||
@@ -43,6 +48,19 @@ class GenerateContractsZipJob < ApplicationJob
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def generate_csv(releases)
|
||||||
|
release_class = @release_type.constantize
|
||||||
|
headers = release_class.csv_headers
|
||||||
|
|
||||||
|
CSV.generate(headers: true) do |csv|
|
||||||
|
csv << headers
|
||||||
|
releases.each do |release|
|
||||||
|
csv_row_data = release.to_csv_row
|
||||||
|
csv << csv_row_data
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def get_release_name(release_type)
|
def get_release_name(release_type)
|
||||||
release_type.constantize.model_name.plural
|
release_type.constantize.model_name.plural
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -9,6 +9,14 @@ class AcquiredMediaRelease < ApplicationRecord
|
|||||||
include Signable
|
include Signable
|
||||||
include Syncable
|
include Syncable
|
||||||
include PersonName
|
include PersonName
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name file_infos_count]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
has_many :file_infos, as: :releasable, dependent: :destroy
|
has_many :file_infos, as: :releasable, dependent: :destroy
|
||||||
|
|
||||||
@@ -57,4 +65,8 @@ class AcquiredMediaRelease < ApplicationRecord
|
|||||||
def uses_edl?
|
def uses_edl?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def file_infos_count
|
||||||
|
file_infos.any? ? file_infos.size : I18n.t('acquired_media_releases.acquired_media_release.no_media')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -15,6 +15,14 @@ class AppearanceRelease < ApplicationRecord
|
|||||||
include SecondGuardianPhotoable
|
include SecondGuardianPhotoable
|
||||||
include GuardianName
|
include GuardianName
|
||||||
include SecondGuardianName
|
include SecondGuardianName
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name contact_info]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
has_one_attached :person_photo
|
has_one_attached :person_photo
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,10 @@ 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
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ class BroadcastRecording < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def download_file_name
|
def download_file_name
|
||||||
"#{broadcast_name}_Date_#{created_at.strftime("%Y-%m-%d")}_Time_#{created_at.strftime("%T")}".parameterize
|
"#{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
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
17
app/models/concerns/approvable.rb
Normal file
17
app/models/concerns/approvable.rb
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
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
|
||||||
56
app/models/concerns/csv_exportable.rb
Normal file
56
app/models/concerns/csv_exportable.rb
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module CsvExportable
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
COMMON_HEADERS = %i[approved? notes tags signed_at].freeze
|
||||||
|
COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze
|
||||||
|
|
||||||
|
included do
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
|
||||||
|
def csv_headers
|
||||||
|
headers = custom_csv_exportable_headers + COMMON_HEADERS
|
||||||
|
|
||||||
|
headers.map do |header|
|
||||||
|
I18n.t("#{model_name.plural}.index.table_headers.#{header}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_csv_row
|
||||||
|
(self.class.custom_csv_exportable_headers + COMMON_VALUES).map do |function|
|
||||||
|
send(function)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def contact_info
|
||||||
|
contact_info = ''
|
||||||
|
contact_info += "#{person_address}; " if person_address.present?
|
||||||
|
contact_info += "P: #{person_phone}; " if person_phone.present?
|
||||||
|
contact_info += "E: #{person_email}" if person_email.present?
|
||||||
|
contact_info.delete_suffix '; '
|
||||||
|
end
|
||||||
|
|
||||||
|
def clean_notes
|
||||||
|
notes = ''
|
||||||
|
self.notes.order_by_recent.each do |note|
|
||||||
|
notes += "#{note.content}(#{note.email}), "
|
||||||
|
end
|
||||||
|
notes.delete_suffix ', '
|
||||||
|
end
|
||||||
|
|
||||||
|
def clean_tags
|
||||||
|
tags = ''
|
||||||
|
self.tags.each do |tag|
|
||||||
|
tags += "#{tag.name}, "
|
||||||
|
end
|
||||||
|
tags.delete_suffix ', '
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -21,6 +21,7 @@ class ContractTemplate < ApplicationRecord
|
|||||||
monetize :fee_cents
|
monetize :fee_cents
|
||||||
has_rich_text :body
|
has_rich_text :body
|
||||||
has_rich_text :guardian_clause
|
has_rich_text :guardian_clause
|
||||||
|
has_rich_text :signature_legal_text
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :release_type, presence: true
|
validates :release_type, presence: true
|
||||||
@@ -42,6 +43,8 @@ class ContractTemplate < ApplicationRecord
|
|||||||
scope :non_archived, -> { where(archived_at: nil) }
|
scope :non_archived, -> { where(archived_at: nil) }
|
||||||
scope :order_by_name, -> { order(:name) }
|
scope :order_by_name, -> { order(:name) }
|
||||||
|
|
||||||
|
enum accessibility: [:public_template, :private_template]
|
||||||
|
|
||||||
def fee?
|
def fee?
|
||||||
!fee.zero?
|
!fee.zero?
|
||||||
end
|
end
|
||||||
@@ -65,4 +68,14 @@ class ContractTemplate < ApplicationRecord
|
|||||||
def has_questionnaire?
|
def has_questionnaire?
|
||||||
(1..NUMBER_OF_CUSTOM_FIELDS).any? { |n| public_send("question_#{n}_text").presence }
|
(1..NUMBER_OF_CUSTOM_FIELDS).any? { |n| public_send("question_#{n}_text").presence }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def editable?
|
||||||
|
releases.size.zero?
|
||||||
|
end
|
||||||
|
|
||||||
|
def attributes
|
||||||
|
result = super()
|
||||||
|
result[:signature_legal_text] = signature_legal_text.as_json
|
||||||
|
result
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,6 +10,14 @@ class LocationRelease < ApplicationRecord
|
|||||||
include Syncable
|
include Syncable
|
||||||
include Taggable
|
include Taggable
|
||||||
include PersonName
|
include PersonName
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name address]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
composed_of :address,
|
composed_of :address,
|
||||||
mapping: [
|
mapping: [
|
||||||
|
|||||||
@@ -10,8 +10,16 @@ class MaterialRelease < ApplicationRecord
|
|||||||
include Syncable
|
include Syncable
|
||||||
include Taggable
|
include Taggable
|
||||||
include PersonName
|
include PersonName
|
||||||
|
include CsvExportable
|
||||||
composed_of :person_address,
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
composed_of :person_address,
|
||||||
class_name: "Address",
|
class_name: "Address",
|
||||||
mapping: [
|
mapping: [
|
||||||
%w(person_address_street1 street1),
|
%w(person_address_street1 street1),
|
||||||
@@ -30,15 +38,15 @@ class MaterialRelease < ApplicationRecord
|
|||||||
validates :signature, attached: true
|
validates :signature, attached: true
|
||||||
end
|
end
|
||||||
|
|
||||||
searchable_on %i[
|
searchable_on %i[
|
||||||
name
|
name
|
||||||
person_address_street1 person_address_street2 person_address_city person_address_state person_address_zip person_address_country
|
person_address_street1 person_address_street2 person_address_city person_address_state person_address_zip person_address_country
|
||||||
]
|
]
|
||||||
|
|
||||||
def contact_person
|
def contact_person
|
||||||
@contact_person ||= Contact.new(person_name, person_address, person_email, person_phone)
|
@contact_person ||= Contact.new(person_name, person_address, person_email, person_phone)
|
||||||
end
|
end
|
||||||
|
|
||||||
def minor?
|
def minor?
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,6 +11,14 @@ class MedicalRelease < ApplicationRecord
|
|||||||
include SecondGuardianPhotoable
|
include SecondGuardianPhotoable
|
||||||
include GuardianName
|
include GuardianName
|
||||||
include SecondGuardianName
|
include SecondGuardianName
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name contact_info]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
NUMBER_OF_CUSTOM_FIELDS = 15
|
NUMBER_OF_CUSTOM_FIELDS = 15
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,14 @@ class MiscRelease < ApplicationRecord
|
|||||||
include PersonName
|
include PersonName
|
||||||
include GuardianName
|
include GuardianName
|
||||||
include GuardianPhotoable
|
include GuardianPhotoable
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name contact_info]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
NUMBER_OF_CUSTOM_FIELDS = 15
|
NUMBER_OF_CUSTOM_FIELDS = 15
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,15 @@ class MusicRelease < ApplicationRecord
|
|||||||
include Searchable
|
include Searchable
|
||||||
include Taggable
|
include Taggable
|
||||||
include PersonName
|
include PersonName
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name file_infos_count composers_count publishers_count]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
has_many :file_infos, as: :releasable, dependent: :destroy
|
has_many :file_infos, as: :releasable, dependent: :destroy
|
||||||
has_many :composers, dependent: :destroy
|
has_many :composers, dependent: :destroy
|
||||||
has_many :publishers, dependent: :destroy
|
has_many :publishers, dependent: :destroy
|
||||||
@@ -72,6 +80,18 @@ class MusicRelease < ApplicationRecord
|
|||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def file_infos_count
|
||||||
|
file_infos.size
|
||||||
|
end
|
||||||
|
|
||||||
|
def composers_count
|
||||||
|
composers.size
|
||||||
|
end
|
||||||
|
|
||||||
|
def publishers_count
|
||||||
|
publishers.size
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def publisher_percentages_add_up_to_100
|
def publisher_percentages_add_up_to_100
|
||||||
|
|||||||
@@ -10,7 +10,19 @@ class QrCode
|
|||||||
url = Rails.application.routes.url_helpers.url_for(route)
|
url = Rails.application.routes.url_helpers.url_for(route)
|
||||||
filename = [contract_template.project.name, contract_template.name].map(&:parameterize).join("_")
|
filename = [contract_template.project.name, contract_template.name].map(&:parameterize).join("_")
|
||||||
|
|
||||||
new(url, filename)
|
new(url, "#{filename}.png")
|
||||||
|
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
|
end
|
||||||
|
|
||||||
def initialize(url, filename = "qrcode.png")
|
def initialize(url, filename = "qrcode.png")
|
||||||
|
|||||||
@@ -14,6 +14,14 @@ class TalentRelease < ApplicationRecord
|
|||||||
include SecondGuardianPhotoable
|
include SecondGuardianPhotoable
|
||||||
include GuardianName
|
include GuardianName
|
||||||
include SecondGuardianName
|
include SecondGuardianName
|
||||||
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def custom_csv_exportable_headers
|
||||||
|
%i[name phone email]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
composed_of :person_address,
|
composed_of :person_address,
|
||||||
class_name: "Address",
|
class_name: "Address",
|
||||||
@@ -86,6 +94,14 @@ class TalentRelease < ApplicationRecord
|
|||||||
person_name
|
person_name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def phone
|
||||||
|
person_phone
|
||||||
|
end
|
||||||
|
|
||||||
|
def email
|
||||||
|
person_email
|
||||||
|
end
|
||||||
|
|
||||||
def filename_suffix
|
def filename_suffix
|
||||||
"#{person_last_name} #{person_first_name}"
|
"#{person_last_name} #{person_first_name}"
|
||||||
end
|
end
|
||||||
@@ -95,7 +111,7 @@ class TalentRelease < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def uses_edl?
|
def uses_edl?
|
||||||
false
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def second_guardian_present?
|
def second_guardian_present?
|
||||||
|
|||||||
@@ -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 }
|
validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }, allow_blank: true
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -30,4 +30,12 @@ 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
|
||||||
|
|||||||
@@ -26,4 +26,12 @@ 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
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ class ContractTemplatePolicy < ApplicationPolicy
|
|||||||
def resolve
|
def resolve
|
||||||
if user.account_manager?
|
if user.account_manager?
|
||||||
scope.left_outer_joins(:project).where(projects: {account: user.account})
|
scope.left_outer_joins(:project).where(projects: {account: user.account})
|
||||||
else
|
elsif user.manager?
|
||||||
scope.left_outer_joins(project: :project_memberships).where(project_memberships: { user_id: user.id })
|
scope.left_outer_joins(project: :project_memberships).where(project_memberships: { user_id: user.id })
|
||||||
|
else
|
||||||
|
scope.public_template.left_outer_joins(project: :project_memberships).where(project_memberships: { user_id: user.id })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -21,6 +23,18 @@ class ContractTemplatePolicy < ApplicationPolicy
|
|||||||
create?
|
create?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit?
|
||||||
|
record.editable? && create?
|
||||||
|
end
|
||||||
|
|
||||||
|
def update?
|
||||||
|
edit?
|
||||||
|
end
|
||||||
|
|
||||||
|
def duplicate?
|
||||||
|
create?
|
||||||
|
end
|
||||||
|
|
||||||
def import?
|
def import?
|
||||||
if user.account_manager?
|
if user.account_manager?
|
||||||
record.project.account = user.account
|
record.project.account = user.account
|
||||||
|
|||||||
@@ -34,4 +34,12 @@ class LocationReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -34,4 +34,12 @@ 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
|
||||||
|
|||||||
@@ -15,6 +15,14 @@ class MedicalReleasePolicy < ReleasePolicy
|
|||||||
user.manager? || user.account_manager?
|
user.manager? || user.account_manager?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
|
|
||||||
def edit_photos?
|
def edit_photos?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -38,4 +38,12 @@ 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
|
||||||
|
|||||||
@@ -22,4 +22,12 @@ 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
|
||||||
|
|||||||
@@ -34,4 +34,12 @@ 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
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<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>
|
||||||
@@ -35,6 +43,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<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) %>
|
||||||
@@ -39,6 +47,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
15
app/views/approvals/new.html.erb
Normal file
15
app/views/approvals/new.html.erb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<div class="card shadow-sm">
|
||||||
|
<%= card_header text: t(".heading", release_type: @releasable_param.name.titleize), close_action_path: [@project, "#{@releasable_param.name.pluralize}"] %>
|
||||||
|
<div class="card-body">
|
||||||
|
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@releasable, :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| %>
|
||||||
|
<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" %>
|
||||||
|
<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") } %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -3,6 +3,9 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<%= 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" %>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<% if broadcast.streamer_recording? && broadcast.active? %>
|
<% if broadcast.streamer_recording? && broadcast.active? %>
|
||||||
<div id="broadcast_video" class="embed-responsive-item"></div>
|
<div id="broadcast_video" class="embed-responsive-item" data-video-type="stream"></div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<div id="broadcast_video" class="embed-responsive-item">
|
<div id="broadcast_video" class="embed-responsive-item" data-video-type="stream">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<table class="w-100 h-100 bg-secondary">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<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>
|
||||||
@@ -32,7 +33,7 @@
|
|||||||
<%= render @broadcasts %>
|
<%= render @broadcasts %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5" class="py-4 text-center text-muted"><%= t(".empty") %></td>
|
<td colspan="6" class="py-4 text-center text-muted"><%= t(".empty") %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -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), "#", class: "dropdown-item active" %>
|
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", data: { behavior: "play_stream"}, 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, class: class_string("dropdown-item", "active" => @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) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<h5 class="dropdown-header">Previous Sessions</h5>
|
<h5 class="dropdown-header">Previous Sessions</h5>
|
||||||
@@ -102,6 +102,7 @@
|
|||||||
<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>
|
||||||
@@ -110,6 +111,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -18,15 +18,7 @@
|
|||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<div class="embed-responsive-item">
|
<div class="embed-responsive-item">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/435943632" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="text-center align-middle text-white">
|
|
||||||
Video tutorial will be available soon
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<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>
|
||||||
@@ -15,10 +16,16 @@
|
|||||||
<td>
|
<td>
|
||||||
<%= contract_template.releases.size %>
|
<%= contract_template.releases.size %>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-right">
|
<td class="text-right" nowrap>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
|
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
<% if policy(contract_template).edit? %>
|
||||||
|
<%= link_to fa_icon("pencil fw", text: t(".actions.edit")), [:edit, contract_template], class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
|
<% if policy(ContractTemplate).duplicate? %>
|
||||||
|
<%= link_to fa_icon("clone fw", text: t(".actions.duplicate")), contract_template_duplicates_path(contract_template), method: :post, class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(QrCode).show? %>
|
<% if policy(QrCode).show? %>
|
||||||
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -27,7 +34,7 @@
|
|||||||
<%= link_to fa_icon("print", text: "Print"), [:new, contract_template, :blank_contracts], class: "dropdown-item", target: :_blank %>
|
<%= link_to fa_icon("print", text: "Print"), [:new, contract_template, :blank_contracts], class: "dropdown-item", target: :_blank %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if policy(contract_template).destroy? %>
|
<% if policy(contract_template).destroy? %>
|
||||||
<%= link_to fa_icon("archive", text: "Archive"), contract_template, class: "dropdown-item", method: :delete, data: { confirm: "Are you sure?" } %>
|
<%= link_to fa_icon("trash", text: "Delete"), contract_template, class: "dropdown-item", method: :delete, data: { confirm: "Are you sure?" } %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
<%= bootstrap_form_with model: [project, contract_template], local: true do |form| %>
|
<%= bootstrap_form_with model: model, local: true do |form| %>
|
||||||
<%= 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) } }, 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">
|
||||||
|
<%= form.radio_button :accessibility, :public_template, label: "Public", wrapper_class: "mr-3" %>
|
||||||
|
<%= form.radio_button :accessibility, :private_template, label: "Private" %>
|
||||||
|
</div>
|
||||||
<div class="form-row" id="fee_field">
|
<div class="form-row" id="fee_field">
|
||||||
<%= form.number_field :fee, min:"0", max:"99999999", step: "0.01", prepend: "$", wrapper_class: "col-sm-6" %>
|
<%= form.number_field :fee, min:"0", max:"99999999", step: "0.01", prepend: "$", wrapper_class: "col-sm-6" %>
|
||||||
</div>
|
</div>
|
||||||
@@ -25,6 +29,11 @@
|
|||||||
<%= form.rich_text_area :guardian_clause %>
|
<%= form.rich_text_area :guardian_clause %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="signature_legal_text">
|
||||||
|
<%= form.form_group do %>
|
||||||
|
<%= form.rich_text_area :signature_legal_text %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= field_set_tag content_tag(:span, t(".custom_fields.heading"), class: "h6 text-muted text-uppercase"), id: "custom_fields", style: "display: none;" do %>
|
<%= field_set_tag content_tag(:span, t(".custom_fields.heading"), class: "h6 text-muted text-uppercase"), id: "custom_fields", style: "display: none;" do %>
|
||||||
|
|||||||
6
app/views/contract_templates/edit.html.erb
Normal file
6
app/views/contract_templates/edit.html.erb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<div class="card shadow-sm">
|
||||||
|
<%= card_header text: t(".heading"), close_action_path: [@project, :contract_templates] %>
|
||||||
|
<div class="card-body">
|
||||||
|
<%= render "form", model: @contract_template, project: @project, contract_template: @contract_template %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -5,12 +5,14 @@
|
|||||||
<%= 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>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div class="card shadow-sm">
|
<div class="card shadow-sm">
|
||||||
<%= card_header text: t(".heading"), close_action_path: [@project, :contract_templates] %>
|
<%= card_header text: t(".heading"), close_action_path: [@project, :contract_templates] %>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<%= render "form", project: @project, contract_template: @contract_template %>
|
<%= render "form", model: [@project, @contract_template], project: @project, contract_template: @contract_template %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,15 +18,7 @@
|
|||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<div class="embed-responsive-item">
|
<div class="embed-responsive-item">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/435942851" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="text-center align-middle text-white">
|
|
||||||
Video tutorial will be available soon
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
13
app/views/contracts/_for_office_use_only.erb
Normal file
13
app/views/contracts/_for_office_use_only.erb
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<% if preview %>
|
||||||
|
<h1>PREVIEW ONLY</h1>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<p class="heading"><strong><u><%= t '.heading' %></u></strong></p>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<%= 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.issued_to'), releasable.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 %>
|
||||||
|
</dl>
|
||||||
@@ -25,6 +25,13 @@
|
|||||||
<div class="page">
|
<div class="page">
|
||||||
<%= 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?(:approved?) && releasable.approved? %>
|
||||||
|
<div class="page">
|
||||||
|
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% if releasable.class == AcquiredMediaRelease %>
|
<% if releasable.class == AcquiredMediaRelease %>
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<%= render "contracts/files", release: releasable, preview: preview %>
|
<%= render "contracts/files", release: releasable, preview: preview %>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<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" %>
|
||||||
@@ -39,6 +47,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<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><%= LocationRelease.human_attribute_name(:name) %></th>
|
<th><%= LocationRelease.human_attribute_name(:name) %></th>
|
||||||
<th><%= t(".table_headers.address") %>
|
<th><%= t(".table_headers.address") %>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<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" %>
|
||||||
@@ -36,6 +44,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(medical_release) %>">
|
<tr id="<%= dom_id(medical_release) %>">
|
||||||
<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">
|
||||||
|
<% if medical_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(medical_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if medical_release.photo.attached? %>
|
<% if medical_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(medical_release.photo), class: "img-fluid" %>
|
<%= image_tag medium_variant(medical_release.photo), class: "img-fluid" %>
|
||||||
@@ -37,6 +45,9 @@
|
|||||||
<% if policy(medical_release.tags).new? %>
|
<% if policy(medical_release.tags).new? %>
|
||||||
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, medical_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, medical_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(MedicalRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_medical_release_approvals_path(medical_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (medical_release.contract.attached? || medical_release.contract_template.present?) %>
|
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (medical_release.contract.attached? || medical_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [medical_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [medical_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "medical_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "medical_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= MedicalRelease.human_attribute_name(:person_name) %></th>
|
<th><%= MedicalRelease.human_attribute_name(:person_name) %></th>
|
||||||
<th><%= MedicalRelease.human_attribute_name(:contact_info) %></th>
|
<th><%= MedicalRelease.human_attribute_name(:contact_info) %></th>
|
||||||
|
|||||||
15
app/views/medical_releases/review.html.erb
Normal file
15
app/views/medical_releases/review.html.erb
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<div class="card shadow-sm">
|
||||||
|
<%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
|
||||||
|
<div class="card-body">
|
||||||
|
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@medical_release, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
||||||
|
|
||||||
|
<%= bootstrap_form_with model: @medical_release, method: :patch, url: [:approve, @medical_release], local: true do |form| %>
|
||||||
|
<div class="row align-items-center text-center mt-4">
|
||||||
|
<%= link_to t("shared.cancel"), [@medical_release.project, :medical_releases], class: "col-3 text-reset" %>
|
||||||
|
<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") } %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,5 +1,13 @@
|
|||||||
<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" %>
|
||||||
@@ -36,6 +44,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<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>
|
||||||
@@ -36,6 +44,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form %>
|
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -156,7 +156,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form %>
|
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<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>
|
||||||
27
app/views/public/contract_templates/index.html.erb
Normal file
27
app/views/public/contract_templates/index.html.erb
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<% 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>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form, instruction: 'An Authorized Signatory' %>
|
<%= render "shared/signature_fields", form: form, instruction: 'An Authorized Signatory', signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form, instruction: 'For Owner or Authorized Signatory' %>
|
<%= render "shared/signature_fields", form: form, instruction: 'For Owner or Authorized Signatory', signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -145,7 +145,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form %>
|
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -39,9 +39,7 @@
|
|||||||
<%= form.text_field :person_first_name, required: true, wrapper_class: "col-sm-6" %>
|
<%= form.text_field :person_first_name, required: true, wrapper_class: "col-sm-6" %>
|
||||||
<%= form.text_field :person_last_name, required: true, wrapper_class: "col-sm-6" %>
|
<%= form.text_field :person_last_name, required: true, wrapper_class: "col-sm-6" %>
|
||||||
<%= form.phone_field :person_phone, wrapper_class: "col-sm-6" %>
|
<%= form.phone_field :person_phone, wrapper_class: "col-sm-6" %>
|
||||||
</div>
|
<%= form.email_field :person_email, required: true, wrapper_class: "col-sm-6" %>
|
||||||
<div class="form-row">
|
|
||||||
<%= form.email_field :person_email, wrapper_class: "col-sm-6" %>
|
|
||||||
</div>
|
</div>
|
||||||
<%= render "shared/address_fields", form: form, subject: "person" %>
|
<%= render "shared/address_fields", form: form, subject: "person" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -97,7 +95,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form %>
|
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -131,7 +131,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".signature.heading") do %>
|
<%= card_field_set_tag t(".signature.heading") do %>
|
||||||
<%= render "shared/signature_fields", form: form %>
|
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
|
|||||||
@@ -12,4 +12,8 @@
|
|||||||
<%= fa_icon "refresh" %> <%= t "shared.clear" %>
|
<%= fa_icon "refresh" %> <%= t "shared.clear" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<% if local_assigns[:signature_legal_text] && signature_legal_text.present? %>
|
||||||
|
<div class="alert alert-warning font-weight-bold"><%= signature_legal_text %></div>
|
||||||
|
<% end %>
|
||||||
@@ -1,5 +1,13 @@
|
|||||||
<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" %>
|
||||||
@@ -42,6 +50,9 @@
|
|||||||
<% 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 %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<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>
|
||||||
|
|||||||
@@ -1,9 +1,19 @@
|
|||||||
<%= 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">
|
|
||||||
<%= fa_icon "info-circle" %>
|
<div class="d-flex">
|
||||||
<strong><%= t '.info_message' %></strong>
|
<div class="row">
|
||||||
|
<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') %>
|
||||||
|
|||||||
@@ -13,3 +13,4 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<p class="alert alert-success p-3 lead text-center"><%= t '.success_message' %></p>
|
<p class="alert alert-success p-3 lead text-center"><%= t '.success_message' %></p>
|
||||||
|
<%= link_to fa_icon("arrow-left", text: "Back"), [@project, :task_requests], class: "btn btn-primary" %>
|
||||||
|
|||||||
@@ -6,7 +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(Video).new? %>
|
<% if policy(Video).new? %>
|
||||||
<%= link_to t(".actions.upload_video"), [:new, @project, :video], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
<%= link_to t(".actions.upload_video"), [:landing, @project, :videos], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -18,15 +18,7 @@
|
|||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<div class="embed-responsive-item">
|
<div class="embed-responsive-item">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/435943995" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="text-center align-middle text-white">
|
|
||||||
Video tutorial will be available soon
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
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
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ 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
|
||||||
@@ -49,7 +52,9 @@ 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
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
@@ -120,6 +125,9 @@ 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
|
||||||
@@ -151,6 +159,9 @@ 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
|
||||||
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
@@ -171,6 +182,13 @@ en:
|
|||||||
sidebar:
|
sidebar:
|
||||||
files: Files
|
files: Files
|
||||||
team_member: Team Member
|
team_member: Team Member
|
||||||
|
approvals:
|
||||||
|
create:
|
||||||
|
release_approved: "%{release_type} has been approved"
|
||||||
|
new:
|
||||||
|
actions:
|
||||||
|
approve: Approve
|
||||||
|
heading: "Review %{release_type}"
|
||||||
blank_contracts:
|
blank_contracts:
|
||||||
new:
|
new:
|
||||||
number_of_copies_label: Number of copies
|
number_of_copies_label: Number of copies
|
||||||
@@ -204,9 +222,13 @@ 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
|
||||||
@@ -225,6 +247,8 @@ 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
|
||||||
@@ -240,6 +264,8 @@ en:
|
|||||||
contract_template:
|
contract_template:
|
||||||
actions:
|
actions:
|
||||||
copy_url: Copy Release URL
|
copy_url: Copy Release URL
|
||||||
|
duplicate: Duplicate
|
||||||
|
edit: Edit
|
||||||
manage: Manage
|
manage: Manage
|
||||||
qr_code: QR Code
|
qr_code: QR Code
|
||||||
sign: Sign
|
sign: Sign
|
||||||
@@ -249,6 +275,13 @@ en:
|
|||||||
destroy:
|
destroy:
|
||||||
archived_failure: Failed to archive the release template
|
archived_failure: Failed to archive the release template
|
||||||
archived_notice: The release template has been archived
|
archived_notice: The release template has been archived
|
||||||
|
duplicate:
|
||||||
|
name_prefix: Copy of %{template_name}
|
||||||
|
duplicates:
|
||||||
|
create:
|
||||||
|
error: Failed to duplicate release template
|
||||||
|
edit:
|
||||||
|
heading: Edit Contract Template
|
||||||
form:
|
form:
|
||||||
custom_fields:
|
custom_fields:
|
||||||
heading: Questionnaire
|
heading: Questionnaire
|
||||||
@@ -287,7 +320,17 @@ en:
|
|||||||
manage_large_audience: Easily manage large audiences with the crowd control feature
|
manage_large_audience: Easily manage large audiences with the crowd control feature
|
||||||
print_QR_code: Print out release QR codes
|
print_QR_code: Print out release QR codes
|
||||||
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
||||||
|
update:
|
||||||
|
notice: The release template has been updated
|
||||||
contracts:
|
contracts:
|
||||||
|
for_office_use_only:
|
||||||
|
description_labels:
|
||||||
|
date_issued: Date Issued
|
||||||
|
issued_by: Issued By
|
||||||
|
issued_to: Issued To
|
||||||
|
producer: Producer
|
||||||
|
production: Production
|
||||||
|
heading: For Office Use Only
|
||||||
photos:
|
photos:
|
||||||
guardian_2_photo_heading: Second guardian photo
|
guardian_2_photo_heading: Second guardian photo
|
||||||
guardian_photo_heading: Guardian photo
|
guardian_photo_heading: Guardian photo
|
||||||
@@ -364,6 +407,7 @@ en:
|
|||||||
contract_template:
|
contract_template:
|
||||||
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
|
||||||
task_request:
|
task_request:
|
||||||
time_allowed: Minimum of 2 hours, no partial hours allowed
|
time_allowed: Minimum of 2 hours, no partial hours allowed
|
||||||
video:
|
video:
|
||||||
@@ -670,6 +714,7 @@ en:
|
|||||||
update: Save Changes
|
update: Save Changes
|
||||||
contract_template:
|
contract_template:
|
||||||
create: Create Release Template
|
create: Create Release Template
|
||||||
|
update: Save Changes
|
||||||
directory:
|
directory:
|
||||||
create: Create Folder
|
create: Create Folder
|
||||||
new_file: Upload Files
|
new_file: Upload Files
|
||||||
@@ -726,12 +771,17 @@ en:
|
|||||||
empty: Location Releases will appear here
|
empty: Location Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
address: Address
|
address: Address
|
||||||
|
approved: Approved
|
||||||
|
name: 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
|
||||||
|
messages:
|
||||||
|
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
|
||||||
@@ -760,12 +810,17 @@ 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
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
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)
|
||||||
@@ -781,12 +836,19 @@ en:
|
|||||||
search: Search
|
search: Search
|
||||||
empty: Medical releases will appear here
|
empty: Medical releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
|
approved?: Approved
|
||||||
|
contact_info: Contact info
|
||||||
|
name: Person name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
medical_release:
|
medical_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
misc_releases:
|
misc_releases:
|
||||||
destroy:
|
destroy:
|
||||||
alert: The misc release has been deleted
|
alert: The misc release has been deleted
|
||||||
@@ -795,12 +857,18 @@ 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
|
||||||
|
name: Person name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
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
|
||||||
@@ -827,8 +895,10 @@ 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
|
||||||
notes: Notes
|
notes: Notes
|
||||||
publishers_count: No. Publishers
|
publishers_count: No. Publishers
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
@@ -836,6 +906,9 @@ 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:
|
||||||
@@ -993,6 +1066,16 @@ 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!
|
||||||
@@ -1225,7 +1308,11 @@ 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
|
||||||
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
|
phone: Phone
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
new:
|
new:
|
||||||
@@ -1233,6 +1320,9 @@ 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:
|
||||||
@@ -1245,7 +1335,9 @@ en:
|
|||||||
heading:
|
heading:
|
||||||
Edit Task Request
|
Edit Task Request
|
||||||
form:
|
form:
|
||||||
info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative.
|
actions:
|
||||||
|
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?
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
es:
|
es:
|
||||||
|
acquired_media_releases:
|
||||||
|
acquired_media_release:
|
||||||
|
no_media: No Media (ES)
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
file_infos_count: No. Files (ES)
|
||||||
|
name: Name (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
activerecord:
|
activerecord:
|
||||||
attributes:
|
attributes:
|
||||||
appearance_release:
|
appearance_release:
|
||||||
@@ -41,6 +51,12 @@ es:
|
|||||||
heading: Person Photo (ES)
|
heading: Person Photo (ES)
|
||||||
index:
|
index:
|
||||||
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release (ES)
|
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release (ES)
|
||||||
|
table_headers:
|
||||||
|
contact_info: ""
|
||||||
|
name: ""
|
||||||
|
notes: ""
|
||||||
|
signed_at: ""
|
||||||
|
tags: ""
|
||||||
shared:
|
shared:
|
||||||
imported_appearance_release_contract_name: Contrato Importado
|
imported_appearance_release_contract_name: Contrato Importado
|
||||||
imported_appearance_release_headshot_name: Retrato Importado
|
imported_appearance_release_headshot_name: Retrato Importado
|
||||||
@@ -50,6 +66,13 @@ es:
|
|||||||
all_releases: All Releases (ES)
|
all_releases: All Releases (ES)
|
||||||
complete_releases: Complete Releases (ES)
|
complete_releases: Complete Releases (ES)
|
||||||
incomplete_releases: Incomplete Releases (ES)
|
incomplete_releases: Incomplete Releases (ES)
|
||||||
|
approvals:
|
||||||
|
create:
|
||||||
|
release_approved: Medical release has been approved (ES)
|
||||||
|
new:
|
||||||
|
actions:
|
||||||
|
approve: Approve (ES)
|
||||||
|
heading: Review Medical Release (ES)
|
||||||
blank_contracts:
|
blank_contracts:
|
||||||
new:
|
new:
|
||||||
number_of_copies_label: Number of copies (ES)
|
number_of_copies_label: Number of copies (ES)
|
||||||
@@ -58,6 +81,9 @@ 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:
|
||||||
|
show:
|
||||||
|
actions:
|
||||||
|
reset_url: Reset URL (ES)
|
||||||
splash:
|
splash:
|
||||||
actions:
|
actions:
|
||||||
book_demo: Schedule a Demo
|
book_demo: Schedule a Demo
|
||||||
@@ -76,10 +102,23 @@ 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:
|
||||||
number_of_copies_invalid_notice: Please enter valid number greater than 0 (ES)
|
number_of_copies_invalid_notice: Please enter valid number greater than 0 (ES)
|
||||||
|
contract_template:
|
||||||
|
actions:
|
||||||
|
duplicate: Duplicate (ES)
|
||||||
|
edit: Edit (ES)
|
||||||
|
duplicate:
|
||||||
|
name_prefix: Copy of %{template_name} (ES)
|
||||||
|
duplicates:
|
||||||
|
create:
|
||||||
|
error: Failed to duplicate release template (ES)
|
||||||
|
edit:
|
||||||
|
heading: Edit Contract Template (ES)
|
||||||
form:
|
form:
|
||||||
custom_fields:
|
custom_fields:
|
||||||
heading: Medical Questionnaire (ES)
|
heading: Medical Questionnaire (ES)
|
||||||
@@ -106,7 +145,17 @@ es:
|
|||||||
manage_large_audience: Easily manage large audiences with the crowd control feature (ES)
|
manage_large_audience: Easily manage large audiences with the crowd control feature (ES)
|
||||||
print_QR_code: Print out release QR codes (ES)
|
print_QR_code: Print out release QR codes (ES)
|
||||||
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
||||||
|
update:
|
||||||
|
notice: The release template has been updated (ES)
|
||||||
contracts:
|
contracts:
|
||||||
|
for_office_use_only:
|
||||||
|
description_labels:
|
||||||
|
date_issued: Date Issued (ES)
|
||||||
|
issued_by: Issued By (ES)
|
||||||
|
issued_to: Issued To (ES)
|
||||||
|
producer: Producer (ES)
|
||||||
|
production: Production (ES)
|
||||||
|
heading: For Office Use Only (ES)
|
||||||
photos:
|
photos:
|
||||||
guardian_2_photo_heading: Second guardian photo (ES)
|
guardian_2_photo_heading: Second guardian photo (ES)
|
||||||
guardian_photo_heading: Guardian photo (ES)
|
guardian_photo_heading: Guardian photo (ES)
|
||||||
@@ -160,6 +209,7 @@ es:
|
|||||||
contract_template:
|
contract_template:
|
||||||
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)
|
||||||
label:
|
label:
|
||||||
appearance_release:
|
appearance_release:
|
||||||
guardian_2_address_city: Guardian 2 city (ES)
|
guardian_2_address_city: Guardian 2 city (ES)
|
||||||
@@ -272,19 +322,67 @@ es:
|
|||||||
broadcast:
|
broadcast:
|
||||||
create: Create Live Stream (ES)
|
create: Create Live Stream (ES)
|
||||||
update: Save Changes (ES)
|
update: Save Changes (ES)
|
||||||
|
contract_template:
|
||||||
|
update: Save changes (ES)
|
||||||
create: 'Crear %{model}'
|
create: 'Crear %{model}'
|
||||||
|
medical_release:
|
||||||
|
update: Approve (ES)
|
||||||
update: 'Actualizar %{model}'
|
update: 'Actualizar %{model}'
|
||||||
location_releases:
|
location_releases:
|
||||||
form:
|
form:
|
||||||
photos:
|
photos:
|
||||||
dropzone_label: Tap to take a photo of the Property (optional) (ES)
|
dropzone_label: Tap to take a photo of the Property (optional) (ES)
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
address: Address (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
material_releases:
|
material_releases:
|
||||||
form:
|
form:
|
||||||
photos:
|
photos:
|
||||||
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
name: Name (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
medical_releases:
|
medical_releases:
|
||||||
custom_validation_errors:
|
custom_validation_errors:
|
||||||
question_answer_is_required: answer is required (ES)
|
question_answer_is_required: answer is required (ES)
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
approved: Approved (ES)
|
||||||
|
approved?: Approved (ES)
|
||||||
|
contact_info: Contact info (ES)
|
||||||
|
name: Person name (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
|
medical_release:
|
||||||
|
actions:
|
||||||
|
review: Review (ES)
|
||||||
|
messages:
|
||||||
|
approved_tooltip: ""
|
||||||
|
misc_releases:
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
contact_info: Contact info (ES)
|
||||||
|
name: Person name (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
|
music_releases:
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
composers_count: No. Composers (ES)
|
||||||
|
file_infos_count: No. Files (ES)
|
||||||
|
name: Name (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
publishers_count: No. Publishers (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
public:
|
public:
|
||||||
appearance_releases:
|
appearance_releases:
|
||||||
create:
|
create:
|
||||||
@@ -389,11 +487,21 @@ es:
|
|||||||
heading: Second Guardian Photo (ES)
|
heading: Second Guardian Photo (ES)
|
||||||
guardian_photo:
|
guardian_photo:
|
||||||
heading: Guardian Photo (ES)
|
heading: Guardian Photo (ES)
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
email: Email (ES)
|
||||||
|
name: Name (ES)
|
||||||
|
notes: Notes (ES)
|
||||||
|
phone: Phone (ES)
|
||||||
|
signed_at: Date Signed (ES)
|
||||||
|
tags: Tags (ES)
|
||||||
task_requests:
|
task_requests:
|
||||||
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:
|
||||||
info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative. (ES)
|
actions:
|
||||||
|
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)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ require 'oath/constraints/signed_in'
|
|||||||
require 'sidekiq/web'
|
require 'sidekiq/web'
|
||||||
|
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
AVAILABLE_LOCALES_REGEX = /#{I18n.available_locales.join("|")}/
|
AVAILABLE_LOCALES_REGEX = /#{I18n.available_locales.join("|")}/.freeze
|
||||||
|
|
||||||
concern :confirmable do
|
concern :confirmable do
|
||||||
resources :video_release_confirmations, only: [:new, :create, :destroy]
|
resources :video_release_confirmations, only: [:new, :create, :destroy]
|
||||||
@@ -22,6 +22,9 @@ 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
|
||||||
@@ -56,9 +59,10 @@ Rails.application.routes.draw do
|
|||||||
resources :talent_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
resources :talent_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
||||||
resources :medical_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
resources :medical_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
||||||
resources :misc_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
resources :misc_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
||||||
resources :contract_templates, only: [:index, :new, :create, :destroy] do
|
resources :contract_templates, only: [:index, :new, :create, :edit, :update, :destroy] do
|
||||||
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
||||||
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
||||||
|
resource :duplicates, only: [:create], controller: "contract_templates/duplicates"
|
||||||
end
|
end
|
||||||
resource :release_template_imports, only: [:new, :create]
|
resource :release_template_imports, only: [:new, :create]
|
||||||
resources :project_memberships, only: [:index, :create, :destroy]
|
resources :project_memberships, only: [:index, :create, :destroy]
|
||||||
@@ -120,7 +124,7 @@ 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: [] do
|
resources :contract_templates, only: [:index] 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]
|
||||||
@@ -136,11 +140,11 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases]
|
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :medical_releases, :misc_releases, :location_releases].freeze
|
||||||
ALL_RELEASES = RELEASES + [:music_releases, :medical_releases, :misc_releases]
|
ALL_RELEASES = RELEASES + [:music_releases]
|
||||||
|
|
||||||
ALL_RELEASES.each do |release|
|
ALL_RELEASES.each do |release|
|
||||||
resources release, only: [], concerns: :taggable
|
resources release, only: [], concerns: [:taggable, :approvable]
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :bulk_taggings, only: [:new, :create]
|
resources :bulk_taggings, only: [:new, :create]
|
||||||
@@ -158,7 +162,7 @@ Rails.application.routes.draw do
|
|||||||
resources :contract_templates, only: [:index]
|
resources :contract_templates, only: [:index]
|
||||||
end
|
end
|
||||||
resources :contract_templates, only: [:show] do
|
resources :contract_templates, only: [:show] do
|
||||||
RELEASES.each do |release|
|
(RELEASES - [:misc_releases, :medical_releases]).each do |release|
|
||||||
resources release, controller: release, only: [:create]
|
resources release, controller: release, only: [:create]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
class AddDurationToBroadcastRecordings < ActiveRecord::DataMigration
|
||||||
|
def up
|
||||||
|
recordings = BroadcastRecording.where(duration: nil)
|
||||||
|
client = MuxRuby::AssetsApi.new
|
||||||
|
|
||||||
|
recordings.each do |recording|
|
||||||
|
begin
|
||||||
|
response = client.get_asset(recording.asset_uid)
|
||||||
|
duration = response.data.duration
|
||||||
|
recording.update(duration: duration)
|
||||||
|
rescue MuxRuby::ApiError => e
|
||||||
|
Rails.logger.error("Failed to update duration for broadcast recording with id #{recording.id}\n" + e.message)
|
||||||
|
end
|
||||||
|
|
||||||
|
sleep(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalInfoColumnsToMedicalReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :medical_releases, :approved_by_user_name, :text
|
||||||
|
add_column :medical_releases, :approved_by_user_email, :text
|
||||||
|
add_column :medical_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddAccessibilityToContractTemplates < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :contract_templates, :accessibility, :integer, default: 0
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddDurationToBroadcastRecordings < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :broadcast_recordings, :duration, :float
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
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
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user