geo_concerns 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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