fcrepo_admin 0.3.5 → 0.4.0
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.
- checksums.yaml +7 -0
- data/HISTORY.rdoc +6 -0
- data/README.rdoc +42 -20
- data/app/controllers/fcrepo_admin/associations_controller.rb +7 -0
- data/app/controllers/fcrepo_admin/objects_controller.rb +2 -1
- data/app/helpers/fcrepo_admin/associations_helper.rb +5 -0
- data/app/views/fcrepo_admin/associations/_associations.html.erb +26 -0
- data/app/views/fcrepo_admin/associations/index.html.erb +1 -0
- data/app/views/fcrepo_admin/associations/show.html.erb +11 -0
- data/app/views/fcrepo_admin/catalog/_document.html.erb +6 -0
- data/app/views/fcrepo_admin/datastreams/_content.html.erb +4 -3
- data/app/views/fcrepo_admin/datastreams/_context_nav.html.erb +9 -0
- data/app/views/fcrepo_admin/datastreams/_context_nav_items.html.erb +21 -0
- data/app/views/fcrepo_admin/datastreams/{_datastreams.html → _datastreams.html.erb} +16 -3
- data/app/views/fcrepo_admin/datastreams/_profile.html.erb +9 -10
- data/app/views/fcrepo_admin/datastreams/content.html.erb +1 -0
- data/app/views/fcrepo_admin/datastreams/index.html.erb +1 -4
- data/app/views/fcrepo_admin/datastreams/show.html.erb +1 -14
- data/app/views/fcrepo_admin/objects/_context_nav.html.erb +9 -0
- data/app/views/fcrepo_admin/objects/_context_nav_datastreams.html.erb +13 -0
- data/app/views/fcrepo_admin/objects/_context_nav_items.html.erb +19 -0
- data/app/views/fcrepo_admin/objects/_direct_permissions.html.erb +8 -0
- data/app/views/fcrepo_admin/objects/_inherited_permissions.html.erb +23 -0
- data/app/views/fcrepo_admin/objects/_permissions_list.html.erb +18 -0
- data/app/views/fcrepo_admin/objects/{_permissions_row.html.erb → _permissions_list_item.html.erb} +0 -0
- data/app/views/fcrepo_admin/objects/_properties.html.erb +6 -5
- data/app/views/fcrepo_admin/objects/permissions.html.erb +5 -0
- data/app/views/fcrepo_admin/objects/show.html.erb +3 -46
- data/app/views/layouts/fcrepo_admin/datastreams.html.erb +2 -2
- data/app/views/layouts/fcrepo_admin/objects.html.erb +1 -1
- data/config/locales/fcrepo_admin.en.yml +24 -4
- data/config/routes.rb +7 -2
- data/lib/fcrepo_admin.rb +4 -1
- data/lib/fcrepo_admin/ability.rb +18 -0
- data/lib/fcrepo_admin/controller/associations_controller_behavior.rb +49 -0
- data/lib/fcrepo_admin/controller/catalog_controller_behavior.rb +9 -0
- data/lib/fcrepo_admin/controller/controller_behavior.rb +49 -0
- data/lib/fcrepo_admin/controller/datastreams_controller_behavior.rb +21 -28
- data/lib/fcrepo_admin/controller/objects_controller_behavior.rb +7 -32
- data/lib/fcrepo_admin/helpers/associations_helper_behavior.rb +23 -0
- data/lib/fcrepo_admin/helpers/datastreams_helper_behavior.rb +7 -10
- data/lib/fcrepo_admin/helpers/fcrepo_admin_helper_behavior.rb +5 -10
- data/lib/fcrepo_admin/helpers/objects_helper_behavior.rb +0 -36
- data/lib/fcrepo_admin/version.rb +1 -1
- data/spec/controllers/associations_controller_spec.rb +34 -0
- data/spec/controllers/datastreams_controller_spec.rb +14 -12
- data/spec/controllers/objects_controller_spec.rb +6 -6
- data/spec/factories/fcrepo_admin_factories.rb +10 -6
- data/spec/features/associations/index.html.erb_spec.rb +28 -0
- data/spec/features/datastreams/edit.html.erb_spec.rb +1 -1
- data/spec/features/datastreams/index.html.erb_spec.rb +12 -0
- data/spec/features/datastreams/show.html.erb_spec.rb +1 -1
- data/spec/features/datastreams/upload.html.erb_spec.rb +1 -1
- data/spec/features/objects/audit_trail.html.erb_spec.rb +1 -1
- data/spec/features/objects/permissions.html.erb_spec.rb +19 -0
- data/spec/features/objects/show.html.erb_spec.rb +7 -30
- data/spec/internal/app/models/ability.rb +1 -1
- data/spec/internal/app/models/admin_policy.rb +3 -0
- data/spec/internal/app/models/collection.rb +14 -0
- data/spec/internal/app/models/item.rb +15 -0
- data/spec/internal/app/models/{content_model.rb → part.rb} +2 -1
- metadata +65 -73
- data/app/views/fcrepo_admin/datastreams/_datastream_nav.html.erb +0 -18
- data/app/views/fcrepo_admin/objects/_more_info.html.erb +0 -6
- data/app/views/fcrepo_admin/objects/_permissions.html.erb +0 -12
- data/app/views/fcrepo_admin/objects/_permissions_header.html.erb +0 -7
- data/lib/fcrepo_admin/datastream_ability.rb +0 -22
@@ -0,0 +1,23 @@
|
|
1
|
+
module FcrepoAdmin::Helpers
|
2
|
+
module AssociationsHelperBehavior
|
3
|
+
|
4
|
+
def link_to_target(association)
|
5
|
+
target = @object.send(association.name)
|
6
|
+
if association.collection?
|
7
|
+
text = "#{target.size} #{target.size == 1 ? 'object' : 'objects'}"
|
8
|
+
if target.size > 0
|
9
|
+
link_to text, fcrepo_admin.object_association_path(@object, association.name)
|
10
|
+
else
|
11
|
+
text
|
12
|
+
end
|
13
|
+
else # not a collection
|
14
|
+
if target
|
15
|
+
link_to target.pid, fcrepo_admin.object_path(target)
|
16
|
+
else
|
17
|
+
"[not assigned]"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -7,18 +7,15 @@ module FcrepoAdmin::Helpers
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def datastream_context_nav_items
|
10
|
-
|
11
|
-
items << [t("fcrepo_admin.datastream.nav.items.summary"), fcrepo_admin.object_datastream_path(@object, @datastream.dsid)]
|
12
|
-
if can? :edit, @object
|
13
|
-
items << [t("fcrepo_admin.datastream.nav.items.edit"), fcrepo_admin.edit_object_datastream_path(@object, @datastream.dsid)]
|
14
|
-
end
|
15
|
-
items << [t("fcrepo_admin.datastream.nav.items.upload"), fcrepo_admin.upload_object_datastream_path(@object, @datastream.dsid)]
|
16
|
-
items << [t("fcrepo_admin.datastream.nav.items.download"), fcrepo_admin.download_object_datastream_path(@object, @datastream.dsid)]
|
17
|
-
items
|
10
|
+
render :partial => 'fcrepo_admin/datastreams/context_nav_items', :locals => {:object => @object, :datastream => @datastream}
|
18
11
|
end
|
19
12
|
|
20
|
-
def
|
21
|
-
|
13
|
+
def can_edit_datastream?
|
14
|
+
can? :edit, @object
|
15
|
+
end
|
16
|
+
|
17
|
+
def can_upload_datastream?
|
18
|
+
can? :upload, @object
|
22
19
|
end
|
23
20
|
|
24
21
|
end
|
@@ -1,21 +1,16 @@
|
|
1
1
|
module FcrepoAdmin::Helpers
|
2
2
|
module FcrepoAdminHelperBehavior
|
3
3
|
|
4
|
-
def
|
5
|
-
|
6
|
-
items << [t("fcrepo_admin.object.nav.items.summary"), fcrepo_admin.object_path(@object)]
|
7
|
-
if object_is_auditable?
|
8
|
-
items << [t("fcrepo_admin.object.nav.items.audit_trail"), fcrepo_admin.audit_trail_object_path(@object)]
|
9
|
-
end
|
10
|
-
items
|
4
|
+
def object_has_permissions?
|
5
|
+
@object.is_a?(Hydra::ModelMixins::RightsMetadata)
|
11
6
|
end
|
12
7
|
|
13
8
|
def object_context_nav_header
|
14
|
-
|
9
|
+
t("fcrepo_admin.object.nav.header")
|
15
10
|
end
|
16
11
|
|
17
|
-
def
|
18
|
-
render :partial => 'fcrepo_admin/
|
12
|
+
def object_context_nav_items
|
13
|
+
render :partial => 'fcrepo_admin/objects/context_nav_items', :locals => {:object => @object}
|
19
14
|
end
|
20
15
|
|
21
16
|
end
|
@@ -9,42 +9,6 @@ module FcrepoAdmin::Helpers
|
|
9
9
|
def object_type
|
10
10
|
@object.class.to_s
|
11
11
|
end
|
12
|
-
|
13
|
-
def object_has_permissions?
|
14
|
-
@object.is_a?(Hydra::ModelMixins::RightsMetadata)
|
15
|
-
end
|
16
|
-
|
17
|
-
def object_model_belongs_to_apo?
|
18
|
-
!@apo_relationship_name.nil?
|
19
|
-
end
|
20
|
-
|
21
|
-
def object_admin_policy
|
22
|
-
@object_admin_policy
|
23
|
-
end
|
24
|
-
|
25
|
-
def object_has_admin_policy?
|
26
|
-
!object_admin_policy.nil?
|
27
|
-
end
|
28
|
-
|
29
|
-
def object_has_inherited_permissions?
|
30
|
-
object_has_admin_policy?
|
31
|
-
end
|
32
|
-
|
33
|
-
def object_inherited_permissions
|
34
|
-
object_admin_policy && object_admin_policy.default_permissions
|
35
|
-
end
|
36
|
-
|
37
|
-
def admin_policy_enforcement_enabled?
|
38
|
-
@apo_enforcement_enabled
|
39
|
-
end
|
40
|
-
|
41
|
-
def admin_policy_object?
|
42
|
-
# XXX Ideally we would use Hydra::PolicyAwareAccessControlsEnforcement#policy_class,
|
43
|
-
# but it's only available if it's been included in the application controller, i.e.,
|
44
|
-
# if APO access control enforcement is enabled. We want to know the name of the
|
45
|
-
# relationship regardless of whether policy enforcement is enabled.
|
46
|
-
@object.is_a?(Hydra.config[:permissions].fetch(:policy_class, Hydra::AdminPolicy))
|
47
|
-
end
|
48
12
|
|
49
13
|
end
|
50
14
|
end
|
data/lib/fcrepo_admin/version.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FcrepoAdmin::AssociationsController do
|
4
|
+
let(:object) { FactoryGirl.create(:item) }
|
5
|
+
after { object.delete }
|
6
|
+
context "#index" do
|
7
|
+
subject { get :index, :object_id => object, :use_route => 'fcrepo_admin' }
|
8
|
+
it { should render_template(:index) }
|
9
|
+
end
|
10
|
+
context "#show" do
|
11
|
+
context "association is a collection" do
|
12
|
+
let(:part) { FactoryGirl.create(:part) }
|
13
|
+
before { object.parts << part }
|
14
|
+
after do
|
15
|
+
part.delete
|
16
|
+
object.reload
|
17
|
+
end
|
18
|
+
subject { get :show, :object_id => object, :id => "parts", :use_route => 'fcrepo_admin' }
|
19
|
+
it { should render_template(:show) }
|
20
|
+
end
|
21
|
+
context "association is not a collection" do
|
22
|
+
subject { get :show, :object_id => object, :id => "collection", :use_route => 'fcrepo_admin' }
|
23
|
+
context "has target" do
|
24
|
+
let(:collection) { FactoryGirl.create(:collection) }
|
25
|
+
before { collection.members << object }
|
26
|
+
after { collection.delete }
|
27
|
+
its(:response_code) { should eq(302) }
|
28
|
+
end
|
29
|
+
context "target is nil" do
|
30
|
+
its(:response_code) { should eq(404) }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,24 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
shared_examples "a datastream profile view" do
|
4
|
-
|
5
|
-
end
|
3
|
+
# shared_examples "a datastream profile view" do
|
4
|
+
# it { should render_template(:show) }
|
5
|
+
# end
|
6
6
|
|
7
7
|
describe FcrepoAdmin::DatastreamsController do
|
8
8
|
before do
|
9
|
-
@object = FactoryGirl.create(:
|
9
|
+
@object = FactoryGirl.create(:item)
|
10
10
|
@dsid = "descMetadata"
|
11
11
|
end
|
12
12
|
after { @object.delete }
|
13
13
|
context "#show" do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
subject { get :show, :object_id => @object, :id => @dsid, :use_route => 'fcrepo_admin' }
|
15
|
+
it { should render_template(:show) }
|
16
|
+
end
|
17
|
+
context "#show" do
|
18
|
+
subject { get :content, :object_id => @object, :id => @dsid, :use_route => 'fcrepo_admin' }
|
19
|
+
it { should render_template(:content) }
|
20
|
+
end
|
21
|
+
context "#download" do
|
22
|
+
subject { get :download, :object_id => @object, :id => @dsid, :use_route => 'fcrepo_admin' }
|
23
|
+
it { should be_successful }
|
22
24
|
end
|
23
25
|
context "change methods" do
|
24
26
|
let(:user) { FactoryGirl.create(:user) }
|
@@ -1,22 +1,22 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FcrepoAdmin::ObjectsController do
|
4
|
+
let(:object) { FactoryGirl.create(:item) }
|
5
|
+
after { object.delete }
|
4
6
|
context "#show" do
|
5
7
|
subject { get :show, :id => object, :use_route => 'fcrepo_admin' }
|
6
|
-
let(:object) { FactoryGirl.create(:content_model) }
|
7
|
-
after { object.delete }
|
8
8
|
it { should render_template(:show) }
|
9
9
|
end
|
10
10
|
context "#audit_trail" do
|
11
|
-
let(:object) { FactoryGirl.create(:content_model) }
|
12
|
-
after { object.delete }
|
13
11
|
subject { get :audit_trail, :id => object, :use_route => 'fcrepo_admin' }
|
14
12
|
it { should render_template(:audit_trail) }
|
15
13
|
end
|
16
14
|
context "#audit_trail?download=true" do
|
17
15
|
subject { get :audit_trail, :id => object, :download => 'true', :use_route => 'fcrepo_admin' }
|
18
|
-
let(:object) { FactoryGirl.create(:content_model) }
|
19
|
-
after { object.delete }
|
20
16
|
its(:response_code) { should eq(200) }
|
21
17
|
end
|
18
|
+
context "#permissions" do
|
19
|
+
subject { get :permissions, :id => object, :use_route => 'fcrepo_admin' }
|
20
|
+
it { should render_template(:permissions) }
|
21
|
+
end
|
22
22
|
end
|
@@ -6,15 +6,19 @@ FactoryGirl.define do
|
|
6
6
|
default_permissions [{type: 'group', name: 'public', access: 'read'}]
|
7
7
|
end
|
8
8
|
|
9
|
-
factory :
|
10
|
-
title "Test
|
9
|
+
factory :collection do
|
10
|
+
title "Test Collection"
|
11
11
|
permissions [{type: 'group', name: 'public', access: 'read'}]
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
factory :item do
|
15
|
+
sequence(:title) { |n| "Test Item [#{n}]" }
|
16
|
+
permissions [{type: 'group', name: 'public', access: 'read'}]
|
17
|
+
end
|
16
18
|
|
17
|
-
|
19
|
+
factory :part do
|
20
|
+
sequence(:title) { |n| "Test Part [#{n}]" }
|
21
|
+
permissions [{type: 'group', name: 'public', access: 'read'}]
|
18
22
|
end
|
19
23
|
|
20
24
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "associations/index.html.erb" do
|
4
|
+
let(:object) { FactoryGirl.create(:item) }
|
5
|
+
after { object.delete }
|
6
|
+
context "association is a collection" do
|
7
|
+
let(:part) { FactoryGirl.create(:part) }
|
8
|
+
before { object.parts << part }
|
9
|
+
after do
|
10
|
+
part.delete
|
11
|
+
object.reload
|
12
|
+
end
|
13
|
+
it "should link to the show view of the association" do
|
14
|
+
visit fcrepo_admin.object_associations_path(object)
|
15
|
+
page.should have_link("1 object", :href => fcrepo_admin.object_association_path(object, "parts"))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
context "association is not a collection" do
|
19
|
+
let(:collection) { FactoryGirl.create(:collection) }
|
20
|
+
before { collection.members << object }
|
21
|
+
after { collection.delete }
|
22
|
+
it "should link to the show view of the target object" do
|
23
|
+
pending "Bug in Capybara?"
|
24
|
+
visit fcrepo_admin.object_associations_path(object)
|
25
|
+
page.should have_link(collection.pid, :href => fcrepo_admin.object_path(collection))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -5,7 +5,7 @@ RSpec.configure do |c|
|
|
5
5
|
end
|
6
6
|
|
7
7
|
describe "datastreams/edit.html.erb" do
|
8
|
-
let(:object) { FactoryGirl.create(:
|
8
|
+
let(:object) { FactoryGirl.create(:item) }
|
9
9
|
let(:user) { FactoryGirl.create(:user) }
|
10
10
|
before {
|
11
11
|
object.permissions = [{type: 'user', name: user.email, access: 'edit'}]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "datastreams/index.html.erb" do
|
4
|
+
before { visit fcrepo_admin.object_datastreams_path(object) }
|
5
|
+
after { object.delete }
|
6
|
+
let(:object) { FactoryGirl.create(:item) }
|
7
|
+
it "should link to all persisted datastreams" do
|
8
|
+
object.datastreams.reject { |dsid, ds| ds.profile.empty? }.each_key do |dsid|
|
9
|
+
page.should have_link(dsid, :href => fcrepo_admin.object_datastream_path(object, dsid))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -5,7 +5,7 @@ RSpec.configure do |c|
|
|
5
5
|
end
|
6
6
|
|
7
7
|
describe "datastreams/show.html.erb" do
|
8
|
-
let!(:object) { FactoryGirl.create(:
|
8
|
+
let!(:object) { FactoryGirl.create(:item) }
|
9
9
|
let(:dsid) { "descMetadata" }
|
10
10
|
before { visit fcrepo_admin.object_datastream_path(object, dsid) }
|
11
11
|
after { object.delete }
|
@@ -5,7 +5,7 @@ RSpec.configure do |c|
|
|
5
5
|
end
|
6
6
|
|
7
7
|
describe "datastreams/upload.html.erb" do
|
8
|
-
let(:object) { FactoryGirl.create(:
|
8
|
+
let(:object) { FactoryGirl.create(:item) }
|
9
9
|
let(:user) { FactoryGirl.create(:user) }
|
10
10
|
before {
|
11
11
|
object.permissions = [{type: 'user', name: user.email, access: 'edit'}]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "audit_trail.html.erb" do
|
4
|
-
let(:object) { FactoryGirl.create(:
|
4
|
+
let(:object) { FactoryGirl.create(:item) }
|
5
5
|
after { object.delete }
|
6
6
|
it "should display the audit trail" do
|
7
7
|
visit fcrepo_admin.audit_trail_object_path(object)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "objects/permissions.html.erb" do
|
4
|
+
after { object.delete }
|
5
|
+
context "object governed by an admin policy" do
|
6
|
+
let(:object) { FactoryGirl.create(:item) }
|
7
|
+
let(:apo) { FactoryGirl.create(:admin_policy) }
|
8
|
+
before do
|
9
|
+
object.admin_policy = apo
|
10
|
+
object.save
|
11
|
+
end
|
12
|
+
after { apo.delete }
|
13
|
+
it "should link to the APO" do
|
14
|
+
visit fcrepo_admin.permissions_object_path(object)
|
15
|
+
page.should have_link(object.admin_policy.pid, :href => fcrepo_admin.object_path(object.admin_policy))
|
16
|
+
end
|
17
|
+
it "should display the inherited permissions"
|
18
|
+
end
|
19
|
+
end
|
@@ -1,36 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "objects/show.html.erb" do
|
4
|
+
before { visit fcrepo_admin.object_path(object) }
|
4
5
|
after { object.delete }
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.modified_date"))
|
12
|
-
page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.owner_id"))
|
13
|
-
page.should have_content(I18n.t("fcrepo_admin.object.properties.keys.label"))
|
14
|
-
end
|
15
|
-
it "should link to all datastreams" do
|
16
|
-
visit fcrepo_admin.object_path(object)
|
17
|
-
object.datastreams.reject { |dsid, ds| ds.profile.empty? }.each_key do |dsid|
|
18
|
-
page.should have_link(dsid, :href => fcrepo_admin.object_datastream_path(object, dsid))
|
19
|
-
end
|
20
|
-
end
|
21
|
-
it "should link to its audit trail" do
|
22
|
-
visit fcrepo_admin.object_path(object)
|
23
|
-
page.should have_link(I18n.t("fcrepo_admin.object.audit_trail.title"), :href => fcrepo_admin.audit_trail_object_path(object))
|
24
|
-
end
|
25
|
-
it "should display the object's permissions"
|
26
|
-
end
|
27
|
-
context "object governed by an admin policy" do
|
28
|
-
let(:object) { FactoryGirl.create(:content_model_has_apo) }
|
29
|
-
after { object.admin_policy.delete }
|
30
|
-
it "should link to the APO" do
|
31
|
-
visit fcrepo_admin.object_path(object)
|
32
|
-
page.should have_link(object.admin_policy.pid, :href => fcrepo_admin.object_path(object.admin_policy))
|
33
|
-
end
|
34
|
-
it "should display the inherited permissions"
|
6
|
+
let(:object) { FactoryGirl.create(:item) }
|
7
|
+
it "should link to other views" do
|
8
|
+
page.should have_link(I18n.t("fcrepo_admin.object.nav.items.audit_trail"), :href => fcrepo_admin.audit_trail_object_path(object))
|
9
|
+
page.should have_link(I18n.t("fcrepo_admin.object.nav.items.permissions"), :href => fcrepo_admin.permissions_object_path(object))
|
10
|
+
page.should have_link(I18n.t("fcrepo_admin.object.nav.items.associations"), :href => fcrepo_admin.object_associations_path(object))
|
11
|
+
page.should have_link(I18n.t("fcrepo_admin.object.nav.items.datastreams"), :href => fcrepo_admin.object_datastreams_path(object))
|
35
12
|
end
|
36
13
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Collection < ActiveFedora::Base
|
2
|
+
|
3
|
+
has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
4
|
+
has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
5
|
+
|
6
|
+
delegate :title, :to => "descMetadata", :unique => true
|
7
|
+
|
8
|
+
belongs_to :admin_policy, :property => :is_governed_by
|
9
|
+
has_many :members, :property => :is_member_of_collection, :inbound => true, :class_name => 'Item'
|
10
|
+
|
11
|
+
include Hydra::ModelMixins::RightsMetadata
|
12
|
+
include ActiveFedora::Auditable
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Item < ActiveFedora::Base
|
2
|
+
|
3
|
+
has_metadata :name => "descMetadata", :type => ActiveFedora::QualifiedDublinCoreDatastream
|
4
|
+
has_metadata :name => "rightsMetadata", :type => Hydra::Datastream::RightsMetadata
|
5
|
+
|
6
|
+
delegate :title, :to => "descMetadata", :unique => true
|
7
|
+
|
8
|
+
belongs_to :admin_policy, :property => :is_governed_by
|
9
|
+
belongs_to :collection, :property => :is_member_of_collection, :class_name => 'Collection'
|
10
|
+
has_many :parts, :property => :is_part_of, :inbound => true, :class_name => 'Part'
|
11
|
+
|
12
|
+
include Hydra::ModelMixins::RightsMetadata
|
13
|
+
include ActiveFedora::Auditable
|
14
|
+
|
15
|
+
end
|