Upstream sync
This commit is contained in:
@@ -6,9 +6,12 @@ class ApprovalsController < ApplicationController
|
||||
|
||||
def create
|
||||
@releasable.approve_by(current_user)
|
||||
@releasable.approved_by_user_signature.attach(approved_by_user_signature_params) if signature_data.present?
|
||||
|
||||
if @releasable.save
|
||||
if @releasable.save(context: :approval)
|
||||
redirect_to [@project, "#{@releasable_param.name.pluralize}"], notice: t('.release_approved', release_type: @releasable.model_name.human)
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,4 +28,21 @@ class ApprovalsController < ApplicationController
|
||||
def set_project
|
||||
@project = @releasable.project
|
||||
end
|
||||
|
||||
def releasable_params
|
||||
params.require(releasable_param.name).permit(approved_by_user_signature: :data)
|
||||
end
|
||||
|
||||
def signature_data
|
||||
releasable_params.dig(:approved_by_user_signature, :data)
|
||||
end
|
||||
|
||||
def approved_by_user_signature_params
|
||||
{
|
||||
data: signature_data,
|
||||
filename: "approved_by_user_signature.png",
|
||||
content_type: "image/png",
|
||||
identify: false,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,15 +1,24 @@
|
||||
module Approvable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
|
||||
included do
|
||||
include ActiveStorageSupport::SupportForBase64
|
||||
|
||||
has_one_base64_attached :approved_by_user_signature
|
||||
|
||||
# Requires signature when saving in the approval context
|
||||
with_options on: :approval do
|
||||
validates :approved_by_user_signature, attached: true
|
||||
end
|
||||
|
||||
def approve_by(user)
|
||||
return unless approved_at.nil?
|
||||
|
||||
|
||||
self.approved_by_user_name = user.full_name
|
||||
self.approved_by_user_email = user.email
|
||||
self.approved_at = Time.zone.now
|
||||
self.approved_at = BigMediaTime.time_zone_now
|
||||
end
|
||||
|
||||
|
||||
def approved?
|
||||
self.approved_at.present?
|
||||
end
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
<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" />
|
||||
<embed class="embeded-contract-preview mb-3" type="application/pdf" src="<%= url_for [@releasable, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
||||
|
||||
<%= errors_summary_for @releasable %>
|
||||
<%= bootstrap_form_with model: @releasable, method: :post, url: public_send("#{@releasable_param.name}_approvals_path", @releasable), local: true do |form| %>
|
||||
<%= card_field_set_tag 'Signature' do %>
|
||||
<%= render "shared/signature_fields", form: form, signature_field: 'approved_by_user_signature[data]' %>
|
||||
<% end %>
|
||||
<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">
|
||||
@@ -12,4 +16,4 @@
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,4 +10,10 @@
|
||||
<%= 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>
|
||||
</dl>
|
||||
|
||||
<% if preview %>
|
||||
<%= image_tag dummy_signature %>
|
||||
<% elsif releasable.approved_by_user_signature.attached? %>
|
||||
<%= image_tag releasable.approved_by_user_signature.variant(auto_orient: true, resize: "200x200") %>
|
||||
<% end %>
|
||||
|
||||
@@ -16,11 +16,10 @@
|
||||
<%= contract_template.guardian_clause %>
|
||||
<% end %>
|
||||
|
||||
<%# if releasable.model_name.in? %w(MedicalRelease MiscRelease AppearanceRelease) %>
|
||||
<% if releasable.respond_to?(:question_1_answer) %>
|
||||
<div class="page">
|
||||
<%= render "contracts/questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="page">
|
||||
@@ -47,8 +46,7 @@
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
|
||||
<% if releasable.respond_to?(:approved?) && releasable.approved? %>
|
||||
<% if releasable.try(:approved?) %>
|
||||
<div class="page">
|
||||
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user