geo_concerns 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/actors/geo_concerns/actors/file_actor.rb +2 -1
  4. data/app/assets/stylesheets/geo_concerns/thumbnails.scss +7 -0
  5. data/app/controllers/concerns/geo_concerns/download_behavior.rb +19 -0
  6. data/app/controllers/concerns/geo_concerns/raster_works_controller_behavior.rb +0 -10
  7. data/app/controllers/concerns/geo_concerns/vector_works_controller_behavior.rb +0 -10
  8. data/app/forms/geo_concerns/image_work_form.rb +0 -2
  9. data/app/helpers/geo_concerns/file_set_actions_helper.rb +31 -0
  10. data/app/presenters/geo_concerns/geo_concerns_show_presenter.rb +0 -1
  11. data/app/processors/geo_concerns/processors/mapnik.rb +6 -1
  12. data/app/views/curation_concerns/image_works/_image_actions.html.erb +11 -0
  13. data/app/views/curation_concerns/image_works/_show_actions.html.erb +19 -8
  14. data/app/views/curation_concerns/image_works/show.html.erb +9 -1
  15. data/app/views/curation_concerns/raster_works/_raster_actions.html.erb +11 -0
  16. data/app/views/curation_concerns/raster_works/_show_actions.html.erb +19 -8
  17. data/app/views/curation_concerns/raster_works/show.html.erb +9 -1
  18. data/app/views/curation_concerns/vector_works/_show_actions.html.erb +5 -7
  19. data/app/views/curation_concerns/vector_works/_vector_actions.html.erb +11 -0
  20. data/app/views/curation_concerns/vector_works/show.html.erb +9 -1
  21. data/app/views/geo_concerns/_attribute_rows.html.erb +3 -3
  22. data/app/views/geo_concerns/_attributes.html.erb +1 -1
  23. data/app/views/geo_concerns/_form_supplementary_fields.html.erb +1 -0
  24. data/app/views/geo_concerns/_member.html.erb +11 -0
  25. data/app/views/geo_concerns/_related_external_metadata_files.html.erb +1 -1
  26. data/app/views/geo_concerns/_related_geo_files.html.erb +1 -1
  27. data/app/views/geo_concerns/_related_geo_works.html.erb +1 -1
  28. data/app/views/geo_concerns/_representative_media.html.erb +1 -1
  29. data/app/views/geo_concerns/file_sets/actions/_default_actions.html.erb +16 -0
  30. data/app/views/geo_concerns/file_sets/actions/_image_actions.html.erb +22 -0
  31. data/app/views/geo_concerns/file_sets/actions/_metadata_actions.html.erb +16 -0
  32. data/app/views/geo_concerns/file_sets/actions/_raster_actions.html.erb +25 -0
  33. data/app/views/geo_concerns/file_sets/actions/_vector_actions.html.erb +25 -0
  34. data/geo_concerns.gemspec +1 -1
  35. data/lib/generators/geo_concerns/install_generator.rb +5 -0
  36. data/lib/generators/geo_concerns/templates/controllers/downloads_controller.rb +3 -0
  37. data/lib/generators/geo_concerns/templates/jobs/characterize_job.rb +8 -2
  38. data/lib/generators/geo_concerns/templates/models/image_work.rb +1 -0
  39. data/lib/generators/geo_concerns/templates/models/raster_work.rb +1 -0
  40. data/lib/generators/geo_concerns/templates/models/vector_work.rb +1 -0
  41. data/lib/geo_concerns/version.rb +1 -1
  42. data/spec/controllers/downloads_controller_spec.rb +36 -0
  43. data/spec/controllers/raster_works_controller_spec.rb +0 -19
  44. data/spec/controllers/vector_works_controller_spec.rb +0 -19
  45. data/spec/features/create_raster_work_spec.rb +10 -5
  46. data/spec/helpers/geo_concerns/file_set_actions_helper_spec.rb +70 -0
  47. data/spec/processors/geo_concerns/processors/mapnik_spec.rb +22 -0
  48. data/template.rb +4 -4
  49. metadata +22 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 11ccf6c23e362602390bfef2deccfa1a4db6bbf3
4
- data.tar.gz: 9545ced09e1698ba1593290995281a664876e9be
3
+ metadata.gz: 3cf1d76ece3afbe31d08c30a02dd05876fad50e1
4
+ data.tar.gz: ffd2bd3a01ea694c65df13ff3bc2f2055b0d0430
5
5
  SHA512:
6
- metadata.gz: 1c56506cab52e2766131fd741694fd377bb6aba742415ac65f3431937220c14755258d03e0ee88e4bfbe14883ca894d28f0ed83e867c67c075938f7498ac39e6
7
- data.tar.gz: 7d636601661854a5ac61772a5eb93e5925cca7cdccfa97c9adde6802f2d9fa54766075956712c64f7aaf76085e5230232bb61da2bd3598e7025744be6b2e3339
6
+ metadata.gz: a7a89521739103364461925d683859f226b03f495be20c98dfc803d4fe1e584cea3b0ac084b550c19cb8d509dd693078a942deb5c6ca741ebd9a63e58f661a24
7
+ data.tar.gz: c08799ec54e6448954be8b61b57dfb729074d6930f30f3088786762b528b2b1443b3ba1498c66ec1f59c09ae1120fdd3768dc15bb396e50831e0a46ae42f7c40
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
  [![Build Status](https://travis-ci.org/projecthydra-labs/geo_concerns.svg)](https://travis-ci.org/projecthydra-labs/geo_concerns)
3
3
  [![Coverage Status](https://coveralls.io/repos/github/projecthydra-labs/geo_concerns/badge.svg?branch=master)](https://coveralls.io/github/projecthydra-labs/geo_concerns?branch=master)
4
4
  [![API Docs](http://img.shields.io/badge/API-docs-blue.svg)](http://www.rubydoc.info/github/projecthydra-labs/geo_concerns)
5
+ [![Gem Version](https://img.shields.io/gem/v/geo_concerns.svg)](https://github.com/projecthydra-labs/geo_concerns/releases)
5
6
 
6
7
  Rails application for developing Hydra Geo models. Built around Curation Concerns engine.
7
8
 
@@ -2,7 +2,8 @@ module GeoConcerns
2
2
  module Actors
3
3
  class FileActor < CurationConcerns::Actors::FileActor
4
4
  def ingest_file(file)
5
- working_file = copy_file_to_working_directory(file, file_set.id)
5
+ working_file = CurationConcerns::WorkingDirectory
6
+ .copy_file_to_working_directory(file, file_set.id)
6
7
  IngestFileJob.perform_later(file_set,
7
8
  working_file,
8
9
  mime_type(file),
@@ -0,0 +1,7 @@
1
+ .thumbnail a > img {
2
+ display: block;
3
+ height: auto;
4
+ margin-right: 0px;
5
+ margin-left: 0px;
6
+ max-width: 250px;
7
+ }
@@ -0,0 +1,19 @@
1
+ module GeoConcerns
2
+ module DownloadBehavior
3
+ extend ActiveSupport::Concern
4
+ include CurationConcerns::DownloadBehavior
5
+
6
+ # Overrides CurationConcerns::DownloadBehavior#load_file.
7
+ # Uses GeoConcerns::DerivativePath instead of CurationConcerns::DerivativePath.
8
+ # Loads the file specified by the HTTP parameter `:file`.
9
+ # If this object does not have a file by that name, return the default file
10
+ # as returned by {#default_file}
11
+ # @return [ActiveFedora::File, String, NilClass] returns the file or the path to a file
12
+ def load_file
13
+ file_reference = params[:file]
14
+ return default_file unless file_reference
15
+ file_path = GeoConcerns::DerivativePath.derivative_path_for_reference(asset, file_reference)
16
+ File.exist?(file_path) ? file_path : nil
17
+ end
18
+ end
19
+ end
@@ -6,16 +6,6 @@ module GeoConcerns
6
6
  self.show_presenter = GeoConcerns::RasterWorkShowPresenter
7
7
  end
8
8
 
9
- def create
10
- super
11
-
12
- return unless parent_id
13
- parent = ActiveFedora::Base.find(parent_id, cast: true)
14
- parent.ordered_members << curation_concern.reload
15
- parent.save
16
- curation_concern.update_index
17
- end
18
-
19
9
  def form_class
20
10
  GeoConcerns::RasterWorkForm
21
11
  end
@@ -6,16 +6,6 @@ module GeoConcerns
6
6
  self.show_presenter = GeoConcerns::VectorWorkShowPresenter
7
7
  end
8
8
 
9
- def create
10
- super
11
-
12
- return unless parent_id
13
- parent = ActiveFedora::Base.find(parent_id, cast: true)
14
- parent.ordered_members << curation_concern.reload
15
- parent.save
16
- curation_concern.update_index
17
- end
18
-
19
9
  def form_class
20
10
  GeoConcerns::VectorWorkForm
21
11
  end
@@ -1,5 +1,3 @@
1
- # Generated via
2
- # `rails generate curation_concerns:work ImageWork`
3
1
  module GeoConcerns
4
2
  class ImageWorkForm < CurationConcerns::Forms::WorkForm
5
3
  include ::GeoConcerns::BasicGeoMetadataForm
@@ -0,0 +1,31 @@
1
+ module GeoConcerns
2
+ module FileSetActionsHelper
3
+ def file_set_actions(presenter, locals = {})
4
+ render file_set_actions_partial(presenter),
5
+ locals.merge(file_set: presenter)
6
+ end
7
+
8
+ def file_set_actions_partial(file_set)
9
+ format = file_set_actions_format(file_set)
10
+ 'geo_concerns/file_sets/actions/' +
11
+ if format
12
+ format
13
+ else
14
+ 'default_actions'
15
+ end
16
+ end
17
+
18
+ def file_set_actions_format(file_set)
19
+ geo_mime_type = file_set.solr_document.fetch(:geo_mime_type_ssim, []).first
20
+ if GeoConcerns::ImageFormatService.include?(geo_mime_type)
21
+ 'image_actions'
22
+ elsif GeoConcerns::VectorFormatService.include?(geo_mime_type)
23
+ 'vector_actions'
24
+ elsif GeoConcerns::RasterFormatService.include?(geo_mime_type)
25
+ 'raster_actions'
26
+ elsif GeoConcerns::MetadataFormatService.include?(geo_mime_type)
27
+ 'metadata_actions'
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,6 +1,5 @@
1
1
  module GeoConcerns
2
2
  class GeoConcernsShowPresenter < CurationConcerns::WorkShowPresenter
3
- delegate :has?, :first, to: :solr_document
4
3
  delegate :spatial, :temporal, :issued, :coverage, :provenance, to: :solr_document
5
4
  class_attribute :file_format_service
6
5
 
@@ -9,7 +9,7 @@ module GeoConcerns
9
9
  def self.mapnik_vector_thumbnail(in_path, out_path, options)
10
10
  vector_info = GeoConcerns::Processors::Vector::Info.new(in_path)
11
11
  options[:name] = vector_info.name
12
- SimpleMapnik.register_datasources '/usr/local/lib/mapnik/input'
12
+ SimpleMapnik.register_datasources mapnik_datasources
13
13
  map = SimpleMapnik::Map.new(*mapnik_size(options))
14
14
  map.load_string(mapnik_config(in_path, options).xml)
15
15
  map.zoom_all
@@ -24,6 +24,11 @@ module GeoConcerns
24
24
  path_name = "#{in_path}/#{options[:name]}"
25
25
  SimpleMapnik::Config.new(path_name)
26
26
  end
27
+
28
+ def self.mapnik_datasources
29
+ standard = '/usr/local/lib/mapnik/input'
30
+ Dir.exist?(standard) ? standard : '/usr/lib/mapnik/input'
31
+ end
27
32
  end
28
33
  end
29
34
  end
@@ -0,0 +1,11 @@
1
+ <div class="btn-group">
2
+ <button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#"> Attach File <span class="caret"></span></button>
3
+ <ul class="dropdown-menu">
4
+ <li>
5
+ <%= link_to "Attach Image", main_app.new_curation_concerns_file_set_path(@presenter, type: 'image-data') %>
6
+ </li>
7
+ <li>
8
+ <%= link_to "Attach Metadata", main_app.new_curation_concerns_file_set_path(@presenter, type: 'metadata') %>
9
+ </li>
10
+ </ul>
11
+ </div>
@@ -1,16 +1,27 @@
1
1
  <% if collector || editor %>
2
2
  <div class="form-actions">
3
- <% if editor %>
4
- <%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
5
- <%= link_to "Attach a Raster Work", geo_concerns_engine.new_curation_concerns_member_raster_work_path(@presenter), class: 'btn btn-default' %>
6
- <%= link_to "Attach a Image Data File", main_app.new_curation_concerns_file_set_path(@presenter, type: 'image-data'), class: 'btn btn-default' %>
7
- <%= link_to "Attach a Metadata File", main_app.new_curation_concerns_file_set_path(@presenter, type: 'metadata'), class: 'btn btn-default' %>
8
- <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
9
- <%= link_to t("file_manager.link_text"), polymorphic_path([main_app, :file_manager, @presenter]), class: 'btn btn-default' %>
10
- <% end %>
11
3
  <% if collector %>
12
4
  <%= render 'collections/add_to_collection_modal', collectible: @presenter %>
13
5
  <%= link_to_select_collection @presenter, class: 'btn btn-default' %>
14
6
  <% end %>
7
+ <% if editor %>
8
+ <%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
9
+ <% if @presenter.valid_child_concerns.length > 0 %>
10
+ <div class="btn-group">
11
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
12
+ Attach Child <span class="caret"></span>
13
+ </button>
14
+ <ul class="dropdown-menu">
15
+ <% @presenter.valid_child_concerns.each do |concern| %>
16
+ <li>
17
+ <%= link_to "Attach #{concern.human_readable_type}", polymorphic_path([main_app, :new, :curation_concerns, :parent, concern.model_name.singular], parent_id: @presenter.id) %>
18
+ </li>
19
+ <% end %>
20
+ </ul>
21
+ </div>
22
+ <% end %>
23
+ <%= render 'image_actions', document: @presenter %>
24
+ <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
25
+ <% end %>
15
26
  </div>
16
27
  <% end %>
@@ -1,6 +1,14 @@
1
1
  <% provide :page_title, @presenter.page_title %>
2
2
  <% provide :page_header do %>
3
- <h1><%= @presenter %> <span class="human_readable_type">(<%= @presenter.human_readable_type %>)</span></h1>
3
+ <h1><%= @presenter %> </h1>
4
+ <% if @parent_presenter %>
5
+ <ul class="breadcrumb">
6
+ <li><%= link_to @parent_presenter, polymorphic_path([main_app, @parent_presenter]) %></li>
7
+ <li class="active"><%= @presenter.human_readable_type %></li>
8
+ </ul>
9
+ <% else %>
10
+ <span class="human_readable_type">(<%= @presenter.human_readable_type %>)</span>
11
+ <% end %>
4
12
  <% end %>
5
13
 
6
14
  <% collector = can?(:collect, @presenter.id) %>
@@ -0,0 +1,11 @@
1
+ <div class="btn-group">
2
+ <button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#"> Attach File <span class="caret"></span></button>
3
+ <ul class="dropdown-menu">
4
+ <li>
5
+ <%= link_to "Attach Raster", main_app.new_curation_concerns_file_set_path(@presenter, type: 'raster-data') %>
6
+ </li>
7
+ <li>
8
+ <%= link_to "Attach Metadata", main_app.new_curation_concerns_file_set_path(@presenter, type: 'metadata') %>
9
+ </li>
10
+ </ul>
11
+ </div>
@@ -1,16 +1,27 @@
1
1
  <% if collector || editor %>
2
2
  <div class="form-actions">
3
- <% if editor %>
4
- <%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
5
- <%= link_to "Attach a Vector Work", geo_concerns_engine.new_curation_concerns_member_vector_work_path(@presenter), class: 'btn btn-default' %>
6
- <%= link_to "Attach a Raster Data File", main_app.new_curation_concerns_file_set_path(@presenter, type: 'raster-data'), class: 'btn btn-default' %>
7
- <%= link_to "Attach a Metadata File", main_app.new_curation_concerns_file_set_path(@presenter, type: 'metadata'), class: 'btn btn-default' %>
8
- <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
9
- <%= link_to t("file_manager.link_text"), polymorphic_path([main_app, :file_manager, @presenter]), class: 'btn btn-default' %>
10
- <% end %>
11
3
  <% if collector %>
12
4
  <%= render 'collections/add_to_collection_modal', collectible: @presenter %>
13
5
  <%= link_to_select_collection @presenter, class: 'btn btn-default' %>
14
6
  <% end %>
7
+ <% if editor %>
8
+ <%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
9
+ <% if @presenter.valid_child_concerns.length > 0 %>
10
+ <div class="btn-group">
11
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
12
+ Attach Child <span class="caret"></span>
13
+ </button>
14
+ <ul class="dropdown-menu">
15
+ <% @presenter.valid_child_concerns.each do |concern| %>
16
+ <li>
17
+ <%= link_to "Attach #{concern.human_readable_type}", polymorphic_path([main_app, :new, :curation_concerns, :parent, concern.model_name.singular], parent_id: @presenter.id) %>
18
+ </li>
19
+ <% end %>
20
+ </ul>
21
+ </div>
22
+ <% end %>
23
+ <%= render 'raster_actions', document: @presenter %>
24
+ <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
25
+ <% end %>
15
26
  </div>
16
27
  <% end %>
@@ -1,6 +1,14 @@
1
1
  <% provide :page_title, @presenter.page_title %>
2
2
  <% provide :page_header do %>
3
- <h1><%= @presenter %> <span class="human_readable_type">(<%= @presenter.human_readable_type %>)</span></h1>
3
+ <h1><%= @presenter %> </h1>
4
+ <% if @parent_presenter %>
5
+ <ul class="breadcrumb">
6
+ <li><%= link_to @parent_presenter, polymorphic_path([main_app, @parent_presenter]) %></li>
7
+ <li class="active"><%= @presenter.human_readable_type %></li>
8
+ </ul>
9
+ <% else %>
10
+ <span class="human_readable_type">(<%= @presenter.human_readable_type %>)</span>
11
+ <% end %>
4
12
  <% end %>
5
13
 
6
14
  <% collector = can?(:collect, @presenter.id) %>
@@ -1,15 +1,13 @@
1
1
  <% if collector || editor %>
2
2
  <div class="form-actions">
3
- <% if editor %>
4
- <%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
5
- <%= link_to "Attach a Vector Data File", main_app.new_curation_concerns_file_set_path(@presenter, type: 'vector-data'), class: 'btn btn-default' %>
6
- <%= link_to "Attach a Metadata File", main_app.new_curation_concerns_file_set_path(@presenter, type: 'metadata'), class: 'btn btn-default' %>
7
- <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
8
- <%= link_to t("file_manager.link_text"), polymorphic_path([main_app, :file_manager, @presenter]), class: 'btn btn-default' %>
9
- <% end %>
10
3
  <% if collector %>
11
4
  <%= render 'collections/add_to_collection_modal', collectible: @presenter %>
12
5
  <%= link_to_select_collection @presenter, class: 'btn btn-default' %>
13
6
  <% end %>
7
+ <% if editor %>
8
+ <%= link_to "Edit This #{@presenter.human_readable_type}", edit_polymorphic_path([main_app, @presenter]), class: 'btn btn-default' %>
9
+ <%= render 'vector_actions', document: @presenter %>
10
+ <%= link_to "Delete This #{@presenter.human_readable_type}", [main_app, @presenter], class: 'btn btn-danger pull-right', data: { confirm: "Delete this #{@presenter.human_readable_type}?" }, method: :delete %>
11
+ <% end %>
14
12
  </div>
15
13
  <% end %>
@@ -0,0 +1,11 @@
1
+ <div class="btn-group">
2
+ <button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#"> Attach a File <span class="caret"></span></button>
3
+ <ul class="dropdown-menu">
4
+ <li>
5
+ <%= link_to "Vector", main_app.new_curation_concerns_file_set_path(@presenter, type: 'vector-data') %>
6
+ </li>
7
+ <li>
8
+ <%= link_to "Metadata", main_app.new_curation_concerns_file_set_path(@presenter, type: 'metadata') %>
9
+ </li>
10
+ </ul>
11
+ </div>
@@ -1,6 +1,14 @@
1
1
  <% provide :page_title, @presenter.page_title %>
2
2
  <% provide :page_header do %>
3
- <h1><%= @presenter %> <span class="human_readable_type">(<%= @presenter.human_readable_type %>)</span></h1>
3
+ <h1><%= @presenter %> </h1>
4
+ <% if @parent_presenter %>
5
+ <ul class="breadcrumb">
6
+ <li><%= link_to @parent_presenter, polymorphic_path([main_app, @parent_presenter]) %></li>
7
+ <li class="active"><%= @presenter.human_readable_type %></li>
8
+ </ul>
9
+ <% else %>
10
+ <span class="human_readable_type">(<%= @presenter.human_readable_type %>)</span>
11
+ <% end %>
4
12
  <% end %>
5
13
 
6
14
  <% collector = can?(:collect, @presenter.id) %>
@@ -1,7 +1,7 @@
1
1
  <%= presenter.attribute_to_html(:description) %>
2
- <%= presenter.attribute_to_html(:creator, catalog_search_link: true ) %>
3
- <%= presenter.attribute_to_html(:contributor, label: 'Contributors', catalog_search_link: true) %>
4
- <%= presenter.attribute_to_html(:subject, catalog_search_link: true) %>
2
+ <%= presenter.attribute_to_html(:creator, render_as: :linked) %>
3
+ <%= presenter.attribute_to_html(:contributor, label: 'Contributors', render_as: :linked) %>
4
+ <%= presenter.attribute_to_html(:subject, render_as: :linked) %>
5
5
  <%= presenter.attribute_to_html(:publisher) %>
6
6
  <%= presenter.attribute_to_html(:language) %>
7
7
  <%= presenter.attribute_to_html(:spatial, label: 'Place Names') %>
@@ -8,6 +8,6 @@
8
8
  <%= presenter.attribute_to_html(:permission_badge, label: 'Visibility') %>
9
9
  <%= presenter.attribute_to_html(:embargo_release_date) %>
10
10
  <%= presenter.attribute_to_html(:lease_expiration_date) %>
11
- <%= presenter.attribute_to_html(:rights) %>
11
+ <%= presenter.attribute_to_html(:rights, render_as: :rights) %>
12
12
  </tbody>
13
13
  </table>
@@ -9,6 +9,7 @@
9
9
  </div>
10
10
 
11
11
  <%= render "form_rights", f: f %>
12
+ <%= render "form_in_works", f: f %>
12
13
 
13
14
  <% unless curation_concern.new_record? %>
14
15
  <%= render "geo_concerns/form_populate_metadata", f: f %>
@@ -0,0 +1,11 @@
1
+ <tr class="<%= dom_class(member) %> attributes">
2
+ <td class="thumbnail">
3
+ <%= render_thumbnail_tag member %>
4
+ </td>
5
+ <td class="attribute filename"><%= link_to(member.link_name, main_app.curation_concerns_file_set_path(member)) %></td>
6
+ <td class="attribute date_uploaded"><%= member.date_uploaded %></td>
7
+ <td class="attribute permission"><%= member.permission_badge %></td>
8
+ <td>
9
+ <%= file_set_actions(member) %>
10
+ </td>
11
+ </tr>
@@ -14,7 +14,7 @@
14
14
  </tr>
15
15
  </thead>
16
16
  <tbody>
17
- <%= render partial: 'member', collection: presenter.external_metadata_file_set_presenters %>
17
+ <%= render partial: 'geo_concerns/member', collection: presenter.external_metadata_file_set_presenters %>
18
18
  </tbody>
19
19
  </table>
20
20
  </div>
@@ -14,7 +14,7 @@
14
14
  </tr>
15
15
  </thead>
16
16
  <tbody>
17
- <%= render partial: 'member', collection: @presenter.geo_file_set_presenters %>
17
+ <%= render partial: 'geo_concerns/member', collection: @presenter.geo_file_set_presenters %>
18
18
  </tbody>
19
19
  </table>
20
20
  </div>
@@ -17,7 +17,7 @@
17
17
  <%= render_thumbnail_tag res %>
18
18
  </td>
19
19
  <td>
20
- <%= link_to res.title.first, polymorphic_path([main_app, res]) %>
20
+ <%= link_to res.title.first, contextual_path(res, @presenter) %>
21
21
  </td>
22
22
  </tr>
23
23
  <% end %>
@@ -1,4 +1,4 @@
1
- <% if presenter.representative_id.present? %>
1
+ <% if presenter.representative_id.present? && presenter.representative_presenter.present? %>
2
2
  <%= render partial: 'geo_concerns/file_sets/media_display/geo', locals: { file_set: presenter.representative_presenter } %>
3
3
  <% else %>
4
4
  <%= image_tag 'nope.png', class: "canonical-image" %>
@@ -0,0 +1,16 @@
1
+ <% if can?(:edit, file_set.id) %>
2
+ <%= link_to( 'Edit', edit_polymorphic_path([main_app, file_set]),
3
+ { class: 'btn btn-default', title: "Edit #{file_set}" }) %>
4
+ <%= link_to( 'Rollback', main_app.versions_curation_concerns_file_set_path(file_set),
5
+ { class: 'btn btn-default', title: "Rollback to previous version" }) %>
6
+ <% end %>
7
+ <% if can?(:destroy, file_set.id) %>
8
+ <%= link_to( 'Delete', polymorphic_path([main_app, file_set]),
9
+ class: 'btn btn-default', method: :delete, title: "Delete #{file_set}",
10
+ data: {confirm: "Deleting #{file_set} from #{application_name} is permanent. Click OK to delete this from #{application_name}, or Cancel to cancel this operation"}
11
+ )%>
12
+ <% end %>
13
+ <% if can?(:read, file_set.id) %>
14
+ <%= link_to 'Download', main_app.download_path(file_set),
15
+ class: 'btn btn-default', title: "Download #{file_set.to_s.inspect}", target: "_blank" %>
16
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <% if can?(:edit, file_set.id) %>
2
+ <%= link_to( 'Edit', edit_polymorphic_path([main_app, file_set]),
3
+ { class: 'btn btn-default', title: "Edit #{file_set}" }) %>
4
+ <%= link_to( 'Rollback', main_app.versions_curation_concerns_file_set_path(file_set),
5
+ { class: 'btn btn-default', title: "Rollback to previous version" }) %>
6
+ <% end %>
7
+ <% if can?(:destroy, file_set.id) %>
8
+ <%= link_to( 'Delete', polymorphic_path([main_app, file_set]),
9
+ class: 'btn btn-default', method: :delete, title: "Delete #{file_set}",
10
+ data: {confirm: "Deleting #{file_set} from #{application_name} is permanent. Click OK to delete this from #{application_name}, or Cancel to cancel this operation"}
11
+ )%>
12
+ <% end %>
13
+ <% if can?(:read, file_set.id) %>
14
+ <div class="btn-group">
15
+ <button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#"> Download <span class="caret"></span></button>
16
+ <ul class="dropdown-menu">
17
+ <li>
18
+ <%= link_to "File", main_app.download_path(file_set) %>
19
+ </li>
20
+ </ul>
21
+ </div>
22
+ <% end %>
@@ -0,0 +1,16 @@
1
+ <% if can?(:edit, file_set.id) %>
2
+ <%= link_to( 'Edit', edit_polymorphic_path([main_app, file_set]),
3
+ { class: 'btn btn-default', title: "Edit #{file_set}" }) %>
4
+ <%= link_to( 'Rollback', main_app.versions_curation_concerns_file_set_path(file_set),
5
+ { class: 'btn btn-default', title: "Rollback to previous version" }) %>
6
+ <% end %>
7
+ <% if can?(:destroy, file_set.id) %>
8
+ <%= link_to( 'Delete', polymorphic_path([main_app, file_set]),
9
+ class: 'btn btn-default', method: :delete, title: "Delete #{file_set}",
10
+ data: {confirm: "Deleting #{file_set} from #{application_name} is permanent. Click OK to delete this from #{application_name}, or Cancel to cancel this operation"}
11
+ )%>
12
+ <% end %>
13
+ <% if can?(:read, file_set.id) %>
14
+ <%= link_to 'Download', main_app.download_path(file_set),
15
+ class: 'btn btn-default', title: "Download #{file_set.to_s.inspect}", target: "_blank" %>
16
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <% if can?(:edit, file_set.id) %>
2
+ <%= link_to( 'Edit', edit_polymorphic_path([main_app, file_set]),
3
+ { class: 'btn btn-default', title: "Edit #{file_set}" }) %>
4
+ <%= link_to( 'Rollback', main_app.versions_curation_concerns_file_set_path(file_set),
5
+ { class: 'btn btn-default', title: "Rollback to previous version" }) %>
6
+ <% end %>
7
+ <% if can?(:destroy, file_set.id) %>
8
+ <%= link_to( 'Delete', polymorphic_path([main_app, file_set]),
9
+ class: 'btn btn-default', method: :delete, title: "Delete #{file_set}",
10
+ data: {confirm: "Deleting #{file_set} from #{application_name} is permanent. Click OK to delete this from #{application_name}, or Cancel to cancel this operation"}
11
+ )%>
12
+ <% end %>
13
+ <% if can?(:read, file_set.id) %>
14
+ <div class="btn-group">
15
+ <button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#"> Download <span class="caret"></span></button>
16
+ <ul class="dropdown-menu">
17
+ <li>
18
+ <%= link_to "File", main_app.download_path(file_set) %>
19
+ </li>
20
+ <li>
21
+ <%= link_to "Display Raster",main_app.download_path(file_set, file: 'display_raster') %>
22
+ </li>
23
+ </ul>
24
+ </div>
25
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <% if can?(:edit, file_set.id) %>
2
+ <%= link_to( 'Edit', edit_polymorphic_path([main_app, file_set]),
3
+ { class: 'btn btn-default', title: "Edit #{file_set}" }) %>
4
+ <%= link_to( 'Rollback', main_app.versions_curation_concerns_file_set_path(file_set),
5
+ { class: 'btn btn-default', title: "Rollback to previous version" }) %>
6
+ <% end %>
7
+ <% if can?(:destroy, file_set.id) %>
8
+ <%= link_to( 'Delete', polymorphic_path([main_app, file_set]),
9
+ class: 'btn btn-default', method: :delete, title: "Delete #{file_set}",
10
+ data: {confirm: "Deleting #{file_set} from #{application_name} is permanent. Click OK to delete this from #{application_name}, or Cancel to cancel this operation"}
11
+ )%>
12
+ <% end %>
13
+ <% if can?(:read, file_set.id) %>
14
+ <div class="btn-group">
15
+ <button class="btn btn-default btn-small dropdown-toggle" data-toggle="dropdown" href="#"> Download <span class="caret"></span></button>
16
+ <ul class="dropdown-menu">
17
+ <li>
18
+ <%= link_to "File", main_app.download_path(file_set) %>
19
+ </li>
20
+ <li>
21
+ <%= link_to "Display Vector",main_app.download_path(file_set, file: 'display_vector') %>
22
+ </li>
23
+ </ul>
24
+ </div>
25
+ <% end %>
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'curation_concerns', '1.0.0.beta3'
21
+ spec.add_dependency 'curation_concerns', '1.0.0.beta7'
22
22
  spec.add_dependency 'leaflet-rails', '~> 0.7'
23
23
  spec.add_dependency 'simple_mapnik', '0.0.9'
24
24
  spec.add_dependency 'json-schema'
@@ -67,6 +67,11 @@ module GeoConcerns
67
67
  copy_file 'controllers/curation_concerns/file_sets_controller.rb', file_path
68
68
  end
69
69
 
70
+ def install_downloads_controller
71
+ file_path = 'app/controllers/downloads_controller.rb'
72
+ copy_file 'controllers/downloads_controller.rb', file_path
73
+ end
74
+
70
75
  def install_authorities
71
76
  %w(metadata image vector raster).each do |type|
72
77
  file_path = "config/authorities/#{type}_formats.yml"
@@ -0,0 +1,3 @@
1
+ class DownloadsController < ApplicationController
2
+ include GeoConcerns::DownloadBehavior
3
+ end
@@ -3,11 +3,17 @@ class CharacterizeJob < ActiveJob::Base
3
3
 
4
4
  # @param [FileSet] file_set
5
5
  # @param [String] filename a local path for the file to characterize.
6
- def perform(file_set, filename)
6
+ # rubocop:disable Metrics/AbcSize
7
+ def perform(file_set, file_id)
8
+ filename = CurationConcerns::WorkingDirectory.find_or_retrieve(file_id, file_set.id)
7
9
  error_msg = "#{file_set.class.characterization_proxy} was not found"
8
10
  raise(LoadError, error_msg) unless file_set.characterization_proxy?
9
11
  Hydra::Works::CharacterizationService.run(file_set.characterization_proxy, filename)
12
+ Rails.logger.debug "Ran characterization on #{file_set.characterization_proxy.id} "\
13
+ "(#{file_set.characterization_proxy.mime_type})"
10
14
  file_set.save!
11
- CreateDerivativesJob.perform_later(file_set, filename)
15
+ file_set.update_index
16
+ CreateDerivativesJob.perform_later(file_set, file_id)
12
17
  end
18
+ # rubocop:enable Metrics/AbcSize
13
19
  end
@@ -3,4 +3,5 @@ class ImageWork < ActiveFedora::Base
3
3
  include ::GeoConcerns::ImageWorkBehavior
4
4
  include ::CurationConcerns::BasicMetadata
5
5
  include ::GeoConcerns::BasicGeoMetadata
6
+ self.valid_child_concerns = [RasterWork]
6
7
  end
@@ -4,4 +4,5 @@ class RasterWork < ActiveFedora::Base
4
4
  include ::CurationConcerns::BasicMetadata
5
5
  include ::GeoConcerns::BasicGeoMetadata
6
6
  include ::GeoConcerns::GeoreferencedBehavior
7
+ self.valid_child_concerns = [VectorWork]
7
8
  end
@@ -4,4 +4,5 @@ class VectorWork < ActiveFedora::Base
4
4
  include ::CurationConcerns::BasicMetadata
5
5
  include ::GeoConcerns::BasicGeoMetadata
6
6
  include ::GeoConcerns::GeoreferencedBehavior
7
+ self.valid_child_concerns = []
7
8
  end
@@ -1,3 +1,3 @@
1
1
  module GeoConcerns
2
- VERSION = "0.0.5".freeze
2
+ VERSION = "0.0.6".freeze
3
3
  end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe DownloadsController, type: :controller do
4
+ let(:user) { FactoryGirl.create(:user) }
5
+
6
+ subject { described_class.new }
7
+
8
+ before(:each) do
9
+ allow(subject).to receive(:params).and_return(params)
10
+ end
11
+
12
+ describe '#load_file' do
13
+ context 'with a default file' do
14
+ let(:params) { {} }
15
+
16
+ it 'returns default file' do
17
+ expect(subject).to receive(:default_file).and_return('path')
18
+ expect(subject.load_file).to eq('path')
19
+ end
20
+ end
21
+
22
+ context 'with a thumbnail file' do
23
+ let(:params) { { file: 'thumbnail' } }
24
+ let(:asset) { double }
25
+ before do
26
+ allow(subject).to receive(:asset).and_return(asset)
27
+ allow(File).to receive(:exist?).and_return(true)
28
+ end
29
+
30
+ it 'calls GeoConcerns::DerivativePath and returns the thumb path' do
31
+ expect(GeoConcerns::DerivativePath).to receive(:derivative_path_for_reference).and_return('path')
32
+ expect(subject.load_file).to eq('path')
33
+ end
34
+ end
35
+ end
36
+ end
@@ -5,25 +5,6 @@ describe CurationConcerns::RasterWorksController, type: :controller do
5
5
  let(:raster_work) { FactoryGirl.create(:raster_work, user: user, title: ['Raster Work Title']) }
6
6
  let(:reloaded) { raster_work.reload }
7
7
 
8
- describe "#create" do
9
- let(:user) { FactoryGirl.create(:admin) }
10
- before do
11
- sign_in user
12
- end
13
- context "when given a parent" do
14
- let(:parent) { FactoryGirl.create(:image_work, user: user) }
15
- let(:raster_work_attributes) do
16
- FactoryGirl.attributes_for(:raster_work)
17
- end
18
- it "creates and indexes its parent" do
19
- post :create, raster_work: raster_work_attributes, parent_id: parent.id
20
- solr_document = ActiveFedora::SolrService.query("id:#{assigns[:curation_concern].id}").first
21
-
22
- expect(solr_document["ordered_by_ssim"]).to eq [parent.id]
23
- end
24
- end
25
- end
26
-
27
8
  describe "#show" do
28
9
  before do
29
10
  sign_in user
@@ -5,25 +5,6 @@ describe CurationConcerns::VectorWorksController, type: :controller do
5
5
  let(:vector_work) { FactoryGirl.create(:vector_work, user: user, title: ['Vector Work Title']) }
6
6
  let(:reloaded) { vector_work.reload }
7
7
 
8
- describe "#create" do
9
- let(:user) { FactoryGirl.create(:admin) }
10
- before do
11
- sign_in user
12
- end
13
- context "when given a parent" do
14
- let(:parent) { FactoryGirl.create(:raster_work, user: user) }
15
- let(:vector_work_attributes) do
16
- FactoryGirl.attributes_for(:vector_work)
17
- end
18
- it "creates and indexes its parent" do
19
- post :create, vector_work: vector_work_attributes, parent_id: parent.id
20
- solr_document = ActiveFedora::SolrService.query("id:#{assigns[:curation_concern].id}").first
21
-
22
- expect(solr_document["ordered_by_ssim"]).to eq [parent.id]
23
- end
24
- end
25
- end
26
-
27
8
  describe "#show" do
28
9
  before do
29
10
  sign_in user
@@ -16,7 +16,7 @@ RSpec.feature 'RasterWorkController', type: :feature do
16
16
  fill_in 'raster_work_title', with: 'Raster Title'
17
17
  fill_in 'raster_work_temporal', with: '1989'
18
18
  choose 'raster_work_visibility_open'
19
- select 'Attribution 3.0 United States', from: 'raster_work[rights]'
19
+ select 'Attribution 3.0 United States', from: 'raster_work[rights][]'
20
20
  click_button 'Create Raster work'
21
21
 
22
22
  expect(page).to have_text 'Raster Title'
@@ -24,26 +24,31 @@ RSpec.feature 'RasterWorkController', type: :feature do
24
24
  expect(page).to have_text 'Open Access'
25
25
  expect(page).to have_link 'Attribution 3.0 United States', href: 'http://creativecommons.org/licenses/by/3.0/us/'
26
26
 
27
- click_link 'Attach a Vector Work'
27
+ click_button 'Attach Child'
28
+ click_link 'Attach Vector Work'
28
29
  expect(page).not_to have_text 'Add Your Content'
29
30
  fill_in 'vector_work_title', with: 'Vector Title'
30
31
  fill_in 'vector_work_temporal', with: '1990'
31
32
  choose 'vector_work_visibility_authenticated'
32
- select 'Attribution-ShareAlike 3.0 United States', from: 'vector_work[rights]'
33
+ select 'Attribution 3.0 United States', from: 'vector_work[rights][]'
33
34
  click_button 'Create Vector work'
34
35
 
35
36
  expect(page).to have_text 'Vector Title'
36
37
  expect(page).to have_text '1990'
37
38
  expect(page).to have_text 'Institution Name'
38
- expect(page).to have_link 'Attribution-ShareAlike 3.0 United States', href: 'http://creativecommons.org/licenses/by-sa/3.0/us/'
39
+ expect(page).to have_link 'Attribution 3.0 United States', href: 'http://creativecommons.org/licenses/by/3.0/us/'
39
40
 
40
- click_link 'Attach a Metadata File'
41
+ click_button 'Attach a File'
42
+ click_link 'Metadata'
41
43
  fill_in 'file_set[title][]', with: 'File Title'
42
44
  select 'FGDC', from: 'file_set_geo_mime_type'
43
45
  attach_file 'file_set[files][]', fgdc_file
44
46
  click_button 'Attach to Vector Work'
45
47
 
46
48
  expect(page).to have_text 'zipcodes_fgdc.xml'
49
+
50
+ click_link 'Download'
51
+ expect(page).to have_text '7F6FAACA-6BBB-4199-BDC5-51D038E4431C'
47
52
  end
48
53
  end
49
54
  end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe GeoConcerns::FileSetActionsHelper do
4
+ let(:helper) { TestingHelper.new }
5
+
6
+ before do
7
+ class TestingHelper
8
+ include GeoConcerns::FileSetActionsHelper
9
+
10
+ def render(partial, locals = {})
11
+ end
12
+ end
13
+ end
14
+
15
+ after do
16
+ Object.send(:remove_const, :TestingHelper)
17
+ end
18
+
19
+ let(:presenter) { GeoConcerns::GeoConcernsShowPresenter.new(solr_document, nil) }
20
+ let(:solr_document) { SolrDocument.new(geo_mime_type_ssim: [geo_mime_type]) }
21
+
22
+ describe '#file_set_actions' do
23
+ let(:geo_mime_type) { 'image/tiff' }
24
+
25
+ before do
26
+ allow(helper).to receive(:file_set_actions_partial).with(presenter)
27
+ .and_return('geo_concerns/file_sets/actions/image_actions')
28
+ end
29
+
30
+ it "renders a partial" do
31
+ expect(helper).to receive(:render)
32
+ .with('geo_concerns/file_sets/actions/image_actions', file_set: presenter)
33
+ helper.file_set_actions(presenter)
34
+ end
35
+ it "takes options" do
36
+ expect(helper).to receive(:render)
37
+ .with('geo_concerns/file_sets/actions/image_actions', file_set: presenter, bbox: '123')
38
+ helper.file_set_actions(presenter, bbox: '123')
39
+ end
40
+ end
41
+
42
+ describe '#file_set_actions_partial' do
43
+ subject { helper.file_set_actions_partial(presenter) }
44
+
45
+ context "with an image file" do
46
+ let(:geo_mime_type) { 'image/tiff' }
47
+ it { is_expected.to eq 'geo_concerns/file_sets/actions/image_actions' }
48
+ end
49
+
50
+ context "with a vector file" do
51
+ let(:geo_mime_type) { 'application/vnd.geo+json' }
52
+ it { is_expected.to eq 'geo_concerns/file_sets/actions/vector_actions' }
53
+ end
54
+
55
+ context "with a raster file" do
56
+ let(:geo_mime_type) { 'text/plain; gdal-format=USGSDEM' }
57
+ it { is_expected.to eq 'geo_concerns/file_sets/actions/raster_actions' }
58
+ end
59
+
60
+ context "with a metadata file" do
61
+ let(:geo_mime_type) { 'application/xml; schema=fgdc' }
62
+ it { is_expected.to eq 'geo_concerns/file_sets/actions/metadata_actions' }
63
+ end
64
+
65
+ context "with anything else" do
66
+ let(:geo_mime_type) { 'application/binary' }
67
+ it { is_expected.to eq 'geo_concerns/file_sets/actions/default_actions' }
68
+ end
69
+ end
70
+ end
@@ -44,5 +44,27 @@ describe GeoConcerns::Processors::Mapnik do
44
44
  expect(subject.class.mapnik_config(file_name, options)).to be_a(SimpleMapnik::Config)
45
45
  end
46
46
  end
47
+
48
+ describe '#mapnik_datasources' do
49
+ context 'with a mapnik plugin directory in a standard location' do
50
+ before do
51
+ allow(Dir).to receive(:exist?).and_return(true)
52
+ end
53
+
54
+ it 'returns a path to the standard input pugin directory' do
55
+ expect(subject.class.mapnik_datasources).to eq('/usr/local/lib/mapnik/input')
56
+ end
57
+ end
58
+
59
+ context 'with a mapnik plugin directory that is not in a standard location' do
60
+ before do
61
+ allow(Dir).to receive(:exist?).and_return(false)
62
+ end
63
+
64
+ it 'returns an alternate path to the input pugin directory' do
65
+ expect(subject.class.mapnik_datasources).to eq('/usr/lib/mapnik/input')
66
+ end
67
+ end
68
+ end
47
69
  end
48
70
  end
@@ -1,9 +1,9 @@
1
- gem 'curation_concerns', '1.0.0.beta3'
2
- gem 'geo_concerns', '0.0.5'
1
+ gem 'curation_concerns', '1.0.0.beta7'
2
+ gem 'geo_concerns', '0.0.6'
3
3
 
4
4
  run 'bundle install'
5
5
 
6
- generate 'curation_concerns:install'
7
- generate 'geo_concerns:install'
6
+ generate 'curation_concerns:install', '-f'
7
+ generate 'geo_concerns:install', '-f'
8
8
 
9
9
  rake 'db:migrate'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo_concerns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Griffin
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2016-05-31 00:00:00.000000000 Z
15
+ date: 2016-06-06 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: curation_concerns
@@ -20,14 +20,14 @@ dependencies:
20
20
  requirements:
21
21
  - - '='
22
22
  - !ruby/object:Gem::Version
23
- version: 1.0.0.beta3
23
+ version: 1.0.0.beta7
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - '='
29
29
  - !ruby/object:Gem::Version
30
- version: 1.0.0.beta3
30
+ version: 1.0.0.beta7
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: leaflet-rails
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -258,6 +258,8 @@ files:
258
258
  - app/assets/stylesheets/geo_concerns/application.css
259
259
  - app/assets/stylesheets/geo_concerns/bounding_box.scss
260
260
  - app/assets/stylesheets/geo_concerns/leaflet-boundingbox.css
261
+ - app/assets/stylesheets/geo_concerns/thumbnails.scss
262
+ - app/controllers/concerns/geo_concerns/download_behavior.rb
261
263
  - app/controllers/concerns/geo_concerns/file_sets_controller_behavior.rb
262
264
  - app/controllers/concerns/geo_concerns/geoblacklight_controller_behavior.rb
263
265
  - app/controllers/concerns/geo_concerns/image_works_controller_behavior.rb
@@ -271,6 +273,7 @@ files:
271
273
  - app/forms/geo_concerns/vector_work_form.rb
272
274
  - app/helpers/geo_concerns/application_helper.rb
273
275
  - app/helpers/geo_concerns/bounding_box_helper.rb
276
+ - app/helpers/geo_concerns/file_set_actions_helper.rb
274
277
  - app/helpers/geo_concerns/geo_works_helper.rb
275
278
  - app/models/concerns/geo_concerns/ability.rb
276
279
  - app/models/concerns/geo_concerns/basic_geo_metadata.rb
@@ -340,15 +343,18 @@ files:
340
343
  - app/values/geo_concerns/coverage.rb
341
344
  - app/values/geo_concerns/time_period.rb
342
345
  - app/views/curation_concerns/image_works/_form.html.erb
346
+ - app/views/curation_concerns/image_works/_image_actions.html.erb
343
347
  - app/views/curation_concerns/image_works/_image_work.html.erb
344
348
  - app/views/curation_concerns/image_works/_show_actions.html.erb
345
349
  - app/views/curation_concerns/image_works/show.html.erb
346
350
  - app/views/curation_concerns/raster_works/_form.html.erb
351
+ - app/views/curation_concerns/raster_works/_raster_actions.html.erb
347
352
  - app/views/curation_concerns/raster_works/_raster_work.html.erb
348
353
  - app/views/curation_concerns/raster_works/_show_actions.html.erb
349
354
  - app/views/curation_concerns/raster_works/show.html.erb
350
355
  - app/views/curation_concerns/vector_works/_form.html.erb
351
356
  - app/views/curation_concerns/vector_works/_show_actions.html.erb
357
+ - app/views/curation_concerns/vector_works/_vector_actions.html.erb
352
358
  - app/views/curation_concerns/vector_works/_vector_work.html.erb
353
359
  - app/views/curation_concerns/vector_works/show.html.erb
354
360
  - app/views/geo_concerns/_attribute_rows.html.erb
@@ -360,11 +366,17 @@ files:
360
366
  - app/views/geo_concerns/_form_populate_metadata.html.erb
361
367
  - app/views/geo_concerns/_form_required_information.html.erb
362
368
  - app/views/geo_concerns/_form_supplementary_fields.html.erb
369
+ - app/views/geo_concerns/_member.html.erb
363
370
  - app/views/geo_concerns/_related_external_metadata_files.html.erb
364
371
  - app/views/geo_concerns/_related_geo_files.html.erb
365
372
  - app/views/geo_concerns/_related_geo_works.html.erb
366
373
  - app/views/geo_concerns/_representative_media.html.erb
367
374
  - app/views/geo_concerns/file_sets/_form.html.erb
375
+ - app/views/geo_concerns/file_sets/actions/_default_actions.html.erb
376
+ - app/views/geo_concerns/file_sets/actions/_image_actions.html.erb
377
+ - app/views/geo_concerns/file_sets/actions/_metadata_actions.html.erb
378
+ - app/views/geo_concerns/file_sets/actions/_raster_actions.html.erb
379
+ - app/views/geo_concerns/file_sets/actions/_vector_actions.html.erb
368
380
  - app/views/geo_concerns/file_sets/media_display/_geo.html.erb
369
381
  - app/views/geo_concerns/file_sets/new.html.erb
370
382
  - app/vocabs/geo_concerns/geo_terms.rb
@@ -384,6 +396,7 @@ files:
384
396
  - lib/generators/geo_concerns/templates/controllers/curation_concerns/image_works_controller.rb
385
397
  - lib/generators/geo_concerns/templates/controllers/curation_concerns/raster_works_controller.rb
386
398
  - lib/generators/geo_concerns/templates/controllers/curation_concerns/vector_works_controller.rb
399
+ - lib/generators/geo_concerns/templates/controllers/downloads_controller.rb
387
400
  - lib/generators/geo_concerns/templates/geo_concerns.js
388
401
  - lib/generators/geo_concerns/templates/geo_concerns.scss
389
402
  - lib/generators/geo_concerns/templates/jobs/characterize_job.rb
@@ -416,6 +429,7 @@ files:
416
429
  - solr/config/xslt/example_rss.xsl
417
430
  - solr/config/xslt/luke.xsl
418
431
  - spec/actors/geo_concerns/actors/file_actor_spec.rb
432
+ - spec/controllers/downloads_controller_spec.rb
419
433
  - spec/controllers/file_sets_controller_spec.rb
420
434
  - spec/controllers/image_works_controller_spec.rb
421
435
  - spec/controllers/raster_works_controller_spec.rb
@@ -436,6 +450,7 @@ files:
436
450
  - spec/forms/geo_concerns/raster_work_form_spec.rb
437
451
  - spec/forms/geo_concerns/vector_work_form_spec.rb
438
452
  - spec/helpers/bounding_box_helper_spec.rb
453
+ - spec/helpers/geo_concerns/file_set_actions_helper_spec.rb
439
454
  - spec/helpers/geo_works_helper_spec.rb
440
455
  - spec/models/concerns/basic_geo_metadata_spec.rb
441
456
  - spec/models/concerns/geo_concerns/file_set/derivatives_spec.rb
@@ -507,12 +522,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
507
522
  version: '0'
508
523
  requirements: []
509
524
  rubyforge_project:
510
- rubygems_version: 2.4.6
525
+ rubygems_version: 2.4.5
511
526
  signing_key:
512
527
  specification_version: 4
513
528
  summary: Rails engine for Hydra Geo models. Built around Curation Concerns engine.
514
529
  test_files:
515
530
  - spec/actors/geo_concerns/actors/file_actor_spec.rb
531
+ - spec/controllers/downloads_controller_spec.rb
516
532
  - spec/controllers/file_sets_controller_spec.rb
517
533
  - spec/controllers/image_works_controller_spec.rb
518
534
  - spec/controllers/raster_works_controller_spec.rb
@@ -533,6 +549,7 @@ test_files:
533
549
  - spec/forms/geo_concerns/raster_work_form_spec.rb
534
550
  - spec/forms/geo_concerns/vector_work_form_spec.rb
535
551
  - spec/helpers/bounding_box_helper_spec.rb
552
+ - spec/helpers/geo_concerns/file_set_actions_helper_spec.rb
536
553
  - spec/helpers/geo_works_helper_spec.rb
537
554
  - spec/models/concerns/basic_geo_metadata_spec.rb
538
555
  - spec/models/concerns/geo_concerns/file_set/derivatives_spec.rb