Initial commit
This commit is contained in:
51
app/views/appearance_releases/_appearance_release.html.erb
Normal file
51
app/views/appearance_releases/_appearance_release.html.erb
Normal file
@@ -0,0 +1,51 @@
|
||||
<tr id="<%= dom_id(appearance_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "appearance_release_ids[]", appearance_release.id, false %></td>
|
||||
<td>
|
||||
<% if appearance_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(appearance_release.photo) %>
|
||||
<% else %>
|
||||
<%= fa_icon("warning", text: t(".no_photos"), class: "text-danger") %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<%= appearance_release.name %>
|
||||
</td>
|
||||
<td>
|
||||
<%= contact_info(
|
||||
address: appearance_release.person_address,
|
||||
phone: appearance_release.person_phone,
|
||||
email: appearance_release.person_email
|
||||
) %>
|
||||
</td>
|
||||
<td>
|
||||
<%= notes_preview appearance_release.notes.order_by_recent %>
|
||||
</td>
|
||||
<td id="<%= dom_id appearance_release, "tags_preview" %>">
|
||||
<%= tags_preview appearance_release, appearance_release.tags %>
|
||||
</td>
|
||||
<td>
|
||||
<%= appearance_release.signed_on %>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<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 } %>
|
||||
<div class="dropdown-menu dropdown-menu-right">
|
||||
<% if policy(Note).new? %>
|
||||
<%= link_to fa_icon("sticky-note fw", text: "Notes"), [:new, appearance_release, :note], class: "dropdown-item", remote: true %>
|
||||
<% end %>
|
||||
<% if policy(appearance_release.tags).new? %>
|
||||
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, appearance_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
||||
<% end %>
|
||||
<% 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" %>
|
||||
<% end %>
|
||||
<% if policy(appearance_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, appearance_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(appearance_release).destroy? %>
|
||||
<%= link_to fa_icon("trash fw", text: "Delete"), appearance_release, class: "dropdown-item", method: :delete, data: { confirm: "Are you sure?" } %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
86
app/views/appearance_releases/_form.html.erb
Normal file
86
app/views/appearance_releases/_form.html.erb
Normal file
@@ -0,0 +1,86 @@
|
||||
<%= errors_summary_for appearance_release %>
|
||||
<%= bootstrap_form_with model: model, local: true, validation_context: :non_native do |form| %>
|
||||
<%= field_set_tag content_tag(:span, t(".person_details.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
|
||||
<div class="form-row">
|
||||
<%= form.text_field :person_first_name, required: true, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :person_last_name, required: true, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :person_phone, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<%= form.email_field :person_email, wrapper_class: "col-sm-6" %>
|
||||
<%= form.date_field :person_date_of_birth, wrapper_class: "col-sm-6", placeholder: Date.current %>
|
||||
<%= form.text_field :person_address, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
|
||||
<div class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_last_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_address, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
<%= field_set_tag content_tag(:span, t(".contract_and_rights.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<%= render "shared/contract_fields", form: form, release: appearance_release %>
|
||||
<%= render "shared/exploitable_rights_fields", form: form %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
<%= field_set_tag content_tag(:span, t(".photos.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<div class="text-left">
|
||||
<p class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields"><%= t(".photos.person_photo.heading") %></p>
|
||||
<div class="d-inline-block mb-2" data-behavior="person-photo-preview" data-file-input="[data-ujs-target=person-photo-input]">
|
||||
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
|
||||
<span>No photo yet</span>
|
||||
</div>
|
||||
</div>
|
||||
<% if appearance_release.person_photo.attached? %>
|
||||
<%= javascript_tag nonce: true do %>
|
||||
App.PhotoPreview.set("[data-behavior=person-photo-preview]", "<%= url_for(appearance_release.person_photo.variant(auto_orient: true, resize: '200x200')) %>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="d-inline-block">
|
||||
<%= form.hidden_field :person_photo, value: form.object.person_photo.signed_id if appearance_release.person_photo.attached?%>
|
||||
<%= form.file_field :person_photo, hide_label: true, data: { ujs_target: "person-photo-input" }, help: "PNG or JPG only", accept: appearance_release.class.face_photo_acceptable_content_types.join(",") %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<div class="text-left">
|
||||
<p><%= t(".photos.guardian_photo.heading") %></p>
|
||||
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
|
||||
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
|
||||
<span>No photo yet</span>
|
||||
</div>
|
||||
</div>
|
||||
<% if appearance_release.guardian_photo.attached? %>
|
||||
<%= javascript_tag nonce: true do %>
|
||||
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(appearance_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="d-inline-block">
|
||||
<%= form.hidden_field :guardian_photo, value: form.object.guardian_photo.signed_id if appearance_release.guardian_photo.attached?%>
|
||||
<%= form.file_field :guardian_photo, hide_label: true, data: { ujs_target: "guardian-photo-input" }, help: "PNG or JPG only", accept: appearance_release.class.face_photo_acceptable_content_types.join(",") %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="row align-items-center text-center mt-4">
|
||||
<%= link_to t("shared.cancel"), [appearance_release.project, :appearance_releases], class: "col-3 text-reset" %>
|
||||
<div class="col-9">
|
||||
<%= form.button id: "submit_release", class: class_string("btn btn-block", ["btn-success", "btn-primary"] => appearance_release.new_record?), data: { disable_with: t("shared.disable_with") } %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
11
app/views/appearance_releases/_type_filter_actions.html.erb
Normal file
11
app/views/appearance_releases/_type_filter_actions.html.erb
Normal file
@@ -0,0 +1,11 @@
|
||||
<ul class="nav nav-pills nav-pills-white rounded-pill p-1 bg-semi-transparent">
|
||||
<li class="nav-item">
|
||||
<%= link_to t('.all_releases'), project_appearance_releases_path(type_filter: 'all', query: params[:query]), data: {type_filter: 'all'}, remote: true, class: class_string('nav-link rounded-pill py-1 px-3', "active shadow-sm" => params[:type_filter] == 'all' || params[:type_filter].nil?) %>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<%= link_to t('.complete_releases'), project_appearance_releases_path(type_filter: 'complete', query: params[:query]), data: {type_filter: 'complete'}, remote: true, class: class_string('nav-link rounded-pill py-1 px-3', "active shadow-sm" => params[:type_filter] == 'complete') %>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<%= link_to t('.incomplete_releases'), project_appearance_releases_path(type_filter: 'incomplete', query: params[:query]), data: {type_filter: 'incomplete'}, remote: true, class: class_string('nav-link rounded-pill py-1 px-3', "active shadow-sm" => params[:type_filter] == 'incomplete') %>
|
||||
</li>
|
||||
</ul>
|
||||
6
app/views/appearance_releases/edit.html.erb
Normal file
6
app/views/appearance_releases/edit.html.erb
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="card shadow-sm">
|
||||
<%= card_header text: t(".heading"), close_action_path: [@project, :appearance_releases] %>
|
||||
<div class="card-body">
|
||||
<%= render "form", model: @appearance_release, appearance_release: @appearance_release %>
|
||||
</div>
|
||||
</div>
|
||||
70
app/views/appearance_releases/index.html.erb
Normal file
70
app/views/appearance_releases/index.html.erb
Normal file
@@ -0,0 +1,70 @@
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div id="upload-progress-container" class="mb-1"></div>
|
||||
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-2">
|
||||
<% if policy(AppearanceRelease).new? %>
|
||||
<div class="mr-auto">
|
||||
<%= bootstrap_form_with url: project_appearance_release_imports_path, method: :post, id: "appearance_releases_import", remote: true, layout: :inline do |form| %>
|
||||
<%= form.file_field :attachments, disable: true, direct_upload: true, multiple: true, accept: AppearanceRelease.acceptable_import_file_extensions.join(','), id: "appearance_release_file_upload", hide_label: true, hidden: true %>
|
||||
<%= form.button fa_icon('plus', text: t('.actions.new')), class: 'btn btn-primary mr-2 mb-2', type: :button, id: 'import_appearance_releases' %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if @appearance_releases.any? && policy(AppearanceRelease).tag_multiple? %>
|
||||
<%= button_to_bulk_tagging(@project) %>
|
||||
<% end %>
|
||||
|
||||
<% if @appearance_releases.any? && policy(AppearanceRelease).download_multiple? %>
|
||||
<%= link_to "Download All", [@project, :contract_downloads, release_type: @appearance_releases.name], method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-2">
|
||||
<div id="type_filter_actions">
|
||||
<%= render 'type_filter_actions' %>
|
||||
</div>
|
||||
|
||||
<div class="ml-auto">
|
||||
<%= bootstrap_form_with url: [@project, :appearance_releases], method: :get, remote: true, layout: :inline, id: "search" do |form| %>
|
||||
<%= form.hidden_field :type_filter, value: params[:type_filter] || 'all', id: 'type_filter_value' %>
|
||||
<%= form.search_field :query, hide_label: true, placeholder: t(".actions.search"), class: "rounded-pill-right", value: params[:query], prepend: form.button(fa_icon("search"), class: "btn btn-light border mb-2 rounded-pill-left") %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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 data-behavior="all-selectable"><%= check_box_tag "appearance_release_ids[]", false, false %></th>
|
||||
<th></th>
|
||||
<th><%= AppearanceRelease.human_attribute_name(:person_name) %></th>
|
||||
<th><%= AppearanceRelease.human_attribute_name(:contact_info) %></th>
|
||||
<th><%= t(".table_headers.notes") %></th>
|
||||
<th><%= t(".table_headers.tags") %></th>
|
||||
<th><%= t(".table_headers.signed_at") %></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="appearance_releases">
|
||||
<% if @appearance_releases.any? %>
|
||||
<%= render @appearance_releases %>
|
||||
<% else %>
|
||||
<tr>
|
||||
<td colspan="12" class="py-4 text-center text-muted"><%= t(".empty") %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="appearance_releases_pagination" class="mt-3">
|
||||
<%= will_paginate @appearance_releases %>
|
||||
</div>
|
||||
5
app/views/appearance_releases/index.js.erb
Normal file
5
app/views/appearance_releases/index.js.erb
Normal file
@@ -0,0 +1,5 @@
|
||||
$("#appearance_releases").html("<%= j render(@appearance_releases) %>");
|
||||
$("form input[type='search']").val("<%= params[:query] %>");
|
||||
$("#type_filter_actions").html("<%= j render 'type_filter_actions' %>");
|
||||
$("#appearance_releases_pagination").html("<%= j will_paginate(@appearance_releases) %>");
|
||||
$('#type_filter_value').val("<%= params[:type_filter] %>");
|
||||
6
app/views/appearance_releases/new.html.erb
Normal file
6
app/views/appearance_releases/new.html.erb
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="card shadow-sm">
|
||||
<%= card_header text: t(".heading"), close_action_path: [@project, :appearance_releases] %>
|
||||
<div class="card-body">
|
||||
<%= render "form", model: [@project, @appearance_release], appearance_release: @appearance_release %>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user