diff --git a/hyrax/app/actors/hyrax/actors/file_actor.rb b/hyrax/app/actors/hyrax/actors/file_actor.rb index 4ec10a20fec2777adb4395a3446a4fc8badce8f6..1f1c45764ded1f08c5082071e09fc046395b44a2 100644 --- a/hyrax/app/actors/hyrax/actors/file_actor.rb +++ b/hyrax/app/actors/hyrax/actors/file_actor.rb @@ -142,7 +142,6 @@ module Hyrax end def move_s3_object_to_work_bucket(uploaded_file, file_set) - repository_file = file_set.characterization_proxy s3 = S3StorageService.new s3.init_client @@ -152,12 +151,20 @@ module Hyrax target_bucket = Aws::S3::Bucket.new(target_bucket_name) s3.create_bucket(target_bucket_name) unless s3.bucket_exists?(target_bucket_name) - target_object_key = generate_target_object_key(repository_file, file_set) + target_object_key = generate_target_object_key(file_set) s3.move_object(source_object_key, target_bucket_name, target_object_key, { uploaded_file_path: source_object_key }) target_object = target_bucket.object(target_object_key) - return s3_file_download_url_for_file_set(file_set.id) + download_bucket = Aws::S3::Resource.new(region: ENV['S3_REGION']).bucket(target_bucket_name) + + url_options = { + expires_in: 60.minutes.seconds.to_i, + response_content_disposition: "attachment; filename=\"#{target_object_key}\"" + } + object = download_bucket.object(target_object_key) + + return object.exists? ? object.presigned_url(:get, url_options).to_s : nil end def change_repository_file_content(uploaded_file, repository_file, target_object) @@ -166,7 +173,7 @@ module Hyrax repository_file.content = uploaded_file.file_url end - def generate_target_object_key(repository_file, file_set) + def generate_target_object_key(file_set) prefix = case file_set.for_complex_type when 'ComplexSubject' complex_subject = ComplexSubject.find_by(source_identifier: file_set.for_complex_identifier) @@ -181,7 +188,7 @@ module Hyrax 'files' end - "#{prefix}/#{file_set.title.first}" + "/#{prefix}/#{file_set.title.first}" end def clear_metadata(file_set) diff --git a/hyrax/app/actors/hyrax/actors/file_set_actor.rb b/hyrax/app/actors/hyrax/actors/file_set_actor.rb index 6ada630e38e2af8e25c2010113b332ec75d5e752..b894eab383df27f0d5bf13aa46f3df1c70ded593 100644 --- a/hyrax/app/actors/hyrax/actors/file_set_actor.rb +++ b/hyrax/app/actors/hyrax/actors/file_set_actor.rb @@ -72,9 +72,13 @@ module Hyrax # Ensure we have an up-to-date copy of the members association, so that we append to the end of the list. work.reload unless work.new_record? file_set.visibility = work.visibility unless assign_visibility?(file_set_params) - work.members << file_set + + if work.class.name == "CrcDataset" + work.members << file_set + end unless work.class.name == "CrcDataset" + work.ordered_members << file_set work.representative = file_set if work.representative_id.blank? work.thumbnail = file_set if work.thumbnail_id.blank? end diff --git a/hyrax/app/views/hyrax/datasets/show.html.erb b/hyrax/app/views/hyrax/datasets/show.html.erb index 3d17a76a55e7c4df9a16e3313e3d100a0731fdce..18ed39b7a48fa1f4d79be480b261b04f1c008331 100644 --- a/hyrax/app/views/hyrax/datasets/show.html.erb +++ b/hyrax/app/views/hyrax/datasets/show.html.erb @@ -13,10 +13,17 @@ <div class="panel-body"> <div class="row"> <%= render 'workflow_actions_widget', presenter: @presenter %> + <% if @presenter.iiif_viewer? %> + <div class="col-sm-12"> + <%= render 'representative_media', presenter: @presenter, viewer: true %> + </div> + <% end %> <div class="col-sm-3 text-center"> - <%= render 'download_all', presenter: @presenter %> - <%#= render 'citations', presenter: @presenter %> - <%#= render 'social_media' %> + <% if ['deposited', 'published'].include?(@presenter.workflow.state) %> + <%= render 'download_all', presenter: @presenter %> + <%= render 'citations', presenter: @presenter %> + <%= render 'social_media' %> + <% end %> </div> <div class="col-sm-9"> <%= render 'work_description', presenter: @presenter %>