hyrax 3.0.0.pre.beta1 → 3.0.0.pre.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +157 -68
  3. data/.travis.yml +4 -1
  4. data/Gemfile +1 -0
  5. data/README.md +3 -3
  6. data/app/actors/hyrax/actors/collections_membership_actor.rb +5 -55
  7. data/app/actors/hyrax/actors/create_with_remote_files_ordered_members_actor.rb +6 -8
  8. data/app/actors/hyrax/actors/environment.rb +15 -0
  9. data/app/actors/hyrax/actors/interpret_visibility_actor.rb +22 -37
  10. data/app/assets/javascripts/hyrax/editor/controlled_vocabulary.es6 +1 -1
  11. data/app/assets/stylesheets/hyrax/_collections.scss +5 -3
  12. data/app/assets/stylesheets/hyrax/dashboard.scss +3 -3
  13. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +21 -2
  14. data/app/controllers/hyrax/homepage_controller.rb +1 -1
  15. data/app/forms/hyrax/forms/work_form.rb +1 -1
  16. data/app/helpers/hyrax/collections_helper.rb +13 -0
  17. data/app/helpers/hyrax/hyrax_helper_behavior.rb +3 -3
  18. data/app/indexers/hyrax/admin_set_indexer.rb +1 -1
  19. data/app/indexers/hyrax/basic_metadata_indexer.rb +1 -1
  20. data/app/indexers/hyrax/collection_indexer.rb +3 -3
  21. data/app/indexers/hyrax/deep_indexing_service.rb +12 -12
  22. data/app/indexers/hyrax/file_set_indexer.rb +1 -1
  23. data/app/indexers/hyrax/indexes_workflow.rb +4 -4
  24. data/app/indexers/hyrax/work_indexer.rb +1 -1
  25. data/app/models/concerns/hyrax/basic_metadata.rb +2 -0
  26. data/app/models/concerns/hyrax/collection_behavior.rb +3 -3
  27. data/app/models/concerns/hyrax/file_set/querying.rb +1 -1
  28. data/app/models/concerns/hyrax/human_readable_type.rb +2 -2
  29. data/app/models/concerns/hyrax/solr_document/characterization.rb +23 -23
  30. data/app/models/concerns/hyrax/solr_document/metadata.rb +3 -2
  31. data/app/models/concerns/hyrax/solr_document_behavior.rb +3 -3
  32. data/app/models/concerns/hyrax/user.rb +10 -2
  33. data/app/presenters/hyrax/work_show_presenter.rb +2 -2
  34. data/app/renderers/hyrax/renderers/faceted_attribute_renderer.rb +1 -1
  35. data/app/search_builders/hyrax/collection_search_builder.rb +1 -1
  36. data/app/search_builders/hyrax/deposit_search_builder.rb +1 -1
  37. data/app/search_builders/hyrax/embargo_search_builder.rb +1 -1
  38. data/app/search_builders/hyrax/lease_search_builder.rb +1 -1
  39. data/app/services/hyrax/default_middleware_stack.rb +0 -4
  40. data/app/services/hyrax/statistics/file_sets/by_format.rb +1 -1
  41. data/app/services/hyrax/statistics/works/by_resource_type.rb +1 -1
  42. data/app/services/hyrax/visibility_intention.rb +78 -0
  43. data/app/views/catalog/_index_list_default.html.erb +3 -3
  44. data/app/views/catalog/_thumbnail_list_collection.html.erb +3 -2
  45. data/app/views/hyrax/base/_attribute_rows.html.erb +1 -0
  46. data/app/views/hyrax/base/_form_files.html.erb +2 -2
  47. data/app/views/hyrax/base/_form_visibility_component.html.erb +1 -1
  48. data/app/views/hyrax/base/_show_actions.html.erb +6 -6
  49. data/app/views/hyrax/base/show.html.erb +2 -2
  50. data/app/views/hyrax/batch_edits/_check_all.html.erb +1 -1
  51. data/app/views/hyrax/batch_edits/_delete_selected.html.erb +1 -1
  52. data/app/views/hyrax/collections/_show_document_list_row.html.erb +1 -1
  53. data/app/views/hyrax/dashboard/collections/_show_document_list_row.html.erb +1 -1
  54. data/app/views/hyrax/dashboard/show_admin.html.erb +4 -4
  55. data/app/views/records/show_fields/_based_near.html.erb +1 -1
  56. data/app/views/records/show_fields/_creator.html.erb +1 -1
  57. data/app/views/records/show_fields/_keyword.html.erb +1 -1
  58. data/app/views/records/show_fields/_language.html.erb +1 -1
  59. data/app/views/records/show_fields/_publisher.html.erb +1 -1
  60. data/app/views/records/show_fields/_resource_type.html.erb +1 -1
  61. data/app/views/records/show_fields/_subject.html.erb +1 -1
  62. data/config/initializers/samvera-nesting_indexer_initializer.rb +3 -3
  63. data/config/locales/hyrax.de.yml +35 -22
  64. data/config/locales/hyrax.en.yml +22 -2
  65. data/config/locales/hyrax.es.yml +21 -1
  66. data/config/locales/hyrax.fr.yml +21 -1
  67. data/config/locales/hyrax.it.yml +21 -1
  68. data/config/locales/hyrax.pt-BR.yml +21 -1
  69. data/config/locales/hyrax.zh.yml +21 -1
  70. data/hyrax.gemspec +7 -9
  71. data/lib/generators/hyrax/templates/catalog_controller.rb +1 -1
  72. data/lib/generators/hyrax/templates/config/locales/hyrax.pt-BR.yml +10 -10
  73. data/lib/generators/hyrax/work/templates/locale.pt-BR.yml.erb +1 -1
  74. data/lib/hyrax/configuration.rb +18 -0
  75. data/lib/hyrax/engine.rb +8 -0
  76. data/lib/hyrax/transactions/container.rb +6 -0
  77. data/lib/hyrax/transactions/destroy_work.rb +21 -0
  78. data/lib/hyrax/transactions/steps/destroy_work.rb +24 -0
  79. data/lib/hyrax/version.rb +1 -1
  80. data/lib/wings.rb +45 -0
  81. data/lib/wings/active_fedora_converter.rb +56 -0
  82. data/lib/wings/model_transformer.rb +158 -0
  83. data/lib/wings/resource_factory.rb +8 -0
  84. data/lib/wings/valkyrie/metadata_adapter.rb +29 -0
  85. data/lib/wings/valkyrie/persister.rb +50 -0
  86. data/lib/wings/valkyrie/query_service.rb +43 -0
  87. data/lib/wings/valkyrie/resource_factory.rb +45 -0
  88. data/lib/wings/valkyrizable.rb +24 -0
  89. data/lib/wings/value_mapper.rb +59 -0
  90. data/spec/abilities/collection_ability_spec.rb +5 -5
  91. data/spec/abilities/permission_template_ability_spec.rb +1 -1
  92. data/spec/actors/hyrax/actors/collections_membership_actor_spec.rb +6 -175
  93. data/spec/actors/hyrax/actors/create_with_remote_files_ordered_members_actor_spec.rb +30 -22
  94. data/spec/actors/hyrax/actors/interpret_visibility_actor_spec.rb +2 -0
  95. data/spec/controllers/catalog_controller_spec.rb +1 -1
  96. data/spec/controllers/hyrax/admin/collection_types_controller_spec.rb +1 -1
  97. data/spec/controllers/hyrax/batch_edits_controller_spec.rb +9 -9
  98. data/spec/controllers/hyrax/collections_controller_spec.rb +5 -5
  99. data/spec/controllers/hyrax/dashboard/collection_members_controller_spec.rb +16 -13
  100. data/spec/controllers/hyrax/dashboard/collections_controller_spec.rb +9 -9
  101. data/spec/controllers/hyrax/dashboard/nest_collections_controller_spec.rb +1 -1
  102. data/spec/controllers/hyrax/generic_works_controller_spec.rb +10 -1
  103. data/spec/controllers/hyrax/homepage_controller_spec.rb +3 -3
  104. data/spec/controllers/hyrax/my/shares_controller_spec.rb +1 -1
  105. data/spec/features/actor_stack_spec.rb +48 -0
  106. data/spec/features/catalog_search_spec.rb +2 -2
  107. data/spec/features/collection_multi_membership_spec.rb +2 -2
  108. data/spec/features/collection_spec.rb +7 -7
  109. data/spec/features/collection_type_spec.rb +2 -2
  110. data/spec/features/dashboard/collection_spec.rb +18 -18
  111. data/spec/features/delete_work_spec.rb +1 -1
  112. data/spec/features/search_spec.rb +2 -2
  113. data/spec/features/work_show_spec.rb +5 -2
  114. data/spec/forms/hyrax/forms/batch_upload_form_spec.rb +1 -0
  115. data/spec/forms/hyrax/forms/collection_form_spec.rb +5 -5
  116. data/spec/forms/hyrax/forms/permission_template_form_spec.rb +1 -1
  117. data/spec/forms/hyrax/forms/work_form_spec.rb +2 -0
  118. data/spec/helpers/blacklight_helper_spec.rb +3 -1
  119. data/spec/helpers/hyrax/collections_helper_spec.rb +42 -0
  120. data/spec/helpers/hyrax/dashboard_helper_behavior_spec.rb +4 -4
  121. data/spec/helpers/hyrax_helper_spec.rb +8 -4
  122. data/spec/hyrax/transactions/destroy_work_spec.rb +35 -0
  123. data/spec/hyrax/transactions/steps/destroy_work_spec.rb +33 -0
  124. data/spec/indexers/hyrax/collection_indexer_spec.rb +1 -1
  125. data/spec/jobs/characterize_job_spec.rb +1 -1
  126. data/spec/lib/hyrax/resource_sync/change_list_writer_spec.rb +35 -21
  127. data/spec/lib/hyrax/resource_sync/resource_list_writer_spec.rb +1 -1
  128. data/spec/models/collection_spec.rb +18 -18
  129. data/spec/models/concerns/hyrax/collection_nesting_spec.rb +2 -2
  130. data/spec/models/file_set_spec.rb +2 -2
  131. data/spec/models/hyrax/collection_type_spec.rb +2 -2
  132. data/spec/models/user_spec.rb +26 -1
  133. data/spec/presenters/hyrax/collection_presenter_spec.rb +11 -11
  134. data/spec/presenters/hyrax/work_show_presenter_spec.rb +11 -0
  135. data/spec/search_builders/hyrax/collection_member_search_builder_spec.rb +1 -1
  136. data/spec/search_builders/hyrax/collection_search_builder_spec.rb +1 -1
  137. data/spec/search_builders/hyrax/dashboard/nested_collections_search_builder_spec.rb +1 -1
  138. data/spec/search_builders/hyrax/work_relation_spec.rb +1 -1
  139. data/spec/services/hyrax/adapters/nesting_index_adapter_spec.rb +2 -2
  140. data/spec/services/hyrax/collections/collection_member_service_spec.rb +2 -2
  141. data/spec/services/hyrax/collections/migration_service_spec.rb +27 -27
  142. data/spec/services/hyrax/collections/nested_collection_persistence_service_spec.rb +1 -1
  143. data/spec/services/hyrax/collections/nested_collection_query_service_spec.rb +38 -38
  144. data/spec/services/hyrax/curation_concern_spec.rb +1 -1
  145. data/spec/services/hyrax/default_middleware_stack_spec.rb +1 -2
  146. data/spec/services/hyrax/statistics/depositors/summary_spec.rb +1 -1
  147. data/spec/services/hyrax/statistics/works/by_resource_type_spec.rb +11 -4
  148. data/spec/services/hyrax/visibility_intention_spec.rb +144 -0
  149. data/spec/services/hyrax/workflow/changes_required_notification_spec.rb +1 -1
  150. data/spec/spec_helper.rb +10 -8
  151. data/spec/support/selectors.rb +10 -1
  152. data/spec/test_app_templates/Gemfile.extra +2 -0
  153. data/spec/test_app_templates/lib/generators/test_app_generator.rb +6 -0
  154. data/spec/views/catalog/_index_list_default.html.erb_spec.rb +3 -2
  155. data/spec/views/catalog/_thumbnail_list_collection.html.erb_spec.rb +38 -5
  156. data/spec/views/hyrax/base/_attributes.html.erb_spec.rb +1 -1
  157. data/spec/views/hyrax/base/_show_actions.html.erb_spec.rb +9 -9
  158. data/spec/views/hyrax/base/show.html.erb_spec.rb +3 -2
  159. data/spec/views/hyrax/collections/_show_document_list_row.html.erb_spec.rb +3 -2
  160. data/spec/views/hyrax/dashboard/collections/_show_document_list_row.html.erb_spec.rb +3 -2
  161. data/spec/wings/active_fedora_converter_spec.rb +31 -0
  162. data/spec/wings/model_transformer_spec.rb +288 -0
  163. data/spec/wings/valkyrie/metadata_adapter_spec.rb +10 -0
  164. data/spec/wings/valkyrie/persister_spec.rb +71 -0
  165. data/spec/wings/valkyrie/query_service_spec.rb +81 -0
  166. data/spec/wings/valkyrie/resource_factory_spec.rb +32 -0
  167. data/spec/wings/value_mapper_spec.rb +60 -0
  168. data/spec/wings_spec.rb +8 -0
  169. data/template.rb +3 -1
  170. metadata +86 -36
@@ -3,27 +3,27 @@ module Hyrax
3
3
  # TODO: aside from height and width, I don't think any of these other terms are indexed by default. - Justin 3/2016
4
4
  module Characterization
5
5
  def byte_order
6
- self[Solrizer.solr_name("byte_order")]
6
+ self[ActiveFedora.index_field_mapper.solr_name("byte_order")]
7
7
  end
8
8
 
9
9
  def capture_device
10
- self[Solrizer.solr_name("capture_device")]
10
+ self[ActiveFedora.index_field_mapper.solr_name("capture_device")]
11
11
  end
12
12
 
13
13
  def color_map
14
- self[Solrizer.solr_name("color_map")]
14
+ self[ActiveFedora.index_field_mapper.solr_name("color_map")]
15
15
  end
16
16
 
17
17
  def color_space
18
- self[Solrizer.solr_name("color_space")]
18
+ self[ActiveFedora.index_field_mapper.solr_name("color_space")]
19
19
  end
20
20
 
21
21
  def compression
22
- self[Solrizer.solr_name("compression")]
22
+ self[ActiveFedora.index_field_mapper.solr_name("compression")]
23
23
  end
24
24
 
25
25
  def gps_timestamp
26
- self[Solrizer.solr_name("gps_timestamp")]
26
+ self[ActiveFedora.index_field_mapper.solr_name("gps_timestamp")]
27
27
  end
28
28
 
29
29
  def height
@@ -31,31 +31,31 @@ module Hyrax
31
31
  end
32
32
 
33
33
  def image_producer
34
- self[Solrizer.solr_name("image_producer")]
34
+ self[ActiveFedora.index_field_mapper.solr_name("image_producer")]
35
35
  end
36
36
 
37
37
  def latitude
38
- self[Solrizer.solr_name("latitude")]
38
+ self[ActiveFedora.index_field_mapper.solr_name("latitude")]
39
39
  end
40
40
 
41
41
  def longitude
42
- self[Solrizer.solr_name("longitude")]
42
+ self[ActiveFedora.index_field_mapper.solr_name("longitude")]
43
43
  end
44
44
 
45
45
  def orientation
46
- self[Solrizer.solr_name("orientation")]
46
+ self[ActiveFedora.index_field_mapper.solr_name("orientation")]
47
47
  end
48
48
 
49
49
  def profile_name
50
- self[Solrizer.solr_name("profile_name")]
50
+ self[ActiveFedora.index_field_mapper.solr_name("profile_name")]
51
51
  end
52
52
 
53
53
  def profile_version
54
- self[Solrizer.solr_name("profile_version")]
54
+ self[ActiveFedora.index_field_mapper.solr_name("profile_version")]
55
55
  end
56
56
 
57
57
  def scanning_software
58
- self[Solrizer.solr_name("scanning_software")]
58
+ self[ActiveFedora.index_field_mapper.solr_name("scanning_software")]
59
59
  end
60
60
 
61
61
  def width
@@ -63,43 +63,43 @@ module Hyrax
63
63
  end
64
64
 
65
65
  def format_label
66
- self[Solrizer.solr_name("format_label")]
66
+ self[ActiveFedora.index_field_mapper.solr_name("format_label")]
67
67
  end
68
68
 
69
69
  def file_size
70
- self[Solrizer.solr_name("file_size")]
70
+ self[ActiveFedora.index_field_mapper.solr_name("file_size")]
71
71
  end
72
72
 
73
73
  def filename
74
- self[Solrizer.solr_name("filename")]
74
+ self[ActiveFedora.index_field_mapper.solr_name("filename")]
75
75
  end
76
76
 
77
77
  def well_formed
78
- self[Solrizer.solr_name("well_formed")]
78
+ self[ActiveFedora.index_field_mapper.solr_name("well_formed")]
79
79
  end
80
80
 
81
81
  def page_count
82
- self[Solrizer.solr_name("page_count")]
82
+ self[ActiveFedora.index_field_mapper.solr_name("page_count")]
83
83
  end
84
84
 
85
85
  def file_title
86
- self[Solrizer.solr_name("file_title")]
86
+ self[ActiveFedora.index_field_mapper.solr_name("file_title")]
87
87
  end
88
88
 
89
89
  def duration
90
- self[Solrizer.solr_name("duration")]
90
+ self[ActiveFedora.index_field_mapper.solr_name("duration")]
91
91
  end
92
92
 
93
93
  def sample_rate
94
- self[Solrizer.solr_name("sample_rate")]
94
+ self[ActiveFedora.index_field_mapper.solr_name("sample_rate")]
95
95
  end
96
96
 
97
97
  def last_modified
98
- self[Solrizer.solr_name("last_modified")]
98
+ self[ActiveFedora.index_field_mapper.solr_name("last_modified")]
99
99
  end
100
100
 
101
101
  def original_checksum
102
- self[Solrizer.solr_name("original_checksum")]
102
+ self[ActiveFedora.index_field_mapper.solr_name("original_checksum")]
103
103
  end
104
104
  end
105
105
  end
@@ -10,7 +10,7 @@ module Hyrax
10
10
  end
11
11
 
12
12
  def solr_name(*args)
13
- Solrizer.solr_name(*args)
13
+ ActiveFedora.index_field_mapper.solr_name(*args)
14
14
  end
15
15
  end
16
16
 
@@ -66,6 +66,7 @@ module Hyrax
66
66
  attribute :source, Solr::Array, solr_name('source')
67
67
  attribute :date_created, Solr::Array, solr_name('date_created')
68
68
  attribute :rights_statement, Solr::Array, solr_name('rights_statement')
69
+ attribute :rights_notes, Solr::Array, solr_name('rights_notes')
69
70
 
70
71
  attribute :mime_type, Solr::String, solr_name('mime_type', :stored_sortable)
71
72
  attribute :workflow_state, Solr::String, solr_name('workflow_state_name', :symbol)
@@ -77,7 +78,7 @@ module Hyrax
77
78
  attribute :thumbnail_path, Solr::String, CatalogController.blacklight_config.index.thumbnail_field
78
79
  attribute :label, Solr::String, solr_name('label')
79
80
  attribute :file_format, Solr::String, solr_name('file_format')
80
- attribute :suppressed?, Solr::String, solr_name('suppressed', Solrizer::Descriptor.new(:boolean, :stored, :indexed))
81
+ attribute :suppressed?, Solr::String, solr_name('suppressed', ActiveFedora::Indexing::Descriptor.new(:boolean, :stored, :indexed))
81
82
 
82
83
  attribute :date_modified, Solr::Date, solr_name('date_modified', :stored_sortable, type: :date)
83
84
  attribute :date_uploaded, Solr::Date, solr_name('date_uploaded', :stored_sortable, type: :date)
@@ -71,11 +71,11 @@ module Hyrax
71
71
 
72
72
  # Method to return the ActiveFedora model
73
73
  def hydra_model
74
- first(Solrizer.solr_name('has_model', :symbol)).constantize
74
+ first(ActiveFedora.index_field_mapper.solr_name('has_model', :symbol)).constantize
75
75
  end
76
76
 
77
77
  def depositor(default = '')
78
- val = first(Solrizer.solr_name('depositor'))
78
+ val = first(ActiveFedora.index_field_mapper.solr_name('depositor'))
79
79
  val.present? ? val : default
80
80
  end
81
81
 
@@ -85,7 +85,7 @@ module Hyrax
85
85
  else
86
86
  :stored_searchable
87
87
  end
88
- fetch(Solrizer.solr_name('creator', descriptor), [])
88
+ fetch(ActiveFedora.index_field_mapper.solr_name('creator', descriptor), [])
89
89
  end
90
90
 
91
91
  def visibility
@@ -30,7 +30,7 @@ module Hyrax::User
30
30
 
31
31
  scope :guests, ->() { where(guest: true) }
32
32
  scope :registered, ->() { where(guest: false) }
33
- scope :without_system_accounts, -> { where("#{Hydra.config.user_key_field} not in (?)", [::User.batch_user_key, ::User.audit_user_key]) }
33
+ scope :without_system_accounts, -> { where("#{::User.user_key_field} not in (?)", [::User.batch_user_key, ::User.audit_user_key]) }
34
34
 
35
35
  # Validate and normalize ORCIDs
36
36
  validates_with OrcidValidator
@@ -48,6 +48,10 @@ module Hyrax::User
48
48
  has_one :sipity_agent, as: :proxy_for, dependent: :destroy, class_name: 'Sipity::Agent'
49
49
  end
50
50
 
51
+ def user_key
52
+ public_send(self.class.user_key_field)
53
+ end
54
+
51
55
  # Look for, in order:
52
56
  # A cached version of the agent
53
57
  # A non-cached version (direct read of the database)
@@ -149,6 +153,10 @@ module Hyrax::User
149
153
  Hyrax.config.audit_user_key
150
154
  end
151
155
 
156
+ def user_key_field
157
+ Hydra.config.user_key_field
158
+ end
159
+
152
160
  # Override this method if you aren't using email/password
153
161
  def batch_user
154
162
  find_or_create_system_user(batch_user_key)
@@ -159,7 +167,7 @@ module Hyrax::User
159
167
  end
160
168
 
161
169
  def find_or_create_system_user(user_key)
162
- User.find_by_user_key(user_key) || User.create!(Hydra.config.user_key_field => user_key, password: Devise.friendly_token[0, 20])
170
+ User.find_by_user_key(user_key) || User.create!(user_key_field => user_key, password: Devise.friendly_token[0, 20])
163
171
  end
164
172
 
165
173
  def from_url_component(component)
@@ -15,7 +15,7 @@ module Hyrax
15
15
 
16
16
  # delegate fields from Hyrax::Works::Metadata to solr_document
17
17
  delegate :based_near_label, :related_url, :depositor, :identifier, :resource_type,
18
- :keyword, :itemtype, :admin_set, to: :solr_document
18
+ :keyword, :itemtype, :admin_set, :rights_notes, to: :solr_document
19
19
 
20
20
  # @param [SolrDocument] solr_document
21
21
  # @param [Ability] current_ability
@@ -218,7 +218,7 @@ module Hyrax
218
218
  Hyrax.config.iiif_metadata_fields.each do |field|
219
219
  metadata << {
220
220
  'label' => I18n.t("simple_form.labels.defaults.#{field}"),
221
- 'value' => Array.wrap(send(field))
221
+ 'value' => Array.wrap(send(field).map { |f| Loofah.fragment(f.to_s).scrub!(:whitewash).to_s })
222
222
  }
223
223
  end
224
224
  metadata
@@ -12,7 +12,7 @@ module Hyrax
12
12
  end
13
13
 
14
14
  def search_field
15
- ERB::Util.h(Solrizer.solr_name(options.fetch(:search_field, field), :facetable, type: :string))
15
+ ERB::Util.h(ActiveFedora.index_field_mapper.solr_name(options.fetch(:search_field, field), :facetable, type: :string))
16
16
  end
17
17
  end
18
18
  end
@@ -19,7 +19,7 @@ module Hyrax
19
19
 
20
20
  # @return [String] Solr field name indicating default sort order
21
21
  def sort_field
22
- Solrizer.solr_name('title', :sortable)
22
+ ActiveFedora.index_field_mapper.solr_name('title', :sortable)
23
23
  end
24
24
 
25
25
  # This overrides the models in FilterByType
@@ -17,7 +17,7 @@ module Hyrax
17
17
  end
18
18
 
19
19
  def self.depositor_field
20
- @depositor_field ||= Solrizer.solr_name('depositor', :symbol).freeze
20
+ @depositor_field ||= ActiveFedora.index_field_mapper.solr_name('depositor', :symbol).freeze
21
21
  end
22
22
 
23
23
  private
@@ -14,7 +14,7 @@ module Hyrax
14
14
 
15
15
  def only_active_embargoes(solr_params)
16
16
  solr_params[:fq] ||= []
17
- solr_params[:fq] = 'embargo_release_date_dtsi:*'
17
+ solr_params[:fq] = 'embargo_release_date_dtsi:[* TO *]'
18
18
  end
19
19
  end
20
20
  end
@@ -14,7 +14,7 @@ module Hyrax
14
14
 
15
15
  def only_active_leases(solr_params)
16
16
  solr_params[:fq] ||= []
17
- solr_params[:fq] = 'lease_expiration_date_dtsi:*'
17
+ solr_params[:fq] = 'lease_expiration_date_dtsi:[* TO *]'
18
18
  end
19
19
  end
20
20
  end
@@ -3,10 +3,6 @@ module Hyrax
3
3
  # rubocop:disable Metrics/MethodLength
4
4
  def self.build_stack
5
5
  ActionDispatch::MiddlewareStack.new.tap do |middleware|
6
- # Wrap everything in a database transaction, if the save of the resource
7
- # fails then roll back any database AdminSetChangeSet
8
- middleware.use Hyrax::Actors::TransactionalRequest
9
-
10
6
  # Ensure you are mutating the most recent version
11
7
  middleware.use Hyrax::Actors::OptimisticLockValidator
12
8
 
@@ -6,7 +6,7 @@ module Hyrax
6
6
 
7
7
  # Returns 'file_format_sim'
8
8
  def index_key
9
- Solrizer.solr_name('file_format', :facetable)
9
+ ActiveFedora.index_field_mapper.solr_name('file_format', :facetable)
10
10
  end
11
11
  end
12
12
  end
@@ -5,7 +5,7 @@ module Hyrax
5
5
  private
6
6
 
7
7
  def index_key
8
- Solrizer.solr_name("resource_type", :facetable)
8
+ ActiveFedora.index_field_mapper.solr_name("resource_type", :facetable)
9
9
  end
10
10
  end
11
11
  end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+ module Hyrax
3
+ ##
4
+ # Provides tools for interpreting form input as a visibility.
5
+ #
6
+ # @since 3.0.0
7
+ class VisibilityIntention
8
+ PUBLIC = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
9
+ PRIVATE = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
10
+ LEASE_REQUEST = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_LEASE
11
+ EMBARGO_REQUEST = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_EMBARGO
12
+
13
+ ##
14
+ # @!attribute [rw] after
15
+ # @return [String] the visibility requested after the embargo/lease release
16
+ # @!attribute [rw] during
17
+ # @return [String] the visibility requested while the embargo/lease is in effect
18
+ # @!attribute [rw] release_date
19
+ # @return [String]
20
+ # @!attribute [rw] visibility
21
+ # @return [String]
22
+ attr_accessor :after, :during, :release_date, :visibility
23
+
24
+ ##
25
+ # @param [String] after
26
+ # @param [String] during
27
+ # @param [String] release_date
28
+ # @param [String] visibility
29
+ def initialize(visibility: PRIVATE, release_date: nil, during: nil, after: nil)
30
+ self.after = after
31
+ self.during = during
32
+ self.release_date = release_date
33
+ self.visibility = visibility
34
+ end
35
+
36
+ ##
37
+ # @return [Array] the parameters for the requested embargo
38
+ def embargo_params
39
+ return [] unless wants_embargo?
40
+ raise ArgumentError unless valid_embargo?
41
+
42
+ [release_date, (during || PRIVATE), (after || PUBLIC)]
43
+ end
44
+
45
+ ##
46
+ # @return [Array] the parameters for the requested embargo
47
+ def lease_params
48
+ return [] unless wants_lease?
49
+ raise ArgumentError unless valid_lease?
50
+
51
+ [release_date, (during || PUBLIC), (after || PRIVATE)]
52
+ end
53
+
54
+ ##
55
+ # @return [Boolean]
56
+ def valid_embargo?
57
+ wants_embargo? && release_date.present?
58
+ end
59
+
60
+ ##
61
+ # @return [Boolean]
62
+ def wants_embargo?
63
+ visibility == EMBARGO_REQUEST
64
+ end
65
+
66
+ ##
67
+ # @return [Boolean]
68
+ def valid_lease?
69
+ wants_lease? && release_date.present?
70
+ end
71
+
72
+ ##
73
+ # @return [Boolean]
74
+ def wants_lease?
75
+ visibility == LEASE_REQUEST
76
+ end
77
+ end
78
+ end
@@ -5,14 +5,14 @@
5
5
  <% index_fields(document).each do |field_name, field| -%>
6
6
  <% if should_render_index_field? document, field %>
7
7
  <dt><%= render_index_field_label document, field: field_name %></dt>
8
- <dd><%= doc_presenter.field_value field_name %></dd>
8
+ <dd><%= doc_presenter.field_value field %></dd>
9
9
  <% end %>
10
10
  <% end %>
11
11
  </dl>
12
12
  </div>
13
13
  </div>
14
- <% if(doc_presenter.field_value('has_model_ssim') == 'Collection') %>
15
- <% collection_presenter = Hyrax::CollectionPresenter.new(document, current_ability) %>
14
+ <% if document.collection? %>
15
+ <% collection_presenter = Hyrax::CollectionPresenter.new(document, current_ability) %>
16
16
  <div class="col-md-4">
17
17
  <div class="collection-counts-wrapper">
18
18
  <div class="collection-counts-item">
@@ -1,3 +1,4 @@
1
1
  <div class="col-md-2">
2
- <span class="<%= Hyrax::ModelIcon.css_class_for(Collection) %> collection-icon-search" aria-hidden="true"></span>
3
- </div>
2
+ <%= render_thumbnail_tag document, {}, suppress_link: true %>
3
+ </div>
4
+
@@ -12,4 +12,5 @@
12
12
  <%= presenter.attribute_to_html(:resource_type, render_as: :faceted, html_dl: true) %>
13
13
  <%= presenter.attribute_to_html(:source, html_dl: true) %>
14
14
  <%= presenter.attribute_to_html(:rights_statement, render_as: :rights_statement, html_dl: true) %>
15
+ <%= presenter.attribute_to_html(:rights_notes, html_dl: true) %>
15
16
  <%= presenter.attribute_to_html(:license, render_as: :license, html_dl: true) %>
@@ -15,13 +15,13 @@
15
15
  <!-- The fileinput-button span is used to style the file input field as button -->
16
16
  <span id="addfiles" class="btn btn-success fileinput-button">
17
17
  <span class="glyphicon glyphicon-plus"></span>
18
- <span>Add files...</span>
18
+ <span><%= t(".add_files") %></span>
19
19
  <input type="file" name="files[]" multiple />
20
20
  </span>
21
21
  <!-- The fileinput-button span is used to style the file input field as button -->
22
22
  <span id="addfolder" class="btn btn-success fileinput-button">
23
23
  <span class="glyphicon glyphicon-plus"></span>
24
- <span>Add folder...</span>
24
+ <span><%= t(".add_folder") %></span>
25
25
  <input type="file" name="files[]" multiple directory webkitdirectory />
26
26
  </span>
27
27
  <% if Hyrax.config.browse_everything? %>
@@ -4,7 +4,7 @@
4
4
  <%= render 'form_permission_under_lease', f: f %>
5
5
  <% else %>
6
6
  <fieldset>
7
- <legend class="legend-save-work">Visibility</legend>
7
+ <legend class="legend-save-work"><%= t('.visibility') %></legend>
8
8
  <ul class="visibility">
9
9
  <li class="radio">
10
10
  <label>