hydra-head 4.0.0.rc2 → 4.0.0.rc3
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.
- data/Gemfile +8 -1
- data/Gemfile.lock +46 -46
- data/HISTORY.textile +2 -0
- data/app/controllers/hydra/application_controller.rb +5 -0
- data/app/controllers/hydra/contributors_controller.rb +2 -1
- data/app/controllers/hydra/permissions_controller.rb +2 -2
- data/app/helpers/hydra/hydra_assets_helper_behavior.rb +4 -3
- data/app/models/ability.rb +97 -0
- data/app/models/common_metadata_asset.rb +2 -2
- data/app/models/generic_content.rb +2 -4
- data/app/models/generic_image.rb +3 -3
- data/app/models/hydra/datastream/common_mods_index_methods.rb +45 -0
- data/app/models/hydra/datastream/mods_article.rb +528 -0
- data/app/models/hydra/datastream/mods_dataset.rb +166 -0
- data/app/models/hydra/datastream/mods_generic_content.rb +496 -0
- data/app/models/hydra/datastream/mods_image.rb +496 -0
- data/app/models/hydra/datastream/rights_metadata.rb +190 -0
- data/app/models/mods_asset.rb +4 -4
- data/app/models/uses_default_partials.rb +2 -2
- data/app/views/catalog/_edit_partials/_default.html.erb +1 -1
- data/app/views/catalog/show.html.erb +1 -1
- data/app/views/contributors/_edit_conference.html.erb +1 -1
- data/app/views/contributors/_edit_organization.html.erb +1 -1
- data/app/views/contributors/_edit_person.html.erb +1 -1
- data/app/views/contributors/_show_organization.html.erb +1 -1
- data/app/views/hydra/file_assets/_index.html.erb +1 -1
- data/app/views/hydra/file_assets/_result.html.erb +1 -1
- data/app/views/hydra/permissions/index.html.erb +1 -1
- data/app/views/hydra/permissions/new.html.erb +1 -1
- data/app/views/mods_assets/_show_permissions.html.erb +1 -1
- data/hydra-head.gemspec +4 -6
- data/lib/hydra/access_controls_enforcement.rb +10 -6
- data/lib/hydra/access_controls_evaluation.rb +7 -71
- data/lib/hydra/assets.rb +1 -4
- data/lib/hydra/common_mods_index_methods.rb +5 -0
- data/lib/hydra/controller.rb +4 -7
- data/lib/hydra/file_assets.rb +3 -8
- data/lib/hydra/model_methods.rb +3 -2
- data/lib/hydra/model_mixins/common_metadata.rb +2 -2
- data/lib/hydra/model_mixins/mods_object.rb +3 -3
- data/lib/hydra/models/file_asset.rb +3 -3
- data/lib/hydra/mods_article.rb +7 -1
- data/lib/hydra/mods_dataset.rb +8 -0
- data/lib/hydra/mods_generic_content.rb +5 -0
- data/lib/hydra/mods_image.rb +5 -0
- data/lib/hydra/repository_controller.rb +14 -15
- data/lib/hydra/rights_metadata.rb +5 -1
- data/lib/hydra/submission_workflow.rb +1 -1
- data/lib/hydra-head/version.rb +1 -1
- data/lib/hydra.rb +1 -0
- data/lib/mediashelf/active_fedora_helper.rb +71 -0
- data/lib/uva/mods_index_methods.rb +5 -0
- data/test_support/etc/Gemfile +3 -2
- data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +5 -7
- data/test_support/spec/controllers/file_assets_controller_spec.rb +3 -14
- data/test_support/spec/controllers/hydra-assets_controller_spec.rb +2 -2
- data/test_support/spec/helpers/access_controls_enforcement_spec.rb +14 -0
- data/test_support/spec/helpers/access_controls_evaluation_spec.rb +7 -16
- data/test_support/spec/helpers/hydra-repository_controller_spec.rb +0 -14
- data/test_support/spec/helpers/hydra_assets_helper_spec.rb +11 -11
- data/test_support/spec/helpers/hydra_model_methods_spec.rb +2 -2
- data/test_support/spec/integration/file_asset_spec.rb +0 -1
- data/test_support/spec/lib/common_mods_index_methods_spec.rb +1 -1
- data/test_support/spec/lib/hydra_submission_workflow_spec.rb +1 -1
- data/test_support/spec/models/ability_spec.rb +16 -0
- data/test_support/spec/models/file_asset_spec.rb +0 -1
- data/test_support/spec/models/hydra_rights_metadata_spec.rb +4 -5
- data/test_support/spec/models/mods_asset_spec.rb +2 -11
- data/vendor/cache/{active-fedora-4.0.0.rc13.gem → active-fedora-4.0.0.rc18.gem} +0 -0
- data/vendor/cache/blacklight-3.3.1.gem +0 -0
- data/vendor/cache/cancan-1.6.7.gem +0 -0
- data/vendor/cache/compass-0.12.1.gem +0 -0
- data/vendor/cache/compass-rails-1.0.1.gem +0 -0
- data/vendor/cache/compass-susy-plugin-0.9.gem +0 -0
- data/vendor/cache/factory_girl-2.6.4.gem +0 -0
- data/vendor/cache/gherkin-2.9.1.gem +0 -0
- data/vendor/cache/mail-2.4.4.gem +0 -0
- data/vendor/cache/nokogiri-1.5.2.gem +0 -0
- data/vendor/cache/om-1.6.0.rc3.gem +0 -0
- data/vendor/cache/orm_adapter-0.0.7.gem +0 -0
- data/vendor/cache/rack-cache-1.2.gem +0 -0
- data/vendor/cache/rspec-2.9.0.gem +0 -0
- data/vendor/cache/rspec-core-2.9.0.gem +0 -0
- data/vendor/cache/rspec-expectations-2.9.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.9.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.9.0.gem +0 -0
- data/vendor/cache/sass-rails-3.2.5.gem +0 -0
- data/vendor/cache/stomp-1.2.2.gem +0 -0
- metadata +71 -59
- data/lib/hydra/image.rb +0 -178
- data/uninstall.rb +0 -1
- data/vendor/cache/compass-0.12.rc.1.gem +0 -0
- data/vendor/cache/factory_girl-2.6.1.gem +0 -0
- data/vendor/cache/gherkin-2.9.0.gem +0 -0
- data/vendor/cache/mail-2.4.3.gem +0 -0
- data/vendor/cache/nokogiri-1.5.0.gem +0 -0
- data/vendor/cache/om-1.5.3.gem +0 -0
- data/vendor/cache/orm_adapter-0.0.6.gem +0 -0
- data/vendor/cache/rack-cache-1.1.gem +0 -0
- data/vendor/cache/rspec-2.6.0.gem +0 -0
- data/vendor/cache/rspec-core-2.6.4.gem +0 -0
- data/vendor/cache/rspec-expectations-2.6.0.gem +0 -0
- data/vendor/cache/rspec-mocks-2.6.0.gem +0 -0
- data/vendor/cache/rspec-rails-2.6.1.gem +0 -0
- data/vendor/cache/sass-rails-3.2.4.gem +0 -0
- data/vendor/cache/stomp-1.2.1.gem +0 -0
data/app/models/mods_asset.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# A Basic Model for Assets that conform to Hydra commonMetadata cModel and have basic MODS metadata (currently "Article" is the MODS exemplar)
|
2
2
|
class ModsAsset < ActiveFedora::Base
|
3
3
|
|
4
|
-
# declares a rightsMetadata datastream with type Hydra::RightsMetadata
|
4
|
+
# declares a rightsMetadata datastream with type Hydra::Datastream::RightsMetadata
|
5
5
|
# basically, it is another expression of
|
6
|
-
# has_metadata :name => "rightsMetadata", :type => Hydra::RightsMetadata
|
6
|
+
# has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
7
7
|
include Hydra::ModelMixins::CommonMetadata
|
8
8
|
|
9
|
-
# declares a descMetadata datastream with type Hydra::ModsArticle
|
9
|
+
# declares a descMetadata datastream with type Hydra::Datastream::ModsArticle
|
10
10
|
# basically, it is another expression of
|
11
|
-
# has_metadata :name => "descMetadata", :type => Hydra::ModsArticle
|
11
|
+
# has_metadata :name => "descMetadata", :type => Hydra::Datastream::ModsArticle
|
12
12
|
include Hydra::ModelMixins::ModsObject
|
13
13
|
|
14
14
|
# adds helpful methods for basic hydra objects
|
@@ -4,9 +4,9 @@
|
|
4
4
|
# a Fedora object for the Hypatia SET hydra content type
|
5
5
|
class UsesDefaultPartials < ActiveFedora::Base
|
6
6
|
|
7
|
-
has_metadata :name => "descMetadata", :type => Hydra::ModsGenericContent
|
7
|
+
has_metadata :name => "descMetadata", :type => Hydra::Datastream::ModsGenericContent
|
8
8
|
|
9
|
-
has_metadata :name => "rightsMetadata", :type => Hydra::RightsMetadata
|
9
|
+
has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
10
10
|
|
11
11
|
# adds helpful methods for basic hydra objects.
|
12
12
|
include Hydra::ModelMethods
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<span class="next"><%= link_to_next_document(@next_document)%></span>
|
19
19
|
</div>
|
20
20
|
<%- end -%>
|
21
|
-
<%- if
|
21
|
+
<%- if can?(:edit, @document) && controller.action_name != "delete" -%>
|
22
22
|
<span class="edit-browse">
|
23
23
|
<%= edit_and_browse_links %>
|
24
24
|
</span>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% if @document_fedora.class.respond_to?(:conference_relator_terms) %>
|
6
6
|
<% choices = @document_fedora.class.conference_relator_terms %>
|
7
7
|
<% else %>
|
8
|
-
<% choices = Hydra::ModsArticle.conference_relator_terms %>
|
8
|
+
<% choices = Hydra::Datastream::ModsArticle.conference_relator_terms %>
|
9
9
|
<% end %>
|
10
10
|
<li>
|
11
11
|
<dl class="conference contributor" id="<%= base_id %>">
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% if @document_fedora.class.respond_to?(:organization_relator_terms) %>
|
6
6
|
<% choices = @document_fedora.class.organization_relator_terms %>
|
7
7
|
<% else %>
|
8
|
-
<% choices = Hydra::ModsArticle.organization_relator_terms %>
|
8
|
+
<% choices = Hydra::Datastream::ModsArticle.organization_relator_terms %>
|
9
9
|
<% end %>
|
10
10
|
|
11
11
|
<dl class="organization contributor" id="<%= base_id %>">
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% if @document_fedora.class.respond_to?(:person_relator_terms) %>
|
6
6
|
<% choices = @document_fedora.class.person_relator_terms %>
|
7
7
|
<% else %>
|
8
|
-
<% choices = Hydra::ModsArticle.person_relator_terms %>
|
8
|
+
<% choices = Hydra::Datastream::ModsArticle.person_relator_terms %>
|
9
9
|
<% end %>
|
10
10
|
<fieldset class="person contributor" id="<%= base_id %>">
|
11
11
|
<%- if @document_fedora.datastreams["descMetadata"].class.terminology.has_term?(:person, :computing_id) %>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% if @document_fedora.class.respond_to?(:organization_relator_terms) %>
|
6
6
|
<% choices = @document_fedora.class.organization_relator_terms %>
|
7
7
|
<% else %>
|
8
|
-
<% choices = Hydra::ModsArticle.organization_relator_terms %>
|
8
|
+
<% choices = Hydra::Datastream::ModsArticle.organization_relator_terms %>
|
9
9
|
<% end %>
|
10
10
|
<% unless get_values_from_datastream(@document_fedora,"descMetadata", [{:organization => organization_counter}, :namePart]).first.empty? %>
|
11
11
|
<li id="<%= base_id %>">
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</table>
|
8
8
|
<% end %>
|
9
9
|
|
10
|
-
<% if !@document.nil? &&
|
10
|
+
<% if !@document.nil? && can?(:edit, @document) && params[:number_of_files].to_i > 0 %>
|
11
11
|
<%- container_content_type_param = defined?(container_content_type) ? "?container_content_type=#{container_content_type}" : "" %>
|
12
12
|
<fieldset id='uploader'>
|
13
13
|
<legend>File Upload</legend>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
</td>
|
5
5
|
<td>
|
6
6
|
|
7
|
-
<% if
|
7
|
+
<% if can? :edit, @document %>
|
8
8
|
<%= button_to("Delete", "/file_assets/" + result["id"] + "?container_id=" + @document[:id], :confirm => "Are you sure you want to delete this file?", :method => :delete, :class => "delete-button") %>
|
9
9
|
|
10
10
|
<% end %>
|
@@ -1 +1 @@
|
|
1
|
-
<%= render :partial=>"permissions/index" %>
|
1
|
+
<%= render :partial=>"hydra/permissions/index" %>
|
@@ -1 +1 @@
|
|
1
|
-
<%= render :partial=>"permissions/new" %>
|
1
|
+
<%= render :partial=>"hydra/permissions/new" %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%- document ||= @document -%>
|
2
2
|
<div>
|
3
3
|
<dl class="defList">
|
4
|
-
<% if
|
4
|
+
<% if can? :edit, document %>
|
5
5
|
<h3>Group</h3>
|
6
6
|
<%= get_data_with_label(document, "Discover Access:", 'discover_access_group_t', :default=>"private") %>
|
7
7
|
<%= get_data_with_label(document, "Read & Download Access:", 'read_access_group_t', :default=>"private") %>
|
data/hydra-head.gemspec
CHANGED
@@ -13,22 +13,20 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = %q{Hydra-Head is a Rails Engine containing the core code for a Hydra application. The full hydra stack includes: Blacklight, Fedora, Solr, active-fedora, solrizer, and om}
|
14
14
|
|
15
15
|
s.add_dependency "rails", '~> 3.2.1'
|
16
|
-
s.add_dependency "blacklight", '~>3.
|
16
|
+
s.add_dependency "blacklight", '~>3.3.1'
|
17
17
|
s.add_dependency "devise"
|
18
|
-
s.add_dependency "active-fedora", '~>4.0.0.
|
18
|
+
s.add_dependency "active-fedora", '~>4.0.0.rc18'
|
19
19
|
s.add_dependency 'RedCloth', '=4.2.9'
|
20
20
|
s.add_dependency 'solrizer-fedora', '>=1.2.5'
|
21
21
|
s.add_dependency 'block_helpers'
|
22
22
|
s.add_dependency 'sanitize'
|
23
|
-
s.add_dependency '
|
24
|
-
|
23
|
+
s.add_dependency 'cancan'
|
25
24
|
|
26
25
|
s.add_development_dependency 'sqlite3-ruby'
|
27
26
|
|
28
27
|
s.add_development_dependency 'yard'
|
29
28
|
s.add_development_dependency 'jettywrapper', ">=1.0.4"
|
30
|
-
|
31
|
-
s.add_development_dependency 'rspec-rails', '~> 2.6.0'
|
29
|
+
s.add_development_dependency 'rspec-rails'
|
32
30
|
s.add_development_dependency 'mocha'
|
33
31
|
s.add_development_dependency 'cucumber-rails', '>=1.2.0'
|
34
32
|
s.add_development_dependency 'factory_girl'
|
@@ -18,9 +18,13 @@ module Hydra::AccessControlsEnforcement
|
|
18
18
|
# end
|
19
19
|
def enforce_access_controls(opts={})
|
20
20
|
controller_action = params[:action].to_s
|
21
|
-
if params[:action] == "destroy"
|
21
|
+
controller_action = "edit" if params[:action] == "destroy"
|
22
22
|
delegate_method = "enforce_#{controller_action}_permissions"
|
23
|
-
self.
|
23
|
+
if self.respond_to?(delegate_method.to_sym, true)
|
24
|
+
self.send(delegate_method.to_sym)
|
25
|
+
else
|
26
|
+
true
|
27
|
+
end
|
24
28
|
end
|
25
29
|
|
26
30
|
|
@@ -71,7 +75,7 @@ module Hydra::AccessControlsEnforcement
|
|
71
75
|
if params[:viewing_context] == "browse"
|
72
76
|
session[:viewing_context] = params[:viewing_context]
|
73
77
|
elsif session[:viewing_context] == "edit"
|
74
|
-
if
|
78
|
+
if can? :edit, params[:id]
|
75
79
|
logger.debug("enforce_viewing_context_for_show_requests redirecting to edit")
|
76
80
|
if params[:files]
|
77
81
|
redirect_to :action=>:edit, :files=>true
|
@@ -104,7 +108,7 @@ module Hydra::AccessControlsEnforcement
|
|
104
108
|
end
|
105
109
|
end
|
106
110
|
end
|
107
|
-
unless
|
111
|
+
unless can? :read, params[:id]
|
108
112
|
flash[:notice]= "You do not have sufficient access privileges to read this document, which has been marked private."
|
109
113
|
redirect_to(:action => 'index', :q => nil , :f => nil) and return false
|
110
114
|
end
|
@@ -116,7 +120,7 @@ module Hydra::AccessControlsEnforcement
|
|
116
120
|
def enforce_edit_permissions(opts={})
|
117
121
|
logger.debug("Enforcing edit permissions")
|
118
122
|
load_permissions_from_solr
|
119
|
-
if !
|
123
|
+
if !can? :edit, params[:id]
|
120
124
|
session[:viewing_context] = "browse"
|
121
125
|
flash[:notice] = "You do not have sufficient privileges to edit this document. You have been redirected to the read-only view."
|
122
126
|
redirect_to :action=>:show
|
@@ -164,7 +168,7 @@ module Hydra::AccessControlsEnforcement
|
|
164
168
|
# end
|
165
169
|
def add_access_controls_to_solr_params(solr_parameters, user_parameters)
|
166
170
|
apply_gated_discovery(solr_parameters, user_parameters)
|
167
|
-
if !
|
171
|
+
if !can? :read, params[:id]
|
168
172
|
solr_parameters[:qt] = Blacklight.config[:public_qt]
|
169
173
|
end
|
170
174
|
end
|
@@ -16,86 +16,22 @@ module Hydra::AccessControlsEvaluation
|
|
16
16
|
# @example
|
17
17
|
# test_permission(:edit)
|
18
18
|
def test_permission(permission_type)
|
19
|
-
|
20
|
-
|
21
|
-
logger.warn("SolrDocument is nil")
|
22
|
-
end
|
23
|
-
|
24
|
-
if current_user.nil?
|
25
|
-
user = "public"
|
26
|
-
logger.debug("current_user is nil, assigning public")
|
27
|
-
else
|
28
|
-
user = user_key
|
29
|
-
end
|
30
|
-
|
31
|
-
user_groups = RoleMapper.roles(user)
|
32
|
-
# everyone is automatically a member of the group 'public'
|
33
|
-
user_groups.push 'public' unless user_groups.include?('public')
|
34
|
-
# logged-in users are automatically members of the group "registered"
|
35
|
-
user_groups.push 'registered' unless (user == "public" || user_groups.include?('registered') )
|
36
|
-
|
37
|
-
logger.debug("User #{user} is a member of groups: #{user_groups.inspect}")
|
38
|
-
case permission_type
|
39
|
-
when :edit
|
40
|
-
logger.debug("Checking edit permissions for user: #{user}")
|
41
|
-
group_intersection = user_groups & edit_groups
|
42
|
-
result = !group_intersection.empty? || edit_persons.include?(user)
|
43
|
-
when :read
|
44
|
-
logger.debug("Checking read permissions for user: #{user}")
|
45
|
-
group_intersection = user_groups & read_groups
|
46
|
-
result = !group_intersection.empty? || read_persons.include?(user)
|
47
|
-
else
|
48
|
-
result = false
|
49
|
-
end
|
50
|
-
logger.debug("test_permission result: #{result}")
|
51
|
-
return result
|
52
|
-
# else
|
53
|
-
# logger.debug("nil user, test_permission returning false")
|
54
|
-
# return false
|
55
|
-
# end
|
19
|
+
ActiveSupport::Deprecation.warn("test_permission has been deprecated. Use can? instead")
|
20
|
+
can? permission_type, @permissions_solr_document
|
56
21
|
end
|
57
|
-
|
22
|
+
|
58
23
|
# Test whether the the current user has edit permissions.
|
59
24
|
# This is available as a view helper method as well as within your controllers.
|
60
25
|
def editor?
|
61
|
-
|
26
|
+
logger.warn("editor? has been deprecated. Use can? instead")
|
27
|
+
can? :edit, @permissions_solr_document
|
62
28
|
end
|
63
29
|
|
64
30
|
# Test whether the the current user has read permissions.
|
65
31
|
# This is available as a view helper method as well as within your controllers.
|
66
32
|
def reader?
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
private
|
71
|
-
def edit_groups
|
72
|
-
edit_group_field = Hydra.config[:permissions][:edit][:group]
|
73
|
-
eg = ((@permissions_solr_document == nil || @permissions_solr_document.fetch(edit_group_field,nil) == nil) ? [] : @permissions_solr_document.fetch(edit_group_field,nil))
|
74
|
-
logger.debug("edit_groups: #{eg.inspect}")
|
75
|
-
return eg
|
76
|
-
end
|
77
|
-
|
78
|
-
# edit implies read, so read_groups is the union of edit and read groups
|
79
|
-
def read_groups
|
80
|
-
read_group_field = Hydra.config[:permissions][:read][:group]
|
81
|
-
rg = edit_groups | ((@permissions_solr_document == nil || @permissions_solr_document.fetch(read_group_field,nil) == nil) ? [] : @permissions_solr_document.fetch(read_group_field,nil))
|
82
|
-
logger.debug("read_groups: #{rg.inspect}")
|
83
|
-
return rg
|
84
|
-
end
|
85
|
-
|
86
|
-
def edit_persons
|
87
|
-
edit_person_field = Hydra.config[:permissions][:edit][:individual]
|
88
|
-
ep = ((@permissions_solr_document == nil || @permissions_solr_document.fetch(edit_person_field,nil) == nil) ? [] : @permissions_solr_document.fetch(edit_person_field,nil))
|
89
|
-
logger.debug("edit_persons: #{ep.inspect}")
|
90
|
-
return ep
|
91
|
-
end
|
92
|
-
|
93
|
-
# edit implies read, so read_persons is the union of edit and read persons
|
94
|
-
def read_persons
|
95
|
-
read_individual_field = Hydra.config[:permissions][:read][:individual]
|
96
|
-
rp = edit_persons | ((@permissions_solr_document == nil || @permissions_solr_document.fetch(read_individual_field,nil) == nil) ? [] : @permissions_solr_document.fetch(read_individual_field,nil))
|
97
|
-
logger.debug("read_persons: #{rp.inspect}")
|
98
|
-
return rp
|
33
|
+
logger.warn("reader? has been deprecated. Use can? instead")
|
34
|
+
can? :read, @permissions_solr_document
|
99
35
|
end
|
100
36
|
|
101
37
|
end
|
data/lib/hydra/assets.rb
CHANGED
@@ -90,7 +90,7 @@ module Hydra::Assets
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def destroy
|
93
|
-
af = ActiveFedora::Base.find(params[:id])
|
93
|
+
af = ActiveFedora::Base.find(params[:id], :cast=>true)
|
94
94
|
assets = af.destroy_child_assets
|
95
95
|
af.delete
|
96
96
|
msg = "Deleted #{params[:id]}"
|
@@ -105,9 +105,6 @@ module Hydra::Assets
|
|
105
105
|
|
106
106
|
protected
|
107
107
|
|
108
|
-
def load_document
|
109
|
-
@document = load_document_from_params
|
110
|
-
end
|
111
108
|
|
112
109
|
|
113
110
|
def mods_assets_update_validation
|
@@ -8,6 +8,11 @@
|
|
8
8
|
# This method returns a Hash of person_full_name_facet values which extract the persons affiliation and puts it in an mods_organization_facet
|
9
9
|
|
10
10
|
module Hydra::CommonModsIndexMethods
|
11
|
+
|
12
|
+
def self.included(base)
|
13
|
+
ActiveSupport::Deprecation.warn("Hydra::CommonModsIndexMethods has been deprecated. Use Hydra::Datastream::CommonModsIndexMethods instead")
|
14
|
+
end
|
15
|
+
|
11
16
|
# Extracts the first and last names of persons and creates Solr::Field objects with for person_full_name_facet
|
12
17
|
#
|
13
18
|
# == Returns:
|
data/lib/hydra/controller.rb
CHANGED
@@ -24,15 +24,12 @@ module Hydra::Controller
|
|
24
24
|
# Sets @document_fedora with the loaded object
|
25
25
|
# Sets @file_assets with file objects that are children of the loaded object
|
26
26
|
def load_fedora_document
|
27
|
-
@document_fedora = ActiveFedora::Base.find(params[:id])
|
28
|
-
unless @document_fedora.class.include?(
|
29
|
-
@document_fedora.class.send :include,
|
30
|
-
end
|
31
|
-
unless @document_fedora.class.include?(ActiveFedora::FileManagement)
|
32
|
-
@document_fedora.class.send :include, ActiveFedora::FileManagement
|
27
|
+
@document_fedora = ActiveFedora::Base.find(params[:id], :cast=>true)
|
28
|
+
unless @document_fedora.class.include?(Hydra::ModelMethods)
|
29
|
+
@document_fedora.class.send :include, Hydra::ModelMethods
|
33
30
|
end
|
34
31
|
|
35
|
-
@file_assets = @document_fedora.
|
32
|
+
@file_assets = @document_fedora.parts(:response_format=>:solr)
|
36
33
|
end
|
37
34
|
|
38
35
|
|
data/lib/hydra/file_assets.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Hydra::FileAssets
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
|
5
4
|
included do
|
6
5
|
include Hydra::AccessControlsEnforcement
|
7
6
|
include Hydra::AssetsControllerHelper
|
@@ -33,7 +32,7 @@ module Hydra::FileAssets
|
|
33
32
|
@container_response, @document = get_solr_response_for_doc_id(params[:asset_id])
|
34
33
|
|
35
34
|
# Including these lines for backwards compatibility (until we can use Rails3 callbacks)
|
36
|
-
@container = ActiveFedora::Base.find(params[:asset_id])
|
35
|
+
@container = ActiveFedora::Base.find(params[:asset_id], :cast=>true)
|
37
36
|
@solr_result = @container.file_objects(:response_format=>:solr)
|
38
37
|
end
|
39
38
|
|
@@ -98,7 +97,7 @@ module Hydra::FileAssets
|
|
98
97
|
|
99
98
|
# Common destroy method for all AssetsControllers
|
100
99
|
def destroy
|
101
|
-
ActiveFedora::Base.find(params[:id]).delete
|
100
|
+
ActiveFedora::Base.find(params[:id], :cast=>true).delete
|
102
101
|
|
103
102
|
flash[:notice] = "Deleted #{params[:id]} from #{params[:container_id]}."
|
104
103
|
|
@@ -125,11 +124,7 @@ module Hydra::FileAssets
|
|
125
124
|
pid = @file_asset.container_id
|
126
125
|
@downloadable = false
|
127
126
|
# A FileAsset is downloadable iff the user has read or higher access to a parent
|
128
|
-
|
129
|
-
@response, @permissions_solr_document = get_solr_response_for_doc_id(pid)
|
130
|
-
rescue Blacklight::Exceptions::InvalidSolrID
|
131
|
-
end
|
132
|
-
if reader?
|
127
|
+
if can? :read, @file_asset
|
133
128
|
@downloadable = true
|
134
129
|
end
|
135
130
|
|
data/lib/hydra/model_methods.rb
CHANGED
@@ -2,8 +2,9 @@ module Hydra::ModelMethods
|
|
2
2
|
extend ActiveSupport::Concern
|
3
3
|
|
4
4
|
included do
|
5
|
-
|
6
|
-
|
5
|
+
unless self.class == Module
|
6
|
+
self.has_many :parts, :class_name=>'ActiveFedora::Base', :property=>:is_part_of
|
7
|
+
end
|
7
8
|
end
|
8
9
|
|
9
10
|
#
|
@@ -15,10 +15,10 @@ module Hydra::ModelMixins
|
|
15
15
|
|
16
16
|
def self.included(klazz)
|
17
17
|
# Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
|
18
|
-
klazz.has_metadata :name => "rightsMetadata", :type => Hydra::RightsMetadata
|
18
|
+
klazz.has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
19
19
|
|
20
20
|
# Ensure that objects assert the commonMetadata cModel
|
21
21
|
# klazz.relationships << :has_model => "info:fedora/hydra-cModel:commonMetadata"
|
22
22
|
end
|
23
23
|
end
|
24
|
-
end
|
24
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
# Include this into models to specify that the descMetadata datastream contains basic MODS metadata
|
2
2
|
#
|
3
3
|
# Explicitly declares:
|
4
|
-
# descMetadata datastream using Hydra::ModsArticle Terminology
|
4
|
+
# descMetadata datastream using Hydra::Datastream::ModsArticle Terminology
|
5
5
|
#
|
6
6
|
module Hydra::ModelMixins::ModsObject
|
7
7
|
|
8
8
|
def self.included(klazz)
|
9
9
|
# Uses the Hydra MODS Basic profile for tracking descriptive metadata
|
10
|
-
klazz.has_metadata :name => "descMetadata", :type => Hydra::ModsArticle
|
10
|
+
klazz.has_metadata :name => "descMetadata", :type => Hydra::Datastream::ModsArticle
|
11
11
|
|
12
12
|
# Ensure that objects assert the modsObject cModel
|
13
13
|
# klazz.relationships << :has_model => "info:fedora/hydra-cModel:modsObject"
|
14
14
|
end
|
15
15
|
|
16
|
-
end
|
16
|
+
end
|
@@ -28,12 +28,12 @@ module Hydra
|
|
28
28
|
|
29
29
|
|
30
30
|
def label
|
31
|
-
descMetadata.
|
31
|
+
descMetadata.title.first
|
32
32
|
end
|
33
33
|
|
34
34
|
def label=(label)
|
35
35
|
super
|
36
|
-
descMetadata.
|
36
|
+
descMetadata.title = label
|
37
37
|
end
|
38
38
|
|
39
39
|
# augments add_file_datastream to also put file size (in bytes/KB/MB/GB/TB) in dc:extent
|
@@ -46,7 +46,7 @@ module Hydra
|
|
46
46
|
else
|
47
47
|
size = ""
|
48
48
|
end
|
49
|
-
datastreams["descMetadata"].
|
49
|
+
datastreams["descMetadata"].extent = size
|
50
50
|
end
|
51
51
|
|
52
52
|
# Override ActiveFedora::Base.to_solr to...
|
data/lib/hydra/mods_article.rb
CHANGED
@@ -2,9 +2,15 @@ require "uva/mods_index_methods"
|
|
2
2
|
module Hydra
|
3
3
|
|
4
4
|
class ModsArticle < ActiveFedora::NokogiriDatastream
|
5
|
-
include Hydra::CommonModsIndexMethods
|
5
|
+
include Hydra::Datastream::CommonModsIndexMethods
|
6
6
|
include Uva::ModsIndexMethods
|
7
7
|
|
8
|
+
def initialize(digital_object, dsid, options={})
|
9
|
+
ActiveSupport::Deprecation.warn("Hydra::ModsArticle has been deprecated. Use Hydra::Datastream::ModsArticle instead")
|
10
|
+
super
|
11
|
+
|
12
|
+
end
|
13
|
+
|
8
14
|
set_terminology do |t|
|
9
15
|
t.root(:path=>"mods", :xmlns=>"http://www.loc.gov/mods/v3", :schema=>"http://www.loc.gov/standards/mods/v3/mods-3-2.xsd")
|
10
16
|
|
data/lib/hydra/mods_dataset.rb
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
require "uva/mods_index_methods"
|
2
2
|
module Hydra
|
3
|
+
|
3
4
|
class ModsDataset < ActiveFedora::NokogiriDatastream
|
4
5
|
include Hydra::CommonModsIndexMethods
|
6
|
+
|
7
|
+
def initialize(digital_object, dsid, options={})
|
8
|
+
ActiveSupport::Deprecation.warn("Hydra::ModsDataset has been deprecated. Use Hydra::Datastream::ModsDataset instead")
|
9
|
+
super
|
10
|
+
|
11
|
+
end
|
12
|
+
|
5
13
|
set_terminology do |t|
|
6
14
|
t.root(:path=>"mods", :xmlns=>"http://www.loc.gov/mods/v3", :schema=>"http://www.loc.gov/standards/mods/v3/mods-3-2.xsd")
|
7
15
|
|
@@ -2,6 +2,11 @@ module Hydra
|
|
2
2
|
class ModsGenericContent < ActiveFedora::NokogiriDatastream
|
3
3
|
include Hydra::CommonModsIndexMethods
|
4
4
|
|
5
|
+
def initialize(digital_object, dsid, options={})
|
6
|
+
ActiveSupport::Deprecation.warn("Hydra::ModsGenericContent has been deprecated. Use Hydra::Datastream::ModsGenericContent instead")
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
5
10
|
set_terminology do |t|
|
6
11
|
t.root(:path=>"mods", :xmlns=>"http://www.loc.gov/mods/v3", :schema=>"http://www.loc.gov/standards/mods/v3/mods-3-2.xsd")
|
7
12
|
|
data/lib/hydra/mods_image.rb
CHANGED
@@ -2,6 +2,11 @@ module Hydra
|
|
2
2
|
class ModsImage < ActiveFedora::NokogiriDatastream
|
3
3
|
include Hydra::CommonModsIndexMethods
|
4
4
|
|
5
|
+
def initialize(digital_object, dsid, options={})
|
6
|
+
ActiveSupport::Deprecation.warn("Hydra::ModsImage has been deprecated. Use Hydra::Datastream::ModsImage instead")
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
5
10
|
set_terminology do |t|
|
6
11
|
t.root(:path=>"mods", :xmlns=>"http://www.loc.gov/mods/v3", :schema=>"http://www.loc.gov/standards/mods/v3/mods-3-2.xsd")
|
7
12
|
|
@@ -38,15 +38,6 @@ module Hydra::RepositoryController
|
|
38
38
|
::ActiveFedora::SolrService.solr_name(field_name, field_type)
|
39
39
|
end
|
40
40
|
|
41
|
-
# Uses submitted params Hash to figure out what Model to load
|
42
|
-
# params should contain :content_type and :id
|
43
|
-
def load_document_from_params
|
44
|
-
af_model = retrieve_af_model(params[:content_type])
|
45
|
-
unless af_model
|
46
|
-
af_model = ModsAsset
|
47
|
-
end
|
48
|
-
return af_model.find(params[:id])
|
49
|
-
end
|
50
41
|
|
51
42
|
# Returns a list of datastreams for download.
|
52
43
|
# Uses user's roles and "mime_type" value in submitted params to decide what to return.
|
@@ -55,7 +46,7 @@ module Hydra::RepositoryController
|
|
55
46
|
if opts[:canonical]
|
56
47
|
mime_type = opts[:mime_type] ? opts[:mime_type] : "application/pdf"
|
57
48
|
result = filter_datastreams_for_mime_type(fedora_object.datastreams, mime_type).sort.first[1]
|
58
|
-
elsif
|
49
|
+
elsif can? :edit, fedora_object
|
59
50
|
if params["mime_type"] == "all"
|
60
51
|
result = fedora_object.datastreams
|
61
52
|
else
|
@@ -82,6 +73,19 @@ module Hydra::RepositoryController
|
|
82
73
|
end
|
83
74
|
|
84
75
|
protected
|
76
|
+
def load_document
|
77
|
+
@document = load_document_from_params
|
78
|
+
end
|
79
|
+
|
80
|
+
# Uses submitted params Hash to figure out what Model to load
|
81
|
+
# params should contain :content_type and :id
|
82
|
+
def load_document_from_params
|
83
|
+
af_model = retrieve_af_model(params[:content_type])
|
84
|
+
unless af_model
|
85
|
+
af_model = ModsAsset
|
86
|
+
end
|
87
|
+
return af_model.find(params[:id])
|
88
|
+
end
|
85
89
|
|
86
90
|
def retrieve_af_model(class_name, opts={})
|
87
91
|
if !class_name.nil?
|
@@ -98,11 +102,6 @@ module Hydra::RepositoryController
|
|
98
102
|
return false
|
99
103
|
end
|
100
104
|
|
101
|
-
def load_af_instance_from_solr(doc)
|
102
|
-
pid = doc[:id] ? doc[:id] : doc[:id.to_s]
|
103
|
-
pid ? ActiveFedora::Base.load_instance_from_solr(pid,doc) : nil
|
104
|
-
end
|
105
|
-
|
106
105
|
private
|
107
106
|
|
108
107
|
def filter_datastreams_for_mime_type(datastreams_hash, mime_type)
|
@@ -1,7 +1,11 @@
|
|
1
|
-
require "active-fedora"
|
2
1
|
module Hydra
|
3
2
|
class RightsMetadata < ActiveFedora::NokogiriDatastream
|
4
3
|
|
4
|
+
def initialize(digital_object, dsid, options={})
|
5
|
+
ActiveSupport::Deprecation.warn("Hydra::RightsMetadata has been deprecated. Use Hydra::Datastream::RightsMetadata instead")
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
5
9
|
set_terminology do |t|
|
6
10
|
t.root(:path=>"rightsMetadata", :xmlns=>"http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1", :schema=>"http://github.com/projecthydra/schemas/tree/v1/rightsMetadata.xsd")
|
7
11
|
t.copyright {
|
@@ -118,7 +118,7 @@ module Hydra::SubmissionWorkflow
|
|
118
118
|
begin
|
119
119
|
af = ActiveFedora::Base.load_instance_from_solr(params[:id])
|
120
120
|
return "#{ActiveFedora::ContentModel.known_models_for( af ).first}".underscore.pluralize.to_sym
|
121
|
-
rescue
|
121
|
+
rescue Exception => e #TODO this should be ActiveFedora::ObjectNotFoundError
|
122
122
|
nil
|
123
123
|
end
|
124
124
|
end
|
data/lib/hydra-head/version.rb
CHANGED