hydra-core 6.5.2 → 7.0.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/hydra/controller.rb +2 -0
- data/app/controllers/concerns/hydra/controller/download_behavior.rb +18 -19
- data/{lib → app/models/concerns}/hydra/model_methods.rb +0 -0
- data/app/models/concerns/hydra/models.rb +5 -0
- data/{lib → app/models/concerns}/hydra/models/file_asset.rb +0 -0
- data/{lib → app/models/concerns}/hydra/solr.rb +0 -0
- data/hydra-core.gemspec +3 -2
- data/lib/generators/hydra/head_generator.rb +4 -11
- data/lib/generators/hydra/templates/config/initializers/hydra_config.rb +17 -24
- data/lib/hydra-core.rb +3 -33
- data/lib/hydra-head/engine.rb +1 -0
- data/lib/hydra-head/version.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +1 -1
- data/spec/controllers/downloads_controller_spec.rb +24 -12
- data/spec/lib/model_methods_spec.rb +3 -3
- data/spec/support/app/models/generic_content.rb +21 -0
- data/spec/support/lib/generators/test_app_generator.rb +5 -8
- data/spec/support/spec/fixtures/hydra_test_generic_content.foxml.xml +138 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/tasks/rspec.rake +1 -0
- metadata +24 -30
- data/app/helpers/facets_helper.rb +0 -4
- data/app/helpers/hydra/facets_helper_behavior.rb +0 -25
- data/lib/hydra-head/routes.rb +0 -46
- data/lib/hydra/controller.rb +0 -7
- data/lib/hydra/global_configurable.rb +0 -46
- data/lib/hydra/model_mixins/common_metadata.rb +0 -24
- data/lib/hydra/model_mixins/solr_document_extension.rb +0 -33
- data/lib/hydra/models.rb +0 -7
- data/spec/helpers/facets_helper_spec.rb +0 -26
- data/spec/lib/global_configurable_spec.rb +0 -98
- data/spec/lib/solr_document_extension_spec.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cf9361903147e9724ae37d21f4a890a84a031ff
|
4
|
+
data.tar.gz: afe9fc4f220f71e8148ab55ea68e920a31a19784
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 601bc533781382961b862b46f294b9c4dd13bb2a55ed4dc33fa4a5622d76323e914a2332df218bddecda4d662466c7bcb2c3e3ff2f14c39e5b7d2cf24f75e39b
|
7
|
+
data.tar.gz: e23f48c1de6975b59eda986938c83a06e7ee2e2b7a7a27bf35d2cca2c62e083e05c82bdbb22dea6baf4826d207c27df4598f8d6bf28fb8094998259f6f7faed6
|
@@ -2,24 +2,20 @@ module Hydra
|
|
2
2
|
module Controller
|
3
3
|
module DownloadBehavior
|
4
4
|
extend ActiveSupport::Concern
|
5
|
+
extend Deprecation
|
5
6
|
|
6
7
|
included do
|
7
8
|
before_filter :load_asset
|
8
9
|
before_filter :load_datastream
|
10
|
+
before_filter :authorize_download!
|
9
11
|
end
|
10
12
|
|
11
13
|
# Responds to http requests to show the datastream
|
12
14
|
def show
|
13
|
-
if
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
# we can now examine asset and determine if we should send_content, or some other action.
|
18
|
-
send_content (asset)
|
19
|
-
end
|
20
|
-
else
|
21
|
-
logger.info "Can not read #{params[asset_param_key]}"
|
22
|
-
raise Hydra::AccessDenied.new("You do not have sufficient access privileges to read this document, which has been marked private.", :read, params[asset_param_key])
|
15
|
+
if datastream.new?
|
16
|
+
render_404
|
17
|
+
else
|
18
|
+
send_content
|
23
19
|
end
|
24
20
|
end
|
25
21
|
|
@@ -46,6 +42,15 @@ module Hydra
|
|
46
42
|
@ds = datastream_to_show
|
47
43
|
end
|
48
44
|
|
45
|
+
# Customize the :download ability in your Ability class, or override this method
|
46
|
+
def authorize_download!
|
47
|
+
if self.respond_to?(:can_download?)
|
48
|
+
Deprecation.warn(DownloadBehavior, "The `can_download?' method is deprecated and will not be supported in hydra-head 8.0. Implement special authorization behavior by customizing the :download permission on ActiveFedora::Datastream in your Ability class.", caller)
|
49
|
+
current_ability.send(can_download? ? :can : :cannot, :download, ActiveFedora::Datastream, dsid: datastream.dsid, pid: datastream.pid)
|
50
|
+
end
|
51
|
+
authorize! :download, datastream
|
52
|
+
end
|
53
|
+
|
49
54
|
def asset
|
50
55
|
@asset
|
51
56
|
end
|
@@ -54,14 +59,6 @@ module Hydra
|
|
54
59
|
@ds
|
55
60
|
end
|
56
61
|
|
57
|
-
# Override this method to enforce access controls. By default it allows
|
58
|
-
# any datastream on an object the current user has read access to.
|
59
|
-
# @return [Boolean] can the curent user view this object/datastream
|
60
|
-
def can_download?
|
61
|
-
can? :read, datastream.pid
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
62
|
# Override this method to change which datastream is shown.
|
66
63
|
# Loads the datastream specified by the HTTP parameter `:datastream_id`.
|
67
64
|
# If this object does not have a datastream by that name, return the default datastream
|
@@ -75,7 +72,9 @@ module Hydra
|
|
75
72
|
end
|
76
73
|
|
77
74
|
# Handle the HTTP show request
|
78
|
-
def send_content(
|
75
|
+
def send_content(asset_ = nil)
|
76
|
+
Deprecation.warn(DownloadBehavior, "The `asset' parameter of the `send_content' method is deprecated and will be removed from Hydra::Controller::DownloadBehavior in hydra-head 8.0", caller) if asset_
|
77
|
+
|
79
78
|
response.headers['Accept-Ranges'] = 'bytes'
|
80
79
|
|
81
80
|
if request.head?
|
File without changes
|
File without changes
|
File without changes
|
data/hydra-core.gemspec
CHANGED
@@ -19,9 +19,10 @@ Gem::Specification.new do |gem|
|
|
19
19
|
|
20
20
|
gem.required_ruby_version = '>= 1.9.3'
|
21
21
|
|
22
|
+
|
22
23
|
gem.add_dependency "rails", '>= 3.2.3', '< 5'
|
23
|
-
gem.add_dependency "blacklight", '~> 4.
|
24
|
-
gem.add_dependency "active-fedora"
|
24
|
+
gem.add_dependency "blacklight", '~> 4.0'
|
25
|
+
gem.add_dependency "active-fedora"
|
25
26
|
gem.add_dependency 'block_helpers'
|
26
27
|
gem.add_dependency 'deprecation', ">= 0.0.5"
|
27
28
|
gem.add_dependency 'hydra-access-controls', version
|
@@ -48,8 +48,10 @@ class HeadGenerator < Rails::Generators::Base
|
|
48
48
|
# Initializers
|
49
49
|
file_path = "config/initializers/hydra_config.rb"
|
50
50
|
copy_file "config/initializers/hydra_config.rb", file_path
|
51
|
-
|
52
|
-
|
51
|
+
unless model_name == 'user'
|
52
|
+
insert_into_file file_path, :after => 'Hydra.configure do |config|' do
|
53
|
+
"\n config.user_model = '#{model_name.classify}'"
|
54
|
+
end
|
53
55
|
end
|
54
56
|
|
55
57
|
copy_file "config/initializers/action_dispatch_http_upload_monkey_patch.rb", "config/initializers/action_dispatch_http_upload_monkey_patch.rb"
|
@@ -79,14 +81,5 @@ class HeadGenerator < Rails::Generators::Base
|
|
79
81
|
puts " \e[31mFailure\e[0m Hydra requires a user object in order to apply access controls. This generators assumes that the model is defined in the file #{file_path}, which does not exist. If you used a different name, please re-run the generator and provide that name as an argument. Such as \b rails -g hydra:head client"
|
80
82
|
end
|
81
83
|
end
|
82
|
-
|
83
|
-
# Inject call to HydraHead.add_routes in config/routes.rb
|
84
|
-
def inject_hydra_routes
|
85
|
-
insert_into_file "config/routes.rb", :after => 'Blacklight.add_routes(self)' do
|
86
|
-
"\n # Add Hydra routes. For options, see API docs for HydraHead.routes"
|
87
|
-
"\n HydraHead.add_routes(self)"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
84
|
end # HeadGenerator
|
92
85
|
end # Hydra
|
@@ -1,28 +1,21 @@
|
|
1
|
-
# The following lines determine which user attributes your hydrangea app will use
|
2
|
-
# This configuration allows you to use the out of the box ActiveRecord associations between users and user_attributes
|
3
|
-
# It also allows you to specify your own user attributes
|
4
|
-
# The easiest way to override these methods would be to create your own module to include in User
|
5
|
-
# For example you could create a module for your local LDAP instance called MyLocalLDAPUserAttributes:
|
6
|
-
# User.send(:include, MyLocalLDAPAttributes)
|
7
|
-
# As long as your module includes methods for full_name, affiliation, and photo the personalization_helper should function correctly
|
8
|
-
#
|
9
|
-
|
10
1
|
# windows doesn't properly require hydra-head (from the gemfile), so we need to require it explicitly here:
|
11
2
|
require 'hydra/head' unless defined? Hydra
|
12
3
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
4
|
+
Hydra.configure do |config|
|
5
|
+
# This specifies the solr field names of permissions-related fields.
|
6
|
+
# You only need to change these values if you've indexed permissions by some means other than the Hydra's built-in tooling.
|
7
|
+
# If you change these, you must also update the permissions request handler in your solrconfig.xml to return those values
|
8
|
+
#
|
9
|
+
# config.permissions.discover.group = ActiveFedora::SolrService.solr_name("discover_access_group", :symbol)
|
10
|
+
# config.permissions.discover.individual = ActiveFedora::SolrService.solr_name("discover_access_person", :symbol)
|
11
|
+
# config.permissions.read.group = ActiveFedora::SolrService.solr_name("read_access_group", :symbol)
|
12
|
+
# config.permissions.read.individual = ActiveFedora::SolrService.solr_name("read_access_person", :symbol)
|
13
|
+
# config.permissions.edit.group = ActiveFedora::SolrService.solr_name("edit_access_group", :symbol)
|
14
|
+
# config.permissions.edit.individual = ActiveFedora::SolrService.solr_name("edit_access_person", :symbol)
|
15
|
+
#
|
16
|
+
# config.permissions.embargo_release_date = ActiveFedora::SolrService.solr_name("embargo_release_date", Solrizer::Descriptor.new(:date, :stored, :indexed))
|
17
|
+
# }
|
18
|
+
#
|
19
|
+
# specify the user model
|
20
|
+
# config.user_model = '#{model_name.classify}'
|
28
21
|
end
|
data/lib/hydra-core.rb
CHANGED
@@ -1,41 +1,11 @@
|
|
1
1
|
require 'hydra-access-controls'
|
2
|
-
|
3
|
-
module Hydra
|
4
|
-
extend ActiveSupport::Autoload
|
5
|
-
autoload :GlobalConfigurable
|
6
|
-
extend GlobalConfigurable
|
7
|
-
autoload :Controller
|
8
|
-
autoload :ModelMethods
|
9
|
-
autoload :RepositoryController
|
10
|
-
autoload :Solr
|
11
|
-
module ModelMixins
|
12
|
-
# ModelMixins already loaded by hydra-access-controls
|
13
|
-
autoload :SolrDocumentExtension
|
14
|
-
end
|
15
|
-
autoload :Models
|
16
|
-
end
|
2
|
+
require 'deprecation'
|
17
3
|
|
18
4
|
module HydraHead
|
5
|
+
extend Deprecation
|
19
6
|
require 'hydra-head/engine' if defined?(Rails)
|
20
|
-
require 'hydra-head/routes'
|
21
|
-
# If you put this in your application's routes.rb, it will add the Hydra Head routes to the app.
|
22
|
-
# The hydra:head generator puts this in routes.rb for you by default.
|
23
|
-
# See {HydraHead::Routes} for information about how to modify which routes are generated.
|
24
|
-
# @example
|
25
|
-
# # in config/routes.rb
|
26
|
-
# MyAppName::Application.routes.draw do
|
27
|
-
# Blacklight.add_routes(self)
|
28
|
-
# HydraHead.add_routes(self)
|
29
|
-
# end
|
30
7
|
def self.add_routes(router, options = {})
|
31
|
-
HydraHead
|
8
|
+
Deprecation.warn HydraHead, "add_routes has been removed." # remove this warning in hydra-head 8
|
32
9
|
end
|
33
10
|
end
|
34
11
|
|
35
|
-
ActiveSupport.on_load(:after_initialize) do
|
36
|
-
begin
|
37
|
-
SolrDocument.use_extension Hydra::ModelMixins::SolrDocumentExtension
|
38
|
-
rescue NameError
|
39
|
-
logger.warn "Couldn't find SolrDocument"
|
40
|
-
end
|
41
|
-
end
|
data/lib/hydra-head/engine.rb
CHANGED
data/lib/hydra-head/version.rb
CHANGED
@@ -56,7 +56,7 @@ describe CatalogController do
|
|
56
56
|
before(:all) do
|
57
57
|
fq = "read_access_group_ssim:public OR edit_access_group_ssim:public OR discover_access_group_ssim:public"
|
58
58
|
solr_opts = {:fq=>fq}
|
59
|
-
response =
|
59
|
+
response = Blacklight.solr.get('select', :params=> solr_opts)
|
60
60
|
@public_only_results = Blacklight::SolrResponse.new(response, solr_opts)
|
61
61
|
end
|
62
62
|
|
@@ -102,7 +102,7 @@ describe DownloadsController do
|
|
102
102
|
stub_ds.stub(:pid).and_return('changeme:test')
|
103
103
|
stub_file = double('stub object', datastreams: {'webm' => stub_ds}, pid:'changeme:test', label: "MyVideo.webm")
|
104
104
|
ActiveFedora::Base.should_receive(:load_instance_from_solr).with('changeme:test').and_return(stub_file)
|
105
|
-
controller.stub(:
|
105
|
+
controller.stub(:authorize!).with(:download, stub_ds).and_return(true)
|
106
106
|
controller.stub(:log_download)
|
107
107
|
end
|
108
108
|
it "head request" do
|
@@ -145,17 +145,6 @@ describe DownloadsController do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
-
describe "when not logged in as reader" do
|
149
|
-
describe "show" do
|
150
|
-
before do
|
151
|
-
sign_in User.new.tap {|u| u.email = 'email2@example.com'; u.password = 'password'; u.save}
|
152
|
-
end
|
153
|
-
it "should deny access" do
|
154
|
-
lambda { get "show", :id =>@obj.pid }.should raise_error Hydra::AccessDenied
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
148
|
describe "overriding the default asset param key" do
|
160
149
|
before do
|
161
150
|
Rails.application.routes.draw do
|
@@ -172,5 +161,28 @@ describe DownloadsController do
|
|
172
161
|
end
|
173
162
|
end
|
174
163
|
|
164
|
+
describe "overriding the can_download? method" do
|
165
|
+
before { sign_in @user }
|
166
|
+
context "current_ability.can? returns true / can_download? returns false" do
|
167
|
+
it "should authorize according to can_download?" do
|
168
|
+
controller.current_ability.can?(:download, @obj.datastreams['buzz']).should be_true
|
169
|
+
controller.stub(:can_download?).and_return(false)
|
170
|
+
expect { get :show, id: @obj, datastream_id: 'buzz' }.to raise_error(CanCan::AccessDenied)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
context "current_ability.can? returns false / can_download? returns true" do
|
174
|
+
before do
|
175
|
+
@obj.rightsMetadata.clear_permissions!
|
176
|
+
@obj.save
|
177
|
+
end
|
178
|
+
it "should authorize according to can_download?" do
|
179
|
+
controller.current_ability.can?(:download, @obj.datastreams['buzz']).should be_false
|
180
|
+
controller.stub(:can_download?).and_return(true)
|
181
|
+
get :show, id: @obj, datastream_id: 'buzz'
|
182
|
+
response.should be_successful
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
175
187
|
end
|
176
188
|
end
|
@@ -6,7 +6,7 @@ describe Hydra::ModelMethods do
|
|
6
6
|
class TestModel < ActiveFedora::Base
|
7
7
|
include Hydra::AccessControls::Permissions
|
8
8
|
include Hydra::ModelMethods
|
9
|
-
has_metadata
|
9
|
+
has_metadata "properties", type: Hydra::Datastream::Properties
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -15,12 +15,12 @@ describe Hydra::ModelMethods do
|
|
15
15
|
describe "apply_depositor_metadata" do
|
16
16
|
it "should add edit access" do
|
17
17
|
subject.apply_depositor_metadata('naomi')
|
18
|
-
subject.rightsMetadata.
|
18
|
+
subject.rightsMetadata.users.should == {'naomi' => 'edit'}
|
19
19
|
end
|
20
20
|
it "should not overwrite people with edit access" do
|
21
21
|
subject.rightsMetadata.permissions({:person=>"jessie"}, 'edit')
|
22
22
|
subject.apply_depositor_metadata('naomi')
|
23
|
-
subject.rightsMetadata.
|
23
|
+
subject.rightsMetadata.users.should == {'naomi' => 'edit', 'jessie' =>'edit'}
|
24
24
|
end
|
25
25
|
it "should set depositor" do
|
26
26
|
subject.apply_depositor_metadata('chris')
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# GenericContent: EXAMPLE Model that conforms to the Hydra genericContent and genericMetadata cModels
|
2
|
+
require 'deprecation'
|
3
|
+
class GenericContent < ActiveFedora::Base
|
4
|
+
extend Deprecation
|
5
|
+
|
6
|
+
# Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
|
7
|
+
# FIXME: should this have "include Hydra::ModelMixins::CommonMetadata" instead?
|
8
|
+
has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
9
|
+
|
10
|
+
# A place to put extra metadata values, e.g. the user id of the object depositor (for permissions)
|
11
|
+
has_metadata :name => "properties", :type => Hydra::Datastream::Properties
|
12
|
+
|
13
|
+
# adds helpful methods for basic hydra objects.
|
14
|
+
# FIXME: redundate with GenericContent include above??
|
15
|
+
include Hydra::ModelMethods
|
16
|
+
|
17
|
+
def initialize( attrs={} )
|
18
|
+
Deprecation.warn(GenericContent, "GenericContent is deprecated and will be removed in hydra-head 5.x")
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
@@ -3,19 +3,16 @@ require 'rails/generators'
|
|
3
3
|
class TestAppGenerator < Rails::Generators::Base
|
4
4
|
source_root File.expand_path("../../../../support", __FILE__)
|
5
5
|
|
6
|
-
# Inject call to Hydra::BatchEdit.add_routes in config/routes.rb
|
7
|
-
def inject_routes
|
8
|
-
insert_into_file "config/routes.rb", :after => '.draw do' do
|
9
|
-
"\n # Add HydraHead routes."
|
10
|
-
"\n HydraHead.add_routes(self)"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
6
|
def copy_test_fixtures
|
7
|
+
copy_file "app/models/generic_content.rb"
|
8
|
+
|
15
9
|
# Download controller
|
16
10
|
copy_file "app/controllers/downloads_controller.rb"
|
17
11
|
|
18
12
|
copy_file "spec/fixtures/hydrangea_fixture_mods_article1.foxml.xml"
|
13
|
+
|
14
|
+
# For testing Hydra::SubmissionWorkflow
|
15
|
+
copy_file "spec/fixtures/hydra_test_generic_content.foxml.xml"
|
19
16
|
end
|
20
17
|
|
21
18
|
def copy_rspec_rake_task
|
@@ -0,0 +1,138 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<foxml:digitalObject VERSION="1.1" PID="hydra:test_generic_content" xmlns:foxml="info:fedora/fedora-system:def/foxml#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
|
3
|
+
<foxml:objectProperties>
|
4
|
+
<foxml:property NAME="info:fedora/fedora-system:def/model#state" VALUE="Active"/>
|
5
|
+
<foxml:property NAME="info:fedora/fedora-system:def/model#label" VALUE=""/>
|
6
|
+
<foxml:property NAME="info:fedora/fedora-system:def/model#ownerId" VALUE="fedoraAdmin"/>
|
7
|
+
<foxml:property NAME="info:fedora/fedora-system:def/model#createdDate" VALUE="2011-07-14T01:28:47.221Z"/>
|
8
|
+
<foxml:property NAME="info:fedora/fedora-system:def/view#lastModifiedDate" VALUE="2011-07-14T01:30:56.432Z"/>
|
9
|
+
</foxml:objectProperties>
|
10
|
+
<foxml:datastream ID="DC" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
|
11
|
+
<foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object" CREATED="2011-07-14T01:28:47.221Z" MIMETYPE="text/xml" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/" SIZE="341">
|
12
|
+
<foxml:xmlContent>
|
13
|
+
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
|
14
|
+
<dc:identifier>hydra:test_generic_content</dc:identifier>
|
15
|
+
<dc:description>A test object using the GenericContent (active)fedora model</dc:description>
|
16
|
+
</oai_dc:dc>
|
17
|
+
</foxml:xmlContent>
|
18
|
+
</foxml:datastreamVersion>
|
19
|
+
</foxml:datastream>
|
20
|
+
<foxml:datastream ID="descMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
|
21
|
+
<foxml:datastreamVersion ID="descMetadata.1" LABEL="" CREATED="2011-07-14T01:30:13.169Z" MIMETYPE="text/xml" SIZE="1552">
|
22
|
+
<foxml:xmlContent>
|
23
|
+
<mods xmlns="http://www.loc.gov/mods/v3" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.3" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd">
|
24
|
+
<titleInfo lang="">
|
25
|
+
<title>generic content</title>
|
26
|
+
</titleInfo>
|
27
|
+
<name type="personal">
|
28
|
+
<namePart type="given">Orlob</namePart>
|
29
|
+
<namePart type="family">Gryphon</namePart>
|
30
|
+
<affiliation>Fantasy</affiliation>
|
31
|
+
<role>
|
32
|
+
<roleTerm authority="marcrelator" type="text"/>
|
33
|
+
</role>
|
34
|
+
<description>Mythical Creatures</description>
|
35
|
+
</name>
|
36
|
+
<typeOfResource/>
|
37
|
+
<genre authority="marcgt"/>
|
38
|
+
<language>
|
39
|
+
<languageTerm authority="iso639-2b" type="code"/>
|
40
|
+
</language>
|
41
|
+
<physicalDescription>
|
42
|
+
<extent/>
|
43
|
+
</physicalDescription>
|
44
|
+
<abstract>A test object using the GenericContent (active)fedora model</abstract>
|
45
|
+
<subject>
|
46
|
+
<topic>flying creatures</topic>
|
47
|
+
</subject>
|
48
|
+
<relatedItem type="host">
|
49
|
+
<titleInfo>
|
50
|
+
<title/>
|
51
|
+
</titleInfo>
|
52
|
+
<identifier type="issn"/>
|
53
|
+
<originInfo>
|
54
|
+
<publisher/>
|
55
|
+
<dateIssued/>
|
56
|
+
</originInfo>
|
57
|
+
<part>
|
58
|
+
<detail type="volume">
|
59
|
+
<number/>
|
60
|
+
</detail>
|
61
|
+
<detail type="number">
|
62
|
+
<number/>
|
63
|
+
</detail>
|
64
|
+
<extent unit="pages">
|
65
|
+
<start/>
|
66
|
+
<end/>
|
67
|
+
</extent>
|
68
|
+
<date/>
|
69
|
+
</part>
|
70
|
+
</relatedItem>
|
71
|
+
<location>
|
72
|
+
<url/>
|
73
|
+
</location>
|
74
|
+
</mods>
|
75
|
+
</foxml:xmlContent>
|
76
|
+
</foxml:datastreamVersion>
|
77
|
+
</foxml:datastream>
|
78
|
+
<foxml:datastream ID="RELS-EXT" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
|
79
|
+
<foxml:datastreamVersion ID="RELS-EXT.0" LABEL="" CREATED="2011-07-14T01:28:49.031Z" MIMETYPE="text/xml" SIZE="277">
|
80
|
+
<foxml:xmlContent>
|
81
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
82
|
+
<rdf:Description rdf:about="info:fedora/hydra:test_generic_content">
|
83
|
+
<hasModel xmlns="info:fedora/fedora-system:def/model#" rdf:resource="info:fedora/afmodel:GenericContent"/>
|
84
|
+
</rdf:Description>
|
85
|
+
</rdf:RDF>
|
86
|
+
</foxml:xmlContent>
|
87
|
+
</foxml:datastreamVersion>
|
88
|
+
</foxml:datastream>
|
89
|
+
<foxml:datastream ID="rightsMetadata" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
|
90
|
+
<foxml:datastreamVersion ID="rightsMetadata.1" LABEL="" CREATED="2011-07-14T01:30:56.432Z" MIMETYPE="text/xml" SIZE="777">
|
91
|
+
<foxml:xmlContent>
|
92
|
+
<rightsMetadata xmlns="http://hydra-collab.stanford.edu/schemas/rightsMetadata/v1" version="0.1">
|
93
|
+
<copyright>
|
94
|
+
<human/>
|
95
|
+
<machine>
|
96
|
+
<uvalicense>no</uvalicense>
|
97
|
+
</machine>
|
98
|
+
</copyright>
|
99
|
+
<access type="discover">
|
100
|
+
<human/>
|
101
|
+
<machine/>
|
102
|
+
</access>
|
103
|
+
<access type="read">
|
104
|
+
<human/>
|
105
|
+
<machine>
|
106
|
+
<group>researcher</group>
|
107
|
+
<group>public</group>
|
108
|
+
<group>patron</group>
|
109
|
+
<group>donor</group>
|
110
|
+
</machine>
|
111
|
+
</access>
|
112
|
+
<access type="edit">
|
113
|
+
<human/>
|
114
|
+
<machine>
|
115
|
+
<person>archivist1</person>
|
116
|
+
<group>archivist</group>
|
117
|
+
<group>admin_policy_object_editor</group>
|
118
|
+
</machine>
|
119
|
+
</access>
|
120
|
+
<embargo>
|
121
|
+
<human/>
|
122
|
+
<machine/>
|
123
|
+
</embargo>
|
124
|
+
</rightsMetadata>
|
125
|
+
</foxml:xmlContent>
|
126
|
+
</foxml:datastreamVersion>
|
127
|
+
</foxml:datastream>
|
128
|
+
<foxml:datastream ID="properties" STATE="A" CONTROL_GROUP="X" VERSIONABLE="true">
|
129
|
+
<foxml:datastreamVersion ID="properties.0" LABEL="" CREATED="2011-07-14T01:28:49.367Z" MIMETYPE="text/xml" SIZE="99">
|
130
|
+
<foxml:xmlContent>
|
131
|
+
<fields>
|
132
|
+
<collection>generic_content</collection>
|
133
|
+
<depositor>archivist1</depositor>
|
134
|
+
</fields>
|
135
|
+
</foxml:xmlContent>
|
136
|
+
</foxml:datastreamVersion>
|
137
|
+
</foxml:datastream>
|
138
|
+
</foxml:digitalObject>
|
data/tasks/rspec.rake
CHANGED
@@ -26,6 +26,7 @@ task :generate do
|
|
26
26
|
puts "Updating gemfile"
|
27
27
|
`echo " gem 'hydra-access-controls', :path=>'../../../hydra-access-controls'" >> spec/internal/Gemfile`
|
28
28
|
`echo " gem 'hydra-core', :path=>'../../', :require=>'hydra-core'" >> spec/internal/Gemfile`
|
29
|
+
`echo " eval File.read('../test_app_templates/Gemfile.extra'), nil, '../test_app_templates/Gemfile.extra'" >> spec/internal/Gemfile`
|
29
30
|
`echo " gem 'factory_girl_rails'" >> spec/internal/Gemfile`
|
30
31
|
puts "Copying generator"
|
31
32
|
`cp -r spec/support/lib/generators spec/internal/lib`
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield,
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-01-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -37,28 +37,28 @@ dependencies:
|
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '4.
|
40
|
+
version: '4.0'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '4.
|
47
|
+
version: '4.0'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: active-fedora
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: block_helpers
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,14 +93,14 @@ dependencies:
|
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 7.0.0.pre1
|
97
97
|
type: :runtime
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 7.0.0.pre1
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: jettywrapper
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,13 +182,16 @@ extra_rdoc_files: []
|
|
182
182
|
files:
|
183
183
|
- .gitignore
|
184
184
|
- Rakefile
|
185
|
+
- app/controllers/concerns/hydra/controller.rb
|
185
186
|
- app/controllers/concerns/hydra/controller/controller_behavior.rb
|
186
187
|
- app/controllers/concerns/hydra/controller/download_behavior.rb
|
187
188
|
- app/controllers/concerns/hydra/controller/upload_behavior.rb
|
188
189
|
- app/helpers/blacklight_helper.rb
|
189
|
-
- app/helpers/facets_helper.rb
|
190
190
|
- app/helpers/hydra/blacklight_helper_behavior.rb
|
191
|
-
- app/
|
191
|
+
- app/models/concerns/hydra/model_methods.rb
|
192
|
+
- app/models/concerns/hydra/models.rb
|
193
|
+
- app/models/concerns/hydra/models/file_asset.rb
|
194
|
+
- app/models/concerns/hydra/solr.rb
|
192
195
|
- app/models/file_asset.rb
|
193
196
|
- app/models/hydra/datastream/properties.rb
|
194
197
|
- app/models/mods_asset.rb
|
@@ -212,16 +215,7 @@ files:
|
|
212
215
|
- lib/generators/hydra/templates/config/solr.yml
|
213
216
|
- lib/hydra-core.rb
|
214
217
|
- lib/hydra-head/engine.rb
|
215
|
-
- lib/hydra-head/routes.rb
|
216
218
|
- lib/hydra-head/version.rb
|
217
|
-
- lib/hydra/controller.rb
|
218
|
-
- lib/hydra/global_configurable.rb
|
219
|
-
- lib/hydra/model_methods.rb
|
220
|
-
- lib/hydra/model_mixins/common_metadata.rb
|
221
|
-
- lib/hydra/model_mixins/solr_document_extension.rb
|
222
|
-
- lib/hydra/models.rb
|
223
|
-
- lib/hydra/models/file_asset.rb
|
224
|
-
- lib/hydra/solr.rb
|
225
219
|
- lib/railties/active-fedora.rake
|
226
220
|
- lib/railties/hydra-fixtures.rake
|
227
221
|
- lib/railties/hydra_jetty.rake
|
@@ -231,12 +225,9 @@ files:
|
|
231
225
|
- spec/controllers/downloads_controller_spec.rb
|
232
226
|
- spec/factories.rb
|
233
227
|
- spec/helpers/blacklight_helper_spec.rb
|
234
|
-
- spec/helpers/facets_helper_spec.rb
|
235
228
|
- spec/helpers/upload_behavior_spec.rb
|
236
229
|
- spec/lib/catalog_spec.rb
|
237
|
-
- spec/lib/global_configurable_spec.rb
|
238
230
|
- spec/lib/model_methods_spec.rb
|
239
|
-
- spec/lib/solr_document_extension_spec.rb
|
240
231
|
- spec/models/file_asset_spec.rb
|
241
232
|
- spec/models/mods_asset_spec.rb
|
242
233
|
- spec/models/solr_document_spec.rb
|
@@ -245,6 +236,7 @@ files:
|
|
245
236
|
- spec/spec.opts
|
246
237
|
- spec/spec_helper.rb
|
247
238
|
- spec/support/app/controllers/downloads_controller.rb
|
239
|
+
- spec/support/app/models/generic_content.rb
|
248
240
|
- spec/support/app/models/sample.rb
|
249
241
|
- spec/support/app/models/solr_document.rb
|
250
242
|
- spec/support/db/migrate/20111101221803_create_searches.rb
|
@@ -252,7 +244,9 @@ files:
|
|
252
244
|
- spec/support/lib/tasks/rspec.rake
|
253
245
|
- spec/support/matchers/helper_matcher.rb
|
254
246
|
- spec/support/matchers/solr_matchers.rb
|
247
|
+
- spec/support/spec/fixtures/hydra_test_generic_content.foxml.xml
|
255
248
|
- spec/support/spec/fixtures/hydrangea_fixture_mods_article1.foxml.xml
|
249
|
+
- spec/test_app_templates/Gemfile.extra
|
256
250
|
- spec/unit/hydra-head-engine_spec.rb
|
257
251
|
- spec/unit/hydra-head_spec.rb
|
258
252
|
- tasks/hydra-head-fixtures.rake
|
@@ -273,12 +267,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
273
267
|
version: 1.9.3
|
274
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
269
|
requirements:
|
276
|
-
- - '
|
270
|
+
- - '>'
|
277
271
|
- !ruby/object:Gem::Version
|
278
|
-
version:
|
272
|
+
version: 1.3.1
|
279
273
|
requirements: []
|
280
274
|
rubyforge_project:
|
281
|
-
rubygems_version: 2.
|
275
|
+
rubygems_version: 2.1.11
|
282
276
|
signing_key:
|
283
277
|
specification_version: 4
|
284
278
|
summary: Hydra-Head Rails Engine (requires Rails3)
|
@@ -289,12 +283,9 @@ test_files:
|
|
289
283
|
- spec/controllers/downloads_controller_spec.rb
|
290
284
|
- spec/factories.rb
|
291
285
|
- spec/helpers/blacklight_helper_spec.rb
|
292
|
-
- spec/helpers/facets_helper_spec.rb
|
293
286
|
- spec/helpers/upload_behavior_spec.rb
|
294
287
|
- spec/lib/catalog_spec.rb
|
295
|
-
- spec/lib/global_configurable_spec.rb
|
296
288
|
- spec/lib/model_methods_spec.rb
|
297
|
-
- spec/lib/solr_document_extension_spec.rb
|
298
289
|
- spec/models/file_asset_spec.rb
|
299
290
|
- spec/models/mods_asset_spec.rb
|
300
291
|
- spec/models/solr_document_spec.rb
|
@@ -303,6 +294,7 @@ test_files:
|
|
303
294
|
- spec/spec.opts
|
304
295
|
- spec/spec_helper.rb
|
305
296
|
- spec/support/app/controllers/downloads_controller.rb
|
297
|
+
- spec/support/app/models/generic_content.rb
|
306
298
|
- spec/support/app/models/sample.rb
|
307
299
|
- spec/support/app/models/solr_document.rb
|
308
300
|
- spec/support/db/migrate/20111101221803_create_searches.rb
|
@@ -310,7 +302,9 @@ test_files:
|
|
310
302
|
- spec/support/lib/tasks/rspec.rake
|
311
303
|
- spec/support/matchers/helper_matcher.rb
|
312
304
|
- spec/support/matchers/solr_matchers.rb
|
305
|
+
- spec/support/spec/fixtures/hydra_test_generic_content.foxml.xml
|
313
306
|
- spec/support/spec/fixtures/hydrangea_fixture_mods_article1.foxml.xml
|
307
|
+
- spec/test_app_templates/Gemfile.extra
|
314
308
|
- spec/unit/hydra-head-engine_spec.rb
|
315
309
|
- spec/unit/hydra-head_spec.rb
|
316
310
|
has_rdoc:
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Hydra
|
2
|
-
module FacetsHelperBehavior
|
3
|
-
include Blacklight::FacetsHelperBehavior
|
4
|
-
|
5
|
-
# Removing the [remove] link and label class from the default selected facet display
|
6
|
-
def render_selected_facet_value(facet_solr_field, item)
|
7
|
-
content_tag(:span, render_facet_value(facet_solr_field, item, :suppress_link => true), :class => "selected")
|
8
|
-
end
|
9
|
-
|
10
|
-
# Override to remove the label class (easier integration with bootstrap)
|
11
|
-
# and handles arrays
|
12
|
-
def render_facet_value(facet_solr_field, item, options ={})
|
13
|
-
if item.is_a? Array
|
14
|
-
render_array_facet_value(facet_solr_field, item, options)
|
15
|
-
end
|
16
|
-
|
17
|
-
(link_to_unless(options[:suppress_link], facet_display_value(facet_solr_field, item), add_facet_params_and_redirect(facet_solr_field, item.value), :class=>"facet_select") + " " + render_facet_count(item.hits)).html_safe
|
18
|
-
end
|
19
|
-
|
20
|
-
def render_array_facet_value(facet_solr_field, item, options)
|
21
|
-
(link_to_unless(options[:suppress_link], facet_display_value(facet_solr_field, item[0]), add_facet_params_and_redirect(facet_solr_field, item[0]), :class=>"facet_select") + " (" + format_num(item[1]) + ")").html_safe
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
data/lib/hydra-head/routes.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module HydraHead
|
3
|
-
class Routes
|
4
|
-
|
5
|
-
def initialize(router, options)
|
6
|
-
@router = router
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
def draw
|
11
|
-
route_sets.each do |r|
|
12
|
-
self.send(r)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
protected
|
17
|
-
|
18
|
-
def add_routes &blk
|
19
|
-
@router.instance_exec(@options, &blk)
|
20
|
-
end
|
21
|
-
|
22
|
-
def route_sets
|
23
|
-
(@options[:only] || default_route_sets) - (@options[:except] || [])
|
24
|
-
end
|
25
|
-
|
26
|
-
def default_route_sets
|
27
|
-
[:assets_with_all_nested_routes]
|
28
|
-
end
|
29
|
-
|
30
|
-
module RouteSets
|
31
|
-
def assets_with_all_nested_routes
|
32
|
-
add_routes do |options|
|
33
|
-
namespace :hydra do
|
34
|
-
resources :file_assets
|
35
|
-
resources :assets do
|
36
|
-
resources :file_assets
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
include RouteSets
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|
data/lib/hydra/controller.rb
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
module Hydra::Controller
|
2
|
-
autoload :AssetsControllerBehavior, 'hydra/controller/assets_controller_behavior'
|
3
|
-
autoload :ControllerBehavior, 'hydra/controller/controller_behavior'
|
4
|
-
autoload :UploadBehavior, 'hydra/controller/upload_behavior'
|
5
|
-
autoload :DownloadBehavior, 'hydra/controller/download_behavior'
|
6
|
-
autoload :FileAssetsBehavior, 'hydra/controller/file_assets_behavior'
|
7
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module Hydra::GlobalConfigurable
|
2
|
-
|
3
|
-
# The config environment name used by the #config method
|
4
|
-
#
|
5
|
-
# Example:
|
6
|
-
# class MyThing
|
7
|
-
# extend Hydra::GlobalConfigurable
|
8
|
-
# end
|
9
|
-
#
|
10
|
-
# Now MyThing.config will be the result of:
|
11
|
-
# MyThing.configure(:production) {|config|}
|
12
|
-
#
|
13
|
-
# You set shared attributes by leaving the first argument blank or passing the :shared value:
|
14
|
-
# MyThing.configure {|config|}
|
15
|
-
# or
|
16
|
-
# MyThing.configure(:shared) {|config|}
|
17
|
-
|
18
|
-
# sets the @configs variable to a new Hash with empty Hash for :shared key and @config to nil
|
19
|
-
def reset_configs!
|
20
|
-
@config = nil
|
21
|
-
@configs = {:shared=>{}}
|
22
|
-
end
|
23
|
-
|
24
|
-
# A hash of all environment configs
|
25
|
-
# The key is the environment name, the value a Hash
|
26
|
-
def configs
|
27
|
-
@configs ? @configs : (reset_configs! and @configs)
|
28
|
-
end
|
29
|
-
|
30
|
-
# The main config accessor. It merges the current configs[::Rails.env]
|
31
|
-
# with configs[:shared] and lazy-loads @config to the result.
|
32
|
-
def config
|
33
|
-
@config ||= configs[:shared].merge(configs[::Rails.env] ||= {})
|
34
|
-
end
|
35
|
-
alias_method :blacklight_config, :config
|
36
|
-
|
37
|
-
# Accepts a value for the environment to configure and a block
|
38
|
-
# A hash is yielded to the block
|
39
|
-
# If the "env" != :shared,
|
40
|
-
# the hash is created by deep cloning the :shared environment config.
|
41
|
-
# This makes it possible to create defaults in the :shared config
|
42
|
-
def configure(env = :shared, &blk)
|
43
|
-
configs[env] = {}
|
44
|
-
yield configs[env]
|
45
|
-
end
|
46
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# Include this into models that you want to conform to the Hydra commonMetadata cModel
|
2
|
-
# See https://wiki.duraspace.org/display/hydra/Hydra+objects%2C+content+models+%28cModels%29+and+disseminators#Hydraobjects%2Ccontentmodels%28cModels%29anddisseminators-models
|
3
|
-
#
|
4
|
-
# Explicitly declares:
|
5
|
-
# rightsMetadata datastream using Hydra::RightsMetadata Terminology
|
6
|
-
#
|
7
|
-
# Does not explicitly declare:
|
8
|
-
# descMetadata datastream -- should be declared by a more specific mixin like Hydra::ModelMixins::ModsObject
|
9
|
-
# DC datastream -- Handled by ActiveFedora::Base
|
10
|
-
# RELS-EXT datastream -- Handled by ActiveFedora::Base & ActiveFedora::RelsExtDatastream
|
11
|
-
# optional datastreams (contentMetadata, technicalMetadata, provenanceMetadata, sourceMetadata)
|
12
|
-
#
|
13
|
-
module Hydra::ModelMixins
|
14
|
-
module CommonMetadata
|
15
|
-
extend Deprecation
|
16
|
-
extend ActiveSupport::Concern
|
17
|
-
|
18
|
-
included do
|
19
|
-
# Uses the Hydra Rights Metadata Schema for tracking access permissions & copyright
|
20
|
-
has_metadata "rightsMetadata", type: Hydra::Datastream::RightsMetadata
|
21
|
-
Deprecation.warn(CommonMetadata, "Hydra::ModelMixins::CommonMetadata is deprecated and will be removed in hydra-head 7. Use Hydra::AccessControls::Permissions instead.", caller(1))
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Hydra::ModelMixins
|
2
|
-
module SolrDocumentExtension
|
3
|
-
extend Deprecation
|
4
|
-
self.deprecation_horizon = 'hydra-head 7.0.0'
|
5
|
-
|
6
|
-
def document_type display_type = CatalogController.blacklight_config.show.display_type
|
7
|
-
type = self.fetch(:medium_t, nil)
|
8
|
-
|
9
|
-
type ||= self.fetch(display_type, nil) if display_type
|
10
|
-
|
11
|
-
type.first.to_s.gsub("info:fedora/afmodel:","").gsub("Hydrangea","").gsub(/^Generic/,"")
|
12
|
-
end
|
13
|
-
deprecation_deprecate :document_type
|
14
|
-
|
15
|
-
def get_person_from_role(role, opts={})
|
16
|
-
i = 0
|
17
|
-
while i < 10
|
18
|
-
persons_roles = self["person_#{i}_role_t"].map{|w|w.strip.downcase} unless self["person_#{i}_role_t"].nil?
|
19
|
-
if persons_roles and persons_roles.include?(role.downcase)
|
20
|
-
return {:first=>self["person_#{i}_first_name_t"], :last=>self["person_#{i}_last_name_t"]}
|
21
|
-
end
|
22
|
-
i += 1
|
23
|
-
end
|
24
|
-
end
|
25
|
-
deprecation_deprecate :get_person_from_role
|
26
|
-
|
27
|
-
def get_file_asset_count()
|
28
|
-
ActiveFedora::Base.count(:conditions=>"is_part_of_t:#{ActiveFedora::Base.quote_for_solr(id)}")
|
29
|
-
end
|
30
|
-
deprecation_deprecate :get_file_asset_count
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
data/lib/hydra/models.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FacetsHelper do
|
4
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
helper.stub(:blacklight_config).and_return blacklight_config
|
8
|
-
end
|
9
|
-
|
10
|
-
|
11
|
-
describe "render_selected_facet_value" do
|
12
|
-
it "should be html_safe and not have the remove link" do
|
13
|
-
item = double("item", :value=>'two', :hits=>9)
|
14
|
-
ret_val = helper.render_selected_facet_value("one", item)
|
15
|
-
ret_val.should == "<span class=\"selected\">two <span class=\"count\">9</span></span>"
|
16
|
-
ret_val.should be_html_safe
|
17
|
-
end
|
18
|
-
it "should use facet_display_value" do
|
19
|
-
item = double("item", :value=>'two', :hits=>9)
|
20
|
-
helper.stub(:facet_display_value).and_return('four')
|
21
|
-
ret_val = helper.render_selected_facet_value("one", item)
|
22
|
-
ret_val.should == "<span class=\"selected\">four <span class=\"count\">9</span></span>"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
-
|
4
|
-
describe Hydra::GlobalConfigurable do
|
5
|
-
|
6
|
-
class TestConfig
|
7
|
-
extend Hydra::GlobalConfigurable
|
8
|
-
end
|
9
|
-
|
10
|
-
before(:each) do
|
11
|
-
TestConfig.reset_configs!
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should respond to configure" do
|
15
|
-
TestConfig.respond_to? :configure
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "the default state" do
|
19
|
-
describe "config" do
|
20
|
-
it "should be a Hash" do
|
21
|
-
TestConfig.config.should be_a Hash
|
22
|
-
end
|
23
|
-
end
|
24
|
-
describe "configs[:shared]" do
|
25
|
-
it "should be a Hash" do
|
26
|
-
TestConfig.configs[:shared].should be_a Hash
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "configs[:shared]" do
|
32
|
-
it "should not have the values of its members altered by other environments" do
|
33
|
-
TestConfig.configure do |config|
|
34
|
-
config[:key] = ":shared value"
|
35
|
-
end
|
36
|
-
TestConfig.configure(::Rails.env) do |config|
|
37
|
-
config[:key] = ":test value"
|
38
|
-
end
|
39
|
-
TestConfig.config[:key].should == ":test value"
|
40
|
-
TestConfig.configs[:shared][:key].should == ":shared value"
|
41
|
-
TestConfig.configs[::Rails.env][:key].should == ":test value"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe "the #configure method behavior" do
|
46
|
-
it "requires a block" do
|
47
|
-
lambda{TestConfig.configure}.should raise_error(LocalJumpError)
|
48
|
-
end
|
49
|
-
it "yields a hash" do
|
50
|
-
TestConfig.configure{|config| config.should be_a(Hash) }
|
51
|
-
end
|
52
|
-
it "should clear the configs if reset_configs! is called" do
|
53
|
-
TestConfig.configure do |config|
|
54
|
-
config[:asdf] = 'asdf'
|
55
|
-
end
|
56
|
-
TestConfig.configs[:shared][:asdf].should == 'asdf'
|
57
|
-
TestConfig.reset_configs!
|
58
|
-
TestConfig.configs[:shared][:asdf].should == nil
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should merge settings from the :shared environment" do
|
62
|
-
TestConfig.configure do |config|
|
63
|
-
config[:app_id] = 'Blacklight'
|
64
|
-
config[:mode] = :shared!
|
65
|
-
end
|
66
|
-
TestConfig.configure(::Rails.env) do |config|
|
67
|
-
config[:mode] = ::Rails.env
|
68
|
-
end
|
69
|
-
TestConfig.config[:app_id].should == 'Blacklight'
|
70
|
-
TestConfig.config[:mode].should_not == :shared!
|
71
|
-
TestConfig.config[:mode].should == ::Rails.env
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe "config" do
|
76
|
-
it "should return an empty Hash if nothing was configured" do
|
77
|
-
TestConfig.config.should == {}
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should return only what is in configs[:shared] if no other environment was configured" do
|
81
|
-
TestConfig.configure(:shared) do |config|
|
82
|
-
config[:foo] = 'bar'
|
83
|
-
config[:baz] = 'dang'
|
84
|
-
end
|
85
|
-
TestConfig.config.should == {:foo => 'bar', :baz => 'dang'}
|
86
|
-
TestConfig.config.should == TestConfig.configs[:shared]
|
87
|
-
end
|
88
|
-
|
89
|
-
it "should return a merge of configs[:shared] and configs[RAILS_ENV]" do
|
90
|
-
TestConfig.configure(:shared) do |config|
|
91
|
-
config[:foo] = 'bar'
|
92
|
-
config[:baz] = 'dang'
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
|
98
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Hydra::ModelMixins::SolrDocumentExtension do
|
4
|
-
before do
|
5
|
-
@doc = SolrDocument.new(:id=>'changeme:99')
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should get_file_asset_count" do
|
9
|
-
Deprecation.stub(:warn).and_return(nil)
|
10
|
-
mock_result = {'response'=>{'numFound'=>0}}
|
11
|
-
ActiveFedora::SolrService.should_receive(:query).with("is_part_of_t:\"changeme\\:99\"", :rows=>0, :raw=>true).and_return(mock_result)
|
12
|
-
@doc.get_file_asset_count.should == 0
|
13
|
-
end
|
14
|
-
end
|