From d71755aabc0be8899121515014f98a31904a4db9 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 12:57:27 +0200 Subject: [PATCH 1/2] allow adding photos to the public signing material release --- app/controllers/public/material_releases_controller.rb | 2 +- app/helpers/dropzone_helper.rb | 2 ++ app/views/public/material_releases/new.html.erb | 4 ++++ config/locales/en.yml | 3 +++ config/locales/es.yml | 8 ++++++++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/controllers/public/material_releases_controller.rb b/app/controllers/public/material_releases_controller.rb index f8e4846..5aef717 100644 --- a/app/controllers/public/material_releases_controller.rb +++ b/app/controllers/public/material_releases_controller.rb @@ -45,7 +45,7 @@ class Public::MaterialReleasesController < Public::BaseController :person_first_name, :person_last_name, :person_title, :person_company, :person_phone, :person_email, :person_address_street1, :person_address_street2, :person_address_city, :person_address_state, :person_address_zip, :person_address_country, :signature_base64, - :locale, :contract_template, :description + :locale, :contract_template, :description, photos: [] ) end diff --git a/app/helpers/dropzone_helper.rb b/app/helpers/dropzone_helper.rb index 42dac83..70b6744 100644 --- a/app/helpers/dropzone_helper.rb +++ b/app/helpers/dropzone_helper.rb @@ -3,6 +3,8 @@ module DropzoneHelper case releasable.model_name.param_key when "acquired_media_release" "To Add Photos & Videos to the release:
Drag & Drop Files
or
Click or Tap here to browse photos and connect to Camera" + when "material_release" + t 'material_releases.form.photos.dropzone_label' when "music_release" "To Add Audio Files to the release:
Drag & Drop Files
or
Click or Tap here to browse files" when "directory" diff --git a/app/views/public/material_releases/new.html.erb b/app/views/public/material_releases/new.html.erb index 6fa5c8f..bfd565f 100644 --- a/app/views/public/material_releases/new.html.erb +++ b/app/views/public/material_releases/new.html.erb @@ -34,6 +34,10 @@ <%= render "shared/address_fields", form: form, subject: "person" %> <% end %> + <%= card_field_set_tag t(".photo.heading") do %> + <%= render "shared/photos_dropzone_fields", form: form, release: @material_release %> + <% end %> +
<%= card_field_set_tag t(".signature.heading") do %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 7d24079..b59ec35 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -590,6 +590,7 @@ en: heading: 1 of 3 Material Details photos: heading: 4 of 4 Photos + dropzone_label: Tap to take a photo of Licensed Material (optional) signer_details: heading: 2 of 4 Licensor/Owner Details index: @@ -815,6 +816,8 @@ en: heading: Release Information signature: heading: Sign Below + photo: + heading: Photos talent_releases: create: notice: Your release has been signed. Thank you! diff --git a/config/locales/es.yml b/config/locales/es.yml index 13abd12..d773a10 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -175,6 +175,10 @@ es: show: choose_project: ¿Qué proyecto de la lista de abajo asistirá? welcome_html: Bienvenidos a la plataforma de firma autorizaciónes de %{name} + material_releases: + new: + photo: + heading: Photos (ES) shared: print: Print (ES) talent_releases: @@ -182,3 +186,7 @@ es: photos: guardian_photo: heading: Guardian Photo (ES) + material_releases: + form: + photos: + dropzone_label: Tap to take a photo of Licensed Material (optional) -- 2.47.3 From 68cb6300410d296b086037faad4c6b1671b2f7f9 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 13:18:03 +0200 Subject: [PATCH 2/2] add specs for material release photos dropzone on public signing form --- .../material_releases_controller_spec.rb | 14 +++++++++++ spec/factories/material_releases.rb | 8 ++++++ .../user_managing_material_releases_spec.rb | 25 +++++++++++++++++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/spec/controllers/public/material_releases_controller_spec.rb b/spec/controllers/public/material_releases_controller_spec.rb index 1ada22f..6ab78be 100644 --- a/spec/controllers/public/material_releases_controller_spec.rb +++ b/spec/controllers/public/material_releases_controller_spec.rb @@ -7,6 +7,15 @@ describe Public::MaterialReleasesController do render_views describe "#create" do + it "allows photos param" do + contract_template = create(:contract_template, project: project) + + post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, material_release: material_release_params_with_photos } + + expect(response).to be_successful + expect(MaterialRelease.last.photos.attached?).to eq true + end + it "logs analytics" do contract_template = create(:contract_template, project: project) @@ -65,6 +74,11 @@ describe Public::MaterialReleasesController do attributes_for(:material_release, :native).except(:signature).merge(signature_param) end + def material_release_params_with_photos + attributes_for(:material_release, :native, :with_photo).except(:signature).merge(signature_param) + end + + def signature_param file = file_fixture("signature.png") data_uri = Base64Image.from_image(file).data_uri diff --git a/spec/factories/material_releases.rb b/spec/factories/material_releases.rb index 9f6339a..d4ac6d5 100644 --- a/spec/factories/material_releases.rb +++ b/spec/factories/material_releases.rb @@ -15,6 +15,14 @@ FactoryBot.define do end end + trait :with_photo do + photos do + path = Rails.root.join("spec", "fixtures", "files", "material_photo.png") + [Rack::Test::UploadedFile.new(path, "image/png")] + end + end + + trait :non_native do contract do path = Rails.root.join("spec", "fixtures", "files", "contract.pdf") diff --git a/spec/features/user_managing_material_releases_spec.rb b/spec/features/user_managing_material_releases_spec.rb index 6a6e486..d0d732a 100644 --- a/spec/features/user_managing_material_releases_spec.rb +++ b/spec/features/user_managing_material_releases_spec.rb @@ -5,7 +5,7 @@ feature "User managing material releases" do let(:project) { create(:project, members: current_user, account: current_user.primary_account) } context "when signed out" do - scenario "creating a release", js: true do + scenario "creating a release without photos", js: true do contract_template = create(:contract_template, project: project) visit new_account_project_contract_template_material_release_path(project.account, project, contract_template) @@ -17,10 +17,27 @@ feature "User managing material releases" do draw_signature file_fixture("signature.png"), "material_release_signature_base64" end - click_button "I have read and agree to the above" + click_button submit_release_button expect(page).to have_content("Your release was successfully submitted. Thank you.") end + + scenario "creating a release with photos", js: true do + contract_template = create(:contract_template, project: project) + + visit new_account_project_contract_template_material_release_path(project.account, project, contract_template) + + fill_in material_name_field, with: "Pepsi Logo" + fill_in person_first_name_field, with: "Jane" + fill_in person_last_name_field, with: "Doe" + draw_signature file_fixture("signature.png"), "material_release_signature_base64" + + drop_file Rails.root.join(file_fixture("material_photo.png")), type: :dropzone + click_button submit_release_button + + expect(page).to have_content("Your release was successfully submitted. Thank you.") + expect(MaterialRelease.last.photos.attached?).to eq true + end end context "when signed in" do @@ -224,6 +241,10 @@ feature "User managing material releases" do t "helpers.submit.material_release.create" end + def submit_release_button + t 'shared.submit_release_long' + end + def create_release_notice t "material_releases.create.notice" end -- 2.47.3